Introduction Liam OConnor CSE, UNSW (and data61) Term3 2019 1 - - PowerPoint PPT Presentation

introduction liam o connor
SMART_READER_LITE
LIVE PREVIEW

Introduction Liam OConnor CSE, UNSW (and data61) Term3 2019 1 - - PowerPoint PPT Presentation

Admin Course Overview PL Implementation Introduction Liam OConnor CSE, UNSW (and data61) Term3 2019 1 Admin Course Overview PL Implementation Who are we? I am Liam OConnor, a casual academic at UNSW. I do research work on formal


slide-1
SLIDE 1

Admin Course Overview PL Implementation

Introduction Liam O’Connor

CSE, UNSW (and data61) Term3 2019

1

slide-2
SLIDE 2

Admin Course Overview PL Implementation

Who are we?

I am Liam O’Connor, a casual academic at UNSW. I do research work on formal methods and programming languages with various companies and the people at data61.

  • Dr. Christine Rizkallah, who will be delivering four lectures

throughout the course, is a lecturer at UNSW who works on, among other things, trustworthy systems and formal methods projects with data61. Vivian Dang and Ed Pierzchalski are the tutors for this year, and both work in the Trustworthy Systems group.

2

slide-3
SLIDE 3

Admin Course Overview PL Implementation

Who are we?

I am Liam O’Connor, a casual academic at UNSW. I do research work on formal methods and programming languages with various companies and the people at data61.

  • Dr. Christine Rizkallah, who will be delivering four lectures

throughout the course, is a lecturer at UNSW who works on, among other things, trustworthy systems and formal methods projects with data61. Vivian Dang and Ed Pierzchalski are the tutors for this year, and both work in the Trustworthy Systems group.

3

slide-4
SLIDE 4

Admin Course Overview PL Implementation

Who are we?

I am Liam O’Connor, a casual academic at UNSW. I do research work on formal methods and programming languages with various companies and the people at data61.

  • Dr. Christine Rizkallah, who will be delivering four lectures

throughout the course, is a lecturer at UNSW who works on, among other things, trustworthy systems and formal methods projects with data61. Vivian Dang and Ed Pierzchalski are the tutors for this year, and both work in the Trustworthy Systems group.

4

slide-5
SLIDE 5

Admin Course Overview PL Implementation

Contacting Us

http://www.cse.unsw.edu.au/~cs3161

Forum There is a Piazza forum available on the website. Questions about course content should typically be made there. You can ask us private questions to avoid spoiling solutions to other students.

I highly recommend disabling the Piazza Careers rubbish.

Administrative questions should be sent to liamoc@cse.unsw.edu.au.

5

slide-6
SLIDE 6

Admin Course Overview PL Implementation

What do we expect?

Maths This course uses a significant amount of discrete mathematics. You will need to be reasonably comfortable with logic, set theory and induction. MATH1081 is neither necessary nor sufficient for aptitude in these skills. Programming We expect you to be familiar with C and at least one other programming language. Course assignments are in Haskell. Only very simple Haskell is required, but some self-study may be needed.

6

slide-7
SLIDE 7

Admin Course Overview PL Implementation

What do we expect?

Maths This course uses a significant amount of discrete mathematics. You will need to be reasonably comfortable with logic, set theory and induction. MATH1081 is neither necessary nor sufficient for aptitude in these skills. Programming We expect you to be familiar with C and at least one other programming language. Course assignments are in Haskell. Only very simple Haskell is required, but some self-study may be needed.

7

slide-8
SLIDE 8

Admin Course Overview PL Implementation

Assessment

COMP3161 COMP9164 Participation 8% — Assignment 1 15% 20% Assignment 2 17% 20% Midsession Exam 15% 15% Final Exam 45% 45%

8

slide-9
SLIDE 9

Admin Course Overview PL Implementation

Tutorials

Start this week! (after the lecture) Participation is noted for 3161 students. You may change tutorials, just seek approval first. Please attempt some of the questions beforehand. Generally they cover the content up to the Monday lecture of that week. After the public holiday in week 4, the monday tutorials will lag behind by one week.

9

slide-10
SLIDE 10

Admin Course Overview PL Implementation

Midterm Exam

Likely on Friday of Week 4. Lasts for 50 minutes. Runs in lecture time slot. All students must attend! Still organising venues.

10

slide-11
SLIDE 11

Admin Course Overview PL Implementation

Assignments

Given a formal specification, implement in Haskell. Released around Week 5 and Week 8 Approximately 2 weeks to complete each assignment. 10% penalty for one day late, 25% for two, 50% for three and 100% for four+.

11

slide-12
SLIDE 12

Admin Course Overview PL Implementation

Lectures

There is one stream of lectures, which are recorded. If you don’t attend in person, you must watch recordings as they come out. Recordings are available through echo 360. I will to my best to make these usable. All board-work will be done digitally and made available to you. Separate lecture notes are also published.

12

slide-13
SLIDE 13

Admin Course Overview PL Implementation

Books

There is no textbook for this course. Regular written lecture notes are made available throughout the semester, along with challenge exercises. Much of the course material is covered in these two excellent books, however their explanations may differ and the usual disclaimers apply — this course does not follow these books exactly: Types and Programming Languages by Benjamin Pierce, MIT

  • Press. https://www.cis.upenn.edu/~bcpierce/tapl/

Practical Foundations for Programming Languages by Bob Harper, Cambridge University Press. http://www.cs.cmu.edu/~rwh/pfpl.html

13

slide-14
SLIDE 14

Admin Course Overview PL Implementation

Course Content

This is a programming language appreciation course. These means we focus on the three R’s of computer science, giving you the skills to: Read and understand new programming languages; Write your own programming languages; and Reason about programming languages in a rigorous way.

14

slide-15
SLIDE 15

Admin Course Overview PL Implementation

Why Read?

The choice of programming language affects nearly every aspect of a system: Design Development Costs and Productivity Safety and Security Performance The Obvious Learning to read and understand new programming languages is a vital skill in any computing discipline.

15

slide-16
SLIDE 16

Admin Course Overview PL Implementation

Why Write?

You may not implement a general-purpose programming language like C or Haskell in your career. However.. Every company has its own hand-rolled domain-specific language for accomplishing some task, often embedded in another language in a very ad-hoc and ugly way. Example XSLT, Perl scripts for processing text files, CSE’s give system, etc. Learn how to make a PL properly and save yourself and your colleagues from headaches.

16

slide-17
SLIDE 17

Admin Course Overview PL Implementation

Why Write?

You may not implement a general-purpose programming language like C or Haskell in your career. However.. Every company has its own hand-rolled domain-specific language for accomplishing some task, often embedded in another language in a very ad-hoc and ugly way. Example XSLT, Perl scripts for processing text files, CSE’s give system, etc. Learn how to make a PL properly and save yourself and your colleagues from headaches.

17

slide-18
SLIDE 18

Admin Course Overview PL Implementation

Why Write?

You may not implement a general-purpose programming language like C or Haskell in your career. However.. Every company has its own hand-rolled domain-specific language for accomplishing some task, often embedded in another language in a very ad-hoc and ugly way. Example XSLT, Perl scripts for processing text files, CSE’s give system, etc. Learn how to make a PL properly and save yourself and your colleagues from headaches.

18

slide-19
SLIDE 19

Admin Course Overview PL Implementation

Why Reason?

Programming languages are formal languages. Formal specification and proof allows us to: Design languages better, avoiding undefined behaviour and

  • ther goblins.

Make languages easier to process and parse. COMP3131 Give a mathematical meaning to programs, allowing for formal verification of programs. COMP4161, COMP2111 Develop algorithms to find bugs automatically. COMP3153 Rigorously analyse optimisations and other program transformations. These tools are also very important for the pursuit of research in programming languages.

19

slide-20
SLIDE 20

Admin Course Overview PL Implementation

Why Reason?

Programming languages are formal languages. Formal specification and proof allows us to: Design languages better, avoiding undefined behaviour and

  • ther goblins.

Make languages easier to process and parse. COMP3131 Give a mathematical meaning to programs, allowing for formal verification of programs. COMP4161, COMP2111 Develop algorithms to find bugs automatically. COMP3153 Rigorously analyse optimisations and other program transformations. These tools are also very important for the pursuit of research in programming languages.

20

slide-21
SLIDE 21

Admin Course Overview PL Implementation

Bridging the Gap

Programmer Source Language Computers can’t typically execute source code directly. Computer Machine Code

21

slide-22
SLIDE 22

Admin Course Overview PL Implementation

Bridging the Gap

Programmer Source Language Compiler A compiler translates from source code to a target language, typically machine code. Example: C, C++, Haskell, Rust Computer Machine Code

22

slide-23
SLIDE 23

Admin Course Overview PL Implementation

Bridging the Gap

Programmer Source Language Interpreter An interpreter executes a program as it reads the source code. Examples: Perl, Python, JavaScript

JIT compilers complicate this picture some- what.

Computer Machine Code

23

slide-24
SLIDE 24

Admin Course Overview PL Implementation

Bridging the Gap

Programmer Source Language Interpreter Compiler Some languages make use of a hy- brid approach. First translating the source language to an intermediate language (abstract or virtual ma- chine), then interpreting that. Examples: Java, C# Computer Machine Code

24

slide-25
SLIDE 25

Admin Course Overview PL Implementation

Stages of a Compiler

The first stage of a compiler is called a lexer, which, given an input string of source code, produces a stream of tokens or lexemes, discarding irrelevant information like whitespace or comments. Example (C) int foo () { int i; i = 11; if (i > 5) { i = i - 1; } return i; }

lexer

= ⇒

Ident "int" Ident "foo" LParen RParen LBrace Ident "int" Ident "i" Semi Ident "i" · · ·

25

slide-26
SLIDE 26

Admin Course Overview PL Implementation

Stages of a Compiler

The first stage of a compiler is called a lexer, which, given an input string of source code, produces a stream of tokens or lexemes, discarding irrelevant information like whitespace or comments. Example (C) int foo () { int i; i = 11; if (i > 5) { i = i - 1; } return i; }

lexer

= ⇒

Ident "int" Ident "foo" LParen RParen LBrace Ident "int" Ident "i" Semi Ident "i" · · ·

26

slide-27
SLIDE 27

Admin Course Overview PL Implementation

Stages of a Compiler

A parser converts the stream of tokens from the lexer into a parse tree or abstract syntax tree: Example (Arithmetic) Lit 3 Times LParen Lit 2 Plus Lit 8 RParen Times Num 3 Plus Num 2 Num 8

27

slide-28
SLIDE 28

Admin Course Overview PL Implementation

Stages of a Compiler

A parser converts the stream of tokens from the lexer into a parse tree or abstract syntax tree: Example (Arithmetic) Lit 3 Times LParen Lit 2 Plus Lit 8 RParen Times Num 3 Plus Num 2 Num 8

28

slide-29
SLIDE 29

Admin Course Overview PL Implementation

Grammars

The structure of lexemes expected to produce certain parse trees is called a grammar. Example (Informal grammar for C) C function definitions consist of: an identifier (return type), followed by an identifier (function name), followed by a possibly empty sequence of arguments, enclosed in parentheses, then a statement (function body) Conclusions This kind of definition is way too verbose and too imprecise to specify an implementation.

29

slide-30
SLIDE 30

Admin Course Overview PL Implementation

Grammars

The structure of lexemes expected to produce certain parse trees is called a grammar. Example (Informal grammar for C) C function definitions consist of: an identifier (return type), followed by an identifier (function name), followed by a possibly empty sequence of arguments, enclosed in parentheses, then a statement (function body) Conclusions This kind of definition is way too verbose and too imprecise to specify an implementation.

30

slide-31
SLIDE 31

Admin Course Overview PL Implementation

Grammars

The structure of lexemes expected to produce certain parse trees is called a grammar. Example (Informal grammar for C) C function definitions consist of: an identifier (return type), followed by an identifier (function name), followed by a possibly empty sequence of arguments, enclosed in parentheses, then a statement (function body) Conclusions This kind of definition is way too verbose and too imprecise to specify an implementation.

31

slide-32
SLIDE 32

Admin Course Overview PL Implementation

Backus-Naur Form

Specify grammatical productions by using a bare-bones recursive

  • notation. Non-terminals are in italics whereas terminals are in

this typeface. Example (C subset) funDef ::= Ident1 Ident2 ( args ) stmt stmt ::= expr ; | if ( expr ) stmt else stmt | return expr ; | { locDec stmts } | while ( expr ) stmt stmts ::= ε | stmt stmts expr ::= Number | Ident | expr1 + expr2 | Ident = expr | Ident ( expr ) locDec ::= Ident1 Ident2 ; args ::= ε | · · ·

32

slide-33
SLIDE 33

Admin Course Overview PL Implementation

Stages of a Compiler

Program String Lexer Sequence of Tokens Parser Parse Tree Semantic Analyser Annotated Parse Tree Optimiser Intermediate Representation Code Generator Machine Code

33

slide-34
SLIDE 34

Admin Course Overview PL Implementation

Stages of a Compiler

Semantic Analysis Checks variable scoping Static semantics checks: most notably type checking. Adds extra information to the tree. Program String Lexer Sequence of Tokens Parser Parse Tree Semantic Analyser Annotated Parse Tree Optimiser Intermediate Representation Code Generator Machine Code

34

slide-35
SLIDE 35

Admin Course Overview PL Implementation

Stages of a Compiler

Optimisation Loop unrolling, loop fusion Inlining, specialisation Sometimes transforms the tree dramatically. Program String Lexer Sequence of Tokens Parser Parse Tree Semantic Analyser Annotated Parse Tree Optimiser Intermediate Representation Code Generator Machine Code

35

slide-36
SLIDE 36

Admin Course Overview PL Implementation

Stages of a Compiler

Code Generation Register allocation and explicit control flow. Links runtime system (e.g. GC) Selects appropriate machine instructions Program String Lexer Sequence of Tokens Parser Parse Tree Semantic Analyser Annotated Parse Tree Optimiser Intermediate Representation Code Generator Machine Code

36