I. course summary A. review of syllabus ------------------------------------------ WHAT WE STUDIED Models - Declarative + Exceptions + Security - Concurrent + By-need evaluation - Message Passing - Explicit State Programming - Functional - Declarative - Declarative Concurrent - Message passing ------------------------------------------ What's the difference between the declarative and functional models? What does the concurrent model add? B. language design and model ideas ------------------------------------------ WHAT DID WE LEARN ABOUT MODELS AND LANGUAGE DESIGN? ------------------------------------------ What primitives are helpful, powerful? What techniques? What principles? C. Programming lessons What did you learn about programming from each? ------------------------------------------ WHAT DID WE LEARN ABOUT PROGRAMMING? ------------------------------------------ 1. Declarative 2. Declarative concurrency 3. Message Passing 4. Explicit State 5. Comparison What are the advantages and disadvantages (limits) of each paradigm? How do they compare for making programming easier? D. what's the value of all this? ------------------------------------------ WHAT'S THE VALUE OF ALL THIS? Programming is language design: - make it easy for your users - give them good notation - provide primitives, ways to combine them, and abstraction facilities Kernel language approach: - find primitives that give new power - add sugars on top of these ------------------------------------------ E. where to go from here ------------------------------------------ WHERE TO GO FROM HERE Further classes: - 540 Compilers - 641 (Semantic models for Prog. Langs.) - Seminar on PL design ------------------------------------------ II. style (or model) vs. problems A. styles vs. kinds of problems that work well ------------------------------------------ WHAT KINDS OF PROBLEMS WORK WELL IN... Declarative style? Declarative Concurrent style? Message Passing style? Explicit State (ADT, OO) style? ------------------------------------------ B. What kinds of things are not easily done in a given style? ------------------------------------------ WHAT IS NOT EASILY DONE IN ... Declarative style? Declarative Concurrent style? Message Passing style? Explicit State (ADT, OO) style? ------------------------------------------