cs252 – advanced programming language principlesaustin/cs252-fall13/cs252-introduction.pdfcs252...
TRANSCRIPT
![Page 1: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/1.jpg)
CS252 – Advanced Programming Language Principles
Prof. Tom Austin San José State University
Fall 2013
![Page 2: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/2.jpg)
What are some programming languages?
![Page 3: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/3.jpg)
Why are there so many?
• Different domains – Mobile devices (Objective C) – Web programming (Ruby, Python, PHP) – Databases (SQL)
• Different design choices. Some concerns: – Flexibility (Scripting languages) – Type safety (Java, Scala, Haskell) – Performance (C, C++, Go) – Build time (Go, Rust, D) – Concurrency (Erlang, Go, Rust, D)
![Page 4: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/4.jpg)
Which language is better?
![Page 5: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/5.jpg)
Good language features
• Simplicity • Readability and writability • Learn-ability (familiarity helps here) • Safety • Machine independence • Efficiency (of execution, but also of
compilation) • Backwards compatibility
![Page 6: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/6.jpg)
These goals almost always conflict
• Type systems prevent bad programs from running, but also restrict what the programmer can do.
• Machine-independence and efficient low-level operations are difficult to pair.
• Good language designs choosing careful compromises for the right set of features.
![Page 7: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/7.jpg)
Why do we study programming languages?
For undergrads, we want to warp their minds and make them better programmers.
![Page 8: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/8.jpg)
Mind warping is good for grad students as well... but we also want you to:
• be familiar with advanced language features
• know how to evaluate different features to choose the right language for the job
• understand the necessary formalisms, so that you can take part in the discussion.
![Page 9: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/9.jpg)
Blub programmers
• Paul Graham introduced the concept of "Blub programmers" in a famous blog post (http://www.paulgraham.com/avg.html).
• "Blub" is a hypothetical language midway in the "power continuum". (He defines "power" roughly as being able to do more with fewer lines of code.)
![Page 10: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/10.jpg)
The Blub Paradox "As long as our hypothetical Blub programmer is looking down the power continuum, he knows he's looking down… [Blub programmers are] satisfied with whatever language they happen to use, because it dictates the way they think about programs." --Paul Graham
Why do I need (monads, closures, type inference, metaobject protocols)? My language doesn't have it, and it works just fine!!!
![Page 11: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/11.jpg)
Languages we will cover (subject to change)
• Haskell (focus will be here) • Ruby (for metaprogramming) • Go (Concurrency, and trying to kill C++) • Scala (Domain Specific Languages)
![Page 12: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/12.jpg)
Theoretical foundations topics
• Formal semantics (especially operational semantics)
• Type systems and proofs • Concurrency approaches • Metaprogramming • Security features
![Page 13: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/13.jpg)
In this course, you will learn the practical and the theoretical
![Page 14: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/14.jpg)
What are the issues of interest to industry in the development of
new language features?
![Page 15: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/15.jpg)
Multi-core explosion • Single core CPU performance increases have slowed. • Performance gains now come from multiple cores. • How can we take advantage of these extra cores? – Automatic parallelization of code – Security features (secure multi-execution)
![Page 16: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/16.jpg)
Mobile Devices • Fierce competition has arisen around mobile
devices (Android, iPhone). • "Mobile-only users". • What unique challenges
are there in this space? • How can language features
help address these issues?
![Page 17: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/17.jpg)
Rise of the Web and Scripting Languages
• Perl, Python, Ruby, PHP, JavaScript… • Flexible: dynamically typed: the type system
does not stop valid program executions, even if the complete program has issues.
• Easy to get started. • (Generally) less typing required
![Page 18: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/18.jpg)
Hello world in Java public class HelloWorld {
public static void main(String[] args) { System.out.println("Hello World!");
} }
Hello world in Ruby puts "Hello World!"
![Page 19: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/19.jpg)
What are the main areas of interest in Programming Languages (PL)
research?
• Types • Types • More types!
(OK, maybe a little more than that…)
![Page 20: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/20.jpg)
Why are they different?
• PL research helps create concepts used in the languages of the future – Garbage collection – Advanced type systems – Advanced concurrency constructs
• But it also tends to miss some areas of interest to industry programmers.
![Page 21: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/21.jpg)
Idealized relationship between academia and industry
Academics come up with brilliant ideas
Engineers use these ideas to build great things
Academia shares its ideas with people in industry
![Page 22: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/22.jpg)
Actual relationship between academia and industry
Academics come up with ideas (1)
Academics share ideas with industry (2)
Engineers use these ideas, incorporating their own ideas and experiences (3)
![Page 23: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/23.jpg)
Actual relationship between academia and industry
Academics come up with ideas (1)
Academics share ideas with industry (2)
Sometimes they don't work out well (4)
Academics learn from the experience of engineers (5)
The cycle continues (6)
![Page 24: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/24.jpg)
In order to participate in the discussion, you need to be
comfortable with formal semantics.
![Page 25: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/25.jpg)
Who needs formal semantics? No one, except:
• Those who write programs that manipulate other programs: – compilers and interpreters – program transformation tools (e.g. JavaScript
rewriting) – instrumentation tools – program analyzers – software engineering tools
![Page 26: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/26.jpg)
Who needs formal semantics? No one, except:
• Those who want to describe (unambiguously) a language feature or program transformation – ECMAScript committee – Semantics help to frame discussion and highlight some
issues early in the process – We can formally prove that a language supports a
given property • Those who write critical software – http://en.wikipedia.org/wiki/List_of_software_bugs
![Page 27: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/27.jpg)
Three Approaches to Language Semantics
• Operational semantics – how to evaluate or execute a program – useful for implementing a compiler or interpreter
• Axiomatic semantics – given a program and a set of starting states and inputs, what is
the set of final states after execution – does it include “assertion failed”? – useful for proving program correctness
• Denotational semantics – characterize meaning of each procedure as a mathematical
function – mathematically heavyweight – we will not cover it in this course.
![Page 28: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/28.jpg)
Once we have the tools for a discussion, we can determine in an objective sense whether a language
or feature is "good".
![Page 29: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/29.jpg)
Administrative Details
• Green sheet available at http://www.sjsu.edu/people/thomas.austin/courses/cs252-fall2013/s1/Greensheet.html
• Homework assignments will be submitted through Canvas (https://sjsu.instructure.com/)
• Academic integrity policy: http://info.sjsu.edu/static/catalog/integrity.html
![Page 30: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/30.jpg)
Schedule
• The class schedule is available through Canvas • Late homeworks will not be accepted • Check the schedule before every class • Check the schedule before every class • And finally, CHECK THE SCHEDULE
BEFORE EVERY CLASS.
![Page 31: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/31.jpg)
Prerequisites
• You are expected to have taken an undergraduate programming languages course
• Functional programming should be familiar • You should be comfortable with mathematical
notation • If you are not sure, please see me
![Page 32: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/32.jpg)
Resources
A Tour of Go, http://tour.golang.org
http://learnyouahaskell.com/
All available online!!!
![Page 33: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/33.jpg)
Grading
• 50% -- Homework assignments. • 40% -- Final project. • 10% -- Participation.
The project is open-ended: do something you find interesting. We will discuss project ideas more in a later class.
![Page 34: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/34.jpg)
Office hours
• MacQuarrie Hall room 216. • Wednesdays 10am – 11am. • Thursdays 10am – 11am. • If you need to meet with me another time,
send me an email.
![Page 35: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/35.jpg)
Haskell
![Page 36: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/36.jpg)
Haskell is purely functional
• We define "what stuff is" rather than how to do it. • No side effects, allowing for
referential transparency. This means that you can replace an expression with its value and you won't change anything.
![Page 37: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/37.jpg)
Wait, no side effects?! How is that possible?
• Some Haskell functions do have side effects, such as file I/O.
• However, Haskell isolates functions that do have side effects, making it easy to write functions without side effects.
• Java is "object-oriented", but you can still write programs that do not follow OO style; similarly you can write Haskell functions with side-effects.
![Page 38: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/38.jpg)
Type inference
• In most typed languages, you must explicitly declare the type of your data and functions
• In scripting languages, you do not need to specify your types, but you will get runtime errors if your types don't work – "Duck typing" – Flexible, but not safe
• With Haskell, you do not need to declare types, but the compiler checks them anyway (and you can declare them if you wish)
![Page 39: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/39.jpg)
Lazy evaluation
• An almost unique feature of Haskell is that it is lazy – it does not calculate results until they are needed.
• This feature allows Haskell to represent infinite data structures
![Page 40: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/40.jpg)
Lazy Example
• Start up Haskell interactive mode and type: *Main> let oddNumbers = [1,3..]
• Note that this definition works just fine. However, if you now type in oddNumbers, it will print all odd numbers greater than 1.
• You can use this function to print out however many odd numbers you want: *Main> take 5 oddNumbers [1,3,5,7,9]
![Page 41: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/41.jpg)
First homework due August 30th
• This assignment is designed to get you up and running with Haskell. • Available in Canvas. • Get started now!
![Page 42: CS252 – Advanced Programming Language Principlesaustin/cs252-fall13/CS252-Introduction.pdfCS252 – Advanced Programming Language Principles Prof. Tom Austin San José State University](https://reader030.vdocuments.mx/reader030/viewer/2022040408/5ebd4da6a92fbd252c6ce4c3/html5/thumbnails/42.jpg)
Getting started with Haskell
• Install Haskell from http://www.haskell.org/platform/contents.html
• Work on examples from Chapter 2 of "Learn You a Haskell" (LYH from now on). http://learnyouahaskell.com/starting-out
• Ask me if you have questions