I. course summary A. review of syllabus ------------------------------------------ WHAT WE STUDIED Object-Oriented Languages Smalltalk, Java Aspect-Oriented Languages AspectJ, Aspect Smalltalk Functional Programming Languages Haskell ------------------------------------------ B. Programming lessons What did you learn about programming from each? ------------------------------------------ WHAT DID WE LEARN ABOUT EACH PARADIGM? ------------------------------------------ 1. OO (Smalltalk, C++, Java): 2. Aspect-Oriented (AspectJ): 3. Functional (Haskell, SML, Scheme): 4. Logic (\Prolog, Prolog): 5. Comparison What are the advantages and disadvantages (limits) of each paradigm? How do they compare for making programming easier? C. language design ideas ------------------------------------------ WHAT DID WE LEARN ABOUT LANGUAGE DESIGN? ------------------------------------------ What techniques? What principles? 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 Prototyping language designs: - through lazy functional languages - through frameworks - through logic ------------------------------------------ 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. languages vs. problems A. styles vs. kinds of problems that work well ------------------------------------------ WHAT KINDS OF PROBLEMS WORK WELL IN... Object-Oriented style (Smalltalk)? Functional style (Haskell)? Logic Programming style (\Prolog)? ------------------------------------------ B. What kinds of things are not easily done in a given style? ------------------------------------------ WHAT IS NOT EASILY DONE IN ... Object-Oriented style (Smalltalk)? Functional style (Haskell)? Logic Programming style (\Prolog)? ------------------------------------------ C. language vs. data structures available (skip) 1. Haskell or SML 2. Smalltalk 3. Prolog