






















Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
An introduction to programming languages. It covers topics such as motivation and goals, academic integrity, software development, maintenance, and reliability. The document also discusses the importance of developing tools to rigorously study what programs mean and how to handle the general case. The approach taken in the document is to define small, tractable languages and extend them with increasingly rich features. The document also includes a Caml Crash Course and a reference to Pierce’s Types and Programming Languages.
Typology: Lecture notes
1 / 30
This page cannot be seen from the preview
Don't miss anything!























The magic of myth and legend has been realized in our time. One simply types the correct incantation on a keyboard, and a display screen comes to life, showing things that never were nor could be. Fred Brooks
http://cs.brown.edu/events/talks/notkin.html
https://www.destroyallsoftware.com/talks/wat
class A { int f() { return 0; } } class B { int g(A x) { try { return x.f(); } finally { foo(); } } } class A { int f() { return 0; } } class B { int g(A x) { return 0; } }
A could be extended x could be null s could have “side effects”
How can we handle general case? How can we be sure it’s right? How do we automate?