Transcript Slides

INF 212
ANALYSIS OF PROG. LANGS
FINAL LECTURE
Instructors: Crista Lopes
Copyright © Instructors.
Course Objectives

Understand concepts in PLs
of PLs, all look different  they aren’t that
different
 Appreciate history, diversity of ideas in PLs
 Be prepared for new languages
 Ignore sales pitches
 100’s

Be rigorous (PLs are a good example)
 Certain


times, you cannot afford to be fuzzy
Learn some important facts about existing language
systems and techniques
Learn and think critically about tradeoffs
The Course


Mathematical Foundations

Lambda calculus

Operational Semantics
Funktional Programming Pearls


Reflection


Different ways of decomposing problems
Virtual Machines


Type checking, type inference, polymorphism
Modularity


Meta-circular interpreter, eval, reification, intercession
Type Systems


Closures, continuations, iterators, generators, monads
Purpose, under the hood
Program [static] analysis
Programming Languages


Universe of design ideas
Crazy concepts often became mainstream
 E.g.
garbage collection, recursion, closures, …
 (other crazy concepts were just crazy)

Language design concepts often pop out into
systems design concepts
 E.g.
Map-Reduce, stateless – REST, …
What’s new in programming languages

Commercial trend over past 5+ years



Increasing use of type-safe languages: Java, C#, …
Scripting languages, other languages for web applications
Teaching trends

Java replaced C as most common intro language


Less emphasis on how data, control represented in machine
Research and development trends

Modularity


Program analysis


Automated error detection, programming env, compilation
Isolation and security


Java, C++: standardization of new module features
Sandboxing, language-based security, …
Web 2.0

Increasing client-side functionality, mashup isolation problems
What’s worth studying?

Dominant languages and paradigms
 Leading
languages for general systems programming
 Explosion of programming technologies for the web




Important implementation ideas
Performance challenges
Design tradeoffs
Concepts that research community is exploring for
new programming languages and tools
 E.g.
Multi-core
Questions





Projects: Easy? Hard? OK?
Which project(s) didn’t you like?
Which project(s) did you like best?
Did you read the suggested readings?
Suggestions for next year’s offering