InterLink William R. Cook UT Austin November 2008
Huge Scale Open Non-deterministic Adaptive
Huge Open Stochastic Adaptive How many of us have ever built such a system?
Huge Open Stochastic Adaptive …or dealt with one of them?
Choices? Emergent behavior versus Compositionality “Fitness to Purpose” versus Verification Dynamic Languages versus Type Systems
Methodology? Try and build such systems (Don't worry about methodology or tools) Just build it Analyze and build tools along the way
Question Assumptions The Interactive Nature of Computing: Refuting the Strong Church-Turing Thesis – Minds and Machines, Volume 18, Issue 1 (March 2008) – Expanded version of 2003 CACM paper Turing Machines do not express all computations, only computable funtions – Interaction: or feedback with outputs to inputs – What does an operating system compute?
Strategic Programming William R. Cook UT Austin InterLink November 2008
How (implementation) What (Specification) Spectrum of programming
How (implementation) What (Specification) Spectrum of programming Verification Synthesis
How (implementation) What (Specification) C asm Z CASL Alloy
How (implementation) What (Specification) C asm Java C# Scala ML Haskell Z CASL Alloy
How (implementation) What (Specification) C asm Java C# Scala ML Haskell SQL BNF Excel HTML Att-Gr UML Z CASL Alloy
How (implementation) What (Specification) C asm Java C# Scala ML Haskell SQL BNF Excel HTML UML Attr-Gr General Purpose Aspect Specific Z CASL Alloy
Strategic Programming Another view of – Model-driven development – Domain-specific language engineering System = – General strategies:interpreter – Specifics of problem at hand: model Compilation by partial evaluation
Challenge: Integrating Models – Grammars/Parsers (Yacc) – Queries (SQL, OQL) – Semantic Data Models (ER/UML) – State machines (Statecharts, xUML) – Security models (rule-based access control) – User interface models (web) – Dependency models (Make) – Workflow models (Orc)
Challenge: Building Complete Systems User Interface – Mapping to/from data for web & GUI Security/Authorization – Enforced as checks, provide metadata to UI Triggers and Workflow – React to conditions, concurrent workflow Semantic Data Models (graphs) – Graphs: constraints, computations, relationships Generic Operations – Read, write, parse, compare, diff, merge, …
Web Applications web(UI, Schema, db, request) : HTML UI : description of user interface (pages, sections) schema: description of data (constraints, etc) db : data store (described by schema) request : an HTTP request web : interpreter, with design knowledge Addresses key problem: Integrating multiple models
web [UI, Schema] (db, request) : HTML static dynamic web [UI, Schema] is partial evaluation of web with respect to UI model and data schema Dynamic web site (wiki-style) or compiled Possible to generate both web and GUI Partial Evaluation of Web Interpreter
Conclusion Strategic Programming – Interpretation of descriptions – Aspects as interpreter extensions – Compilation by partial evaluation + deforestation – Self-implemented system (Scheme) Not for all kinds of programming – Not for unique programs
Object Description Reflection
Object Description Interpretation* *and partial evaluation
Do not Design Your Programs
Program Your Designs!