Notes from Thursday's What breakout group Focus Group B: What Chair: Jim Larus (Microsoft Research) Olin Shivers (Northeastern Univ.) Robert Harper (CMU) Stephen Freund (Williams College) Franklyn Turbak (Wellesley College) Gary Leavens (University of Central Florida) Peter Sestoft (ITU) Chandra Krintz (UC Santa Barbara) Peter Sestoft not present Focus on high level initially (ideas) on what: objectives/outcomes (X's are top five ranking by participants of most important) ------------------------ -metaprogram / analyze (program as data) XXXXX -choose paradigm and write program XXXXX specific system and tools XXXX computational model XXXXX evaluate language XX loop invariants limits of program analysis pl concept implementation X create/compose modules learn a new PL XXXX tension between programming methodology and language different courses: PL, SWE, programming, theory paradigm as a term: undefined, obsolete attempt on taxonomizing languages, avoid its use programs are a form of expression REARCHITECTING: 1) analysis understanding a variey of individual concepts and what they are used for - what they are, how to deplay - use to understand existing languages ----------------------------------- static&dynamic semantics - typing rules, syntax, specification - how to operate on, analyze, execute - pick a model for a problem, evaluate a language 2) synthesis Integrate concepts into a PL to get something done - build a language yourself - understand deeply an existing language - how to implement - how to integrate into a language design nice abstract model ----------------------------------- connect specifics to broader concepts and examples - formal model must come first -- directly related to abstraction 3) implementation interpreter, type checker, parallel scheduler concretize concepts into a computing fabric notational framework ----------------------------------- parser interpreter type checker translation/compilation debugging model checking tools runtime systems GC tree manipulation (compilers course?) sum of product data structures pattern matching (compilers course?) abstract interpreation (not sure where/how to do this in an ugrad course) Europe does it early and often parser/interp/type checker: structure of state of a machine implement a DSL understand pieces of a language What are the concepts (one axis with which to look at the world:) 1) finite data structures 2) functions 3) inifite data structures 4) lambda calculus 5) actor model 6) process calc model 7 concurrency - mode of composition, non-determinism 8 parallelism (deterministic, cost model changes, w/ dynmamics / work-efficient versus speculative (which is concurrency) -- efficiency issue only 9) cost model 10) relational/logic programming model 11) constraint based programming 12 mutations and state 13 laziness 14) modularity and interfaces 15 regex/cfg 16 process calculus value in education in the long term should be emphasized / our goal example of these concepts in other areas function compostion / unix pipes (2) plan 9, tex (4) narces, dolev/yao model (4) modeling business processes 7, 16 network protocols, 15 os scheduleser 7 FSA 15 unix select 7 (nondeterm choice on I/O options) map reduce 2,3 perl 15 web services 5,6 locality not really in our list, continuations - having a variable and replacing it by its binding - substitution (TeX) - alpha conversion is everywhere (plan9, naming, narces, unguessible secrets, dolev-yao model (cryptography) - language features are types models of execution (types) - we have an obligation to be prescriptive - separate implementation from abstraction - Appreciate the power of formalism ambiance, admin domains, continuations (call stack) persistent/ephemeral data structures