I. course summary A. review of syllabus ------------------------------------------ WHAT WE STUDIED Approaches to Making Programming Easier Functional Programming and DSLs Haskell Object-Oriented Programming and Frameworks Smalltalk Logic Programming and search lambda Prolog ------------------------------------------ B. Programming lessons What did you learn about programming from each? ------------------------------------------ WHAT DID WE LEARN ABOUT EACH PARADIGM? ------------------------------------------ 1. Functional (Haskell, SML, Scheme): 2. OO (Smalltalk, C++, Java): 3. Logic (\Prolog, Prolog): 4. 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 principles? What techniques? 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: - 641 (Semantic models for Prog. Langs.) ------------------------------------------ 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