I. course summary A. review of syllabus ------------------------------------------ WHAT WE STUDIED Overview of Programming Languages Object-Oriented Programming Smalltalk, Java case study Functional Programming Haskell Logic Programming \Prolog ------------------------------------------ What's the importance of each of each? B. Programming lessons What did you learn about programming from each? ------------------------------------------ WHAT DID WE LEARN ABOUT EACH PARADIGM? ------------------------------------------ 1. OO (Smalltalk, C++, Java): 2. Functional (Haskell, SML, Scheme): 3. Logic (\Prolog, Prolog): 4. Comparison What are the advantages and disadvantages (limits) of each paradigm? C. language design ideas ------------------------------------------ WHAT DID WE LEARN ABOUT LANGUAGE DESIGN? ------------------------------------------ What principles? What techniques? D. semantic concepts and ideas ------------------------------------------ WHAT DID WE LEARN ABOUT SEMANTICS? ------------------------------------------ 1. Semantic paradigms What semantic paradigms did we study? And what skills did we learn from them? a. Operational semantics (not in Fall 97) b. Type checking c. Denotational semantics (not in 1997): 2. semantic ideas What are the key semantic ideas or concepts? a. environments b. store 3. parameter mechanisms a. others 4. what's the good of this? a. prototyping the language design what gets left unsaid in such a specification? b. the value of formal specification E. some relationships 1. semantics and programming 2. operational and denotational semantics (skip) a. specif and impl. b. full abstraction F. where to go from here ------------------------------------------ WHERE TO GO FROM HERE Other kinds of programming: - constraint-based - parallel: dataflow (~ functional), data-parallel, distributed, ... Other kinds of semantics: - denotational - algebraic - axiomatic (predicate transformers) Other aspects of semantics: - control flow continuations - semantics of OO programming constructs - new kinds of languages Further classes: - 542 (Programming Languages II) - 641 (Semantic models for Prog. Langs.) ------------------------------------------ G. what's the value of all this? ------------------------------------------ WHAT'S THE VALUE OF ALL THIS? Everything is programming: - even semantics - all transformations of information There are many different styles - you can even use these styles in the same program - program with a style, into a language Everything has syntax and semantics: - even programs - even functions - a helpful first cut at explanations ------------------------------------------ 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