P505: Programming Languages Lecture 1: Intro; Caml; Functional

P505: Programming Languages Lecture 1: Intro; Caml; Functional

Welcome! 10 weeks for key programming-language concepts – Focus on the universal foundations CSEP505: Programming Languages Today: Lecture 1: Intro; OCaml; Functional Programming 1. Staff introduction; course mechanics 2. Why and how to study programming languages 3. OCaml and functional-programming tutorial Dan Grossman Autumn 2016 Lecture 1 CSE P505 Autumn 2016 Dan Grossman 2 Hello, my name is… Course facts (overview) • Dan Grossman, djg@cs • http://courses.cs.washington.edu/courses/csep505/16au/ • Faculty member researching programming languages • TA: John Toman, Ph.D. student advised by me – Sometimes theory (math) • Pre-course survey – Sometimes implementation (graphs) • Homework 0 and Homework 1 – Sometimes design (important but hand-waving) • No textbook – Particularly, safe low-level languages, easier-to-use • 5 homeworks concurrency, better type-checkers, other • OCaml/F#/Haskell • Approximately 0 years professional experience... • Take-home final exam much later – …but I’ve done a lot of compiler hacking • Father of two boys < 3 years old Then onto actual course motivation and content •… Lecture 1 CSE P505 Autumn 2016 Dan Grossman 3 Lecture 1 CSE P505 Autumn 2016 Dan Grossman 4 Course web page TA • Read syllabus John – includes some advice • Knows his stuff - • Read advice for approaching homework – Homework code is not industry code • In general, email both of us with questions to reduce latency – Functional programming is not imperative/OOP • John will do the grading • Course web page will have slides, code, homework, programming resources, etc. •…? Lecture 1 CSE P505 Autumn 2016 Dan Grossman 5 Lecture 1 CSE P505 Autumn 2016 Dan Grossman 6 Survey Homework 0 • An optional, brief and extremely useful survey • Install software, edit file, compile, run • On the web page (Google form) • Not worth any points, but highly recommended before next week • Things like what you do and what your concerns are • (Also helps me learn your names) Lecture 1 CSE P505 Autumn 2016 Dan Grossman 7 Lecture 1 CSE P505 Autumn 2016 Dan Grossman 8 Homework 1 Wide background • A real homework • Homework 1 will likely demonstrate a wide range of background – So some material will be simultaneously too remedial and • Due in 2 weeks too advanced – Will generally do every-other-week because Life. – Still let me know (politely -) – Encourage you to start for real before next week. – “Challenge problems” help some • Affect your grade, but only a little • Speaking of background, no need for PMP/5th-year mutual fear Lecture 1 CSE P505 Autumn 2016 Dan Grossman 9 Lecture 1 CSE P505 Autumn 2016 Dan Grossman 10 Segue to a sermon No textbook • I’m here to teach the essential beauty of the foundations of • There just isn’t a book that covers this stuff well programming languages – And the classic research papers are too old to be readable • Pierce book: Very good, with about 25% overlap with the course • If you’re here because – The other courses looked even worse • Many undergraduate-level books, none of which I’ve used or – You can get out of the house on Thursday nights liked – “A Master’s degree” will get you a raise • O’Reilly book on OCaml is free (in English) then you risk taking “longcuts” and being miserable • Will post relevant recent papers as interesting optional reading • Advice: If you must be <100% engaged, try to wait as long as (rarely good for learning material) possible – the material builds more than it seems – Catching up is hard • I do have videos from 2009, but I plan to change ~30% and I’ve learned a lot since then Lecture 1 CSE P505 Autumn 2016 Dan Grossman 11 Lecture 1 CSE P505 Autumn 2016 Dan Grossman 12 Homework Final exam • 5 assignments • Please do not panic about taking an exam – Mostly OCaml/F# programming (some written answers) • Probably one in Haskell – Expect to learn as you do them • Worth 2/7 of the course grade (2x 1 homework) – “Not a lot of lines” – Again, challenge problems are optional • Why an exam? – Helps you learn material as the course goes on • Do your own work, but feel free to discuss – Helps you learn material as you study for it – Do not look at other’s solutions – But learning from each other is great • I’ll post a sample [much] later • OCaml vs. F# – See also lots of detail on web page Lecture 1 CSE P505 Autumn 2016 Dan Grossman 13 Lecture 1 CSE P505 Autumn 2016 Dan Grossman 14 OCaml Welcome! • OCaml is an awesome, high-level language 10 weeks for key programming-language concepts – Focus on the universal foundations • We’ll use a small core subset that is well-suited to manipulating recursive data structures (like programs) Today: • Tutorial will demonstrate its mostly functional nature 1. Staff introduction; course mechanics – Most data immutable 2. Why and how to study programming languages – Recursion instead of loops 3. OCaml and functional-programming tutorial – Lots of passing/returning functions • Again, will support F# as a fine alternative Lecture 1 CSE P505 Autumn 2016 Dan Grossman 15 Lecture 1 CSE P505 Autumn 2016 Dan Grossman 16 A question An answer Of course it depends on what you are doing • What’s the best kind of car? Programming languages have many goals, including making it easy in your domain to: • Write correct code • Write fast code • What’s the best kind of shoes? • Write code fast • Write large projects • Interoperate •… Lecture 1 CSE P505 Autumn 2016 Dan Grossman 17 Lecture 1 CSE P505 Autumn 2016 Dan Grossman 18 Another question Aren’t all PLs the same? • Aren’t all cars the same? Almost every language is the same • You can write any function from bit-string to bit-string (including “4 wheels, a steering wheel, a brake – the rest is unimportant non-termination) details” • All it takes is one loop and two infinitely-large integers • Called the “Turing tarpit” • Standards help Yes: Certain fundamentals appear almost everywhere (variables, – Easy to build roads and rent a car abstraction, records, recursive definitions) – Travel to learn more about where you’re from • But legacy issues dominate – OCaml lets these essentials shine – Why are cars the width they are? • Like the DEC Alpha in computer architecture No: Real differences at formal and informal levels Lecture 1 CSE P505 Autumn 2016 Dan Grossman 19 Lecture 1 CSE P505 Autumn 2016 Dan Grossman 20 Picking a language And some stuff is just cool Admittedly, semantics can be far down the priority list: • We certainly should connect the theory in this course to real- • What libraries are available? world programming issues • What do management, clients want? – Though maybe more later in the course after the basics • What is the de facto industry standard? • What does my team already know? • But even if we don’t, some truths are so beautiful and • Who will I be able to recruit? perspective-altering they are worth learning anyway – Watching Hamlet should affect you But: • Maybe very indirectly • Nice thing about class: we get to ignore all that - • Maybe much later • Technology leaders affect the answers • And maybe you need to re-watch it • Sound reasoning about programs requires semantics – Mission-critical code doesn’t “seem to be right” – Blame: the compiler vendor or you? Lecture 1 CSE P505 Autumn 2016 Dan Grossman 21 Lecture 1 CSE P505 Autumn 2016 Dan Grossman 22 Academic languages “But I don’t do languages” Aren’t academic languages worthless? Aren’t languages somebody else’s problem? • Yes: fewer jobs, less tool support, etc. – But a lot has changed in the last decade • If you design an extensible software system or a non-trivial API, you'll end up designing a (small?) programming language! • No: – Knowing them makes you a better programmer • Another view: A language is an API with few functions but – Java did not exist in 1993; what doesn’t exist now sophisticated data. Conversely, an interface is just a stupid – Eventual vindication (on the leading edge): programming language… garbage-collection, generics, function closures, iterators, universal data format, … (what’s next?) – We don’t conquer; we assimilate • And get no credit (fine by me) – Functional programming is “finally cool”-ish Lecture 1 CSE P505 Autumn 2016 Dan Grossman 23 Lecture 1 CSE P505 Autumn 2016 Dan Grossman 24 Our API… Summary so far type source_prog • We will study the definition of programming languages very type object_prog precisely, because it matters type answer • There is no best language, but lots of similarities among val evaluate : source_prog -> answer languages val typecheck : source_prog -> bool • “Academic” languages make this study easier and more val translate : source_prog -> object_prog forward-looking • “A good language” is not always “the right language” but we will pretend it is • APIs evolve into programming languages 90+% of the course is defining this interface – Learn to specify all your corner cases via elegant composition It is difficult but really elegant (core computer science) Lecture 1 CSE P505 Autumn 2016 Dan Grossman 25 Lecture 1 CSE P505 Autumn 2016 Dan Grossman 26 Last Motivation: “Fan Mail” Last Motivation: “Fan Mail” Today I had to do some work with a minimal browser shell around I was starting my first week at Google, all fresh-faced and eager to Internet Explorer (for work), and found that I didn't have my usual impress. As a the newest employee on the team, my co-workers Javascript debugging tools. So I tried to write a small "immediate gave me the task of sanity-checking the newly written Dart window" for Javascript so I could conveniently execute commands. language spec (and it would be a good way to introduce me to the I started off knowing I'd probably use some eval(), but only a little language).

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    14 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us