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