Presentation is loading. Please wait.

Presentation is loading. Please wait.

University of British Columbia Software Practices Lab Expressive Programs Through Presentation Extension Andrew D. Eisenberg and Gregor Kiczales.

Similar presentations


Presentation on theme: "University of British Columbia Software Practices Lab Expressive Programs Through Presentation Extension Andrew D. Eisenberg and Gregor Kiczales."— Presentation transcript:

1 University of British Columbia Software Practices Lab Expressive Programs Through Presentation Extension Andrew D. Eisenberg and Gregor Kiczales

2 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 2 Code that Looks Like the Design

3 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 3 Code that Looks Like the Design

4 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 4 Familiar goals, many approaches – Languages abstraction level, domain specificity, extensibility… – Editors language aware, highlighting, formatting… Contributions – New editor/compiler architecture synergistic presentation and semantic extensibility compatible with existing code, tools, practice – Eclipse-based implementation – Examples how light-touch uses of idea can be powerful Code that Looks Like the Design

5 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 5 Desirable Properties Extensibility –presentation more than colors, fonts—substantial difference from concrete syntax free-form editing –semantic like syntax macros –(abstract syntax graph, not tree) Compatibility –with existing code, tools –incremental adoption Traceability –of errors –for other tools

6 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 6 Tool chains Raw Text (Byte) Code Other Tools Display/ Edit Compiler/ Interpreter Editor Gnu/Linux Language extensibility code formatting (colors, bold, italics, etc) text pre-processors Communication is line number and character-based

7 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 7 semantic extensibility Syntax Macros AST Expanded AST Other Tools Display/ Edit Lisp/Scheme Raw Text (Byte) Code Language extensibility code formatting macros Communication is line number and character-based

8 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 8 (Byte) Code Expanded AST Structure (Syntax-Directed) Editors AST Interlisp Cornell Program Synthesizer Other Tools Display/ Edit Raw Text Language extensibility code formatting pretty-printing (line breaks, white space, etc) macros Communication between display and byte code can be AST-based semantic extensibility

9 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 9 State of the Practice IDEs AST easy to create from raw text cheap, reliable, and fast incremental simultaneous maintenance of raw text & AST Communication is line-number or AST-based Restricted extensibility Eclipse, IntelliJ, Visual Studio, … Other Tools AST Display/ Edit Raw Text (Byte) Code semantic extensibility

10 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 10 Raw Text Display-Driven AST AST*—Abstract Syntax Graph more freedom in displaying code Program store is determined by editor communication is AST-based only cannot use text-based tools Language extensibility presentation macros (DrScheme) and AST expansion (Intentional Programming) DrScheme Intentional Programming Subtext Other Tools Display (AST*) (Byte) Code Store AST Expanded AST semantic extensibility presentation extensibility

11 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 11 (Byte) Code Expanded AST Other Tools Display/ Edit Raw Text Presentation Extension of Plain Text Language extensibility presentation syntactic Compatible with modern IDEs Tool infrastructure Raw text is accessible (with syntactic extension) AST* semantic extensibility presentation extensibility

12 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 12 Expanded AST Architecture Legacy Tools Display AST Byte Code Raw Text

13 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 13 Expanded AST Architecture Display AST Byte Code Legacy Tools Raw Text

14 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 14 Expanded AST Architecture Display AST Byte Code Raw Text

15 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 15 Raw Text Expanded AST Architecture Display Byte Code AST Pair of disjoint, but communicating metaobject protocols

16 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 16 Implementation Display Byte Code AST Expanded AST AST+ Edit MOs AST+ Compile MOs Boxes Controllers M V C Error Propagation CTMOP ETMOP Pair of disjoint, but communicating metaobject protocols Raw Text Edit-Time Metaobject Protocol Compile-Time Metaobject Protocol

17 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 17 Traceability Display Byte Code AST Expanded AST AST+ EMOs AST+ CMOs Boxes Controllers CTMOP ETMOP Pair of disjoint, but communicating metaobject protocols Pair of disjoint, but communicating metaobject protocols Raw Text Edit-Time Metaobject Protocol Compile-Time Metaobject Protocol

18 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 18 Traceability Allows Error Propagation

19 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 19 Traceability Allows Code Completion

20 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 20 Can be used to create graph edges Annotations are familiar Annotations work with existing tools Valid Java syntax Attached to source code @Getter("get") @Setter("set") private int x; @Previous private int y; Metaobjects Serialize to Annotations

21 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 21 AspectJ Code Style↔Annotation Style @org.aspectj.lang.annotation.Aspect() class PointObserving{ @org.aspectj.lang.annotation.After(value="changes(p)") void advice$aj$0(Point p){ Screen.notify(); } @org.aspectj.lang.annotation.Pointcut( "this(p) && execution(void Point.set*(int))") void changes(Point p){} }

22 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 22 Uses @ca.ubc.cs.etmop.annotations.Uses( type=BufferedReader.class, name="file", init="new BufferedReader(new FileReader(fName))") public String getFileContents(String fName) {... }

23 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 23 Only presentation extensibility, no semantic Backquote—Code Generation return makeMethod( makeModifiers(PUBLIC), makeVoid(), makeName(makeSetterName(varName)), makeParameters( makeParameter(makeType(typeName), makeName(varName))), makeBlock(makeExpressionStatement( makeAssignment(makeFieldAccess( makeThis(), makeName(varName)), makeName(varName)))));

24 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 24 Equations public static double mean( final List x) { @Equation(Return.DOUBLE) int MOP_ANNOTATION_HOLDER$0; return Equ.div( new Summer() { public int body(int i) { return x.get(i); } }.sum(0, x.size() - 1), x.size()); }

25 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 25 Equation Video

26 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 26 Stream Processing Automaton

27 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 27 Presentation Extensions (Byte) Code Expanded AST Other Tools Display/ Edit Raw Text Display Byte Code AST Expanded AST AST+ EMOs AST+ CMOs Boxes Controllers CTMOP ETMOP Error Propagation

28 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 28 Questions? (Byte) Code Expanded AST Other Tools Display/ Edit Raw Text Display Byte Code AST Expanded AST AST+ EMOs AST+ CMOs Boxes Controllers CTMOP ETMOP Error Propagation

29 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 29 Talk about indexicality I am probably not going to talk about this due to time constraints How do we bridge between examples and this? Show the different variations of getter Explain benefits and disadvantages

30 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 30 From AST to Display AST EMOs Boxes Display... DefaultREMO CombineRightREM GetterREM O SetterREMO DefaultREMO

31 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 31 From AST to Byte Code... AST DefaultCMO CombineRightCMO GetterCMO SetterCMO DefaultCMO CMOs Transform Traceability ETMOP Editor Compile *.class... Modified AST.........

32 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 32 Stream Processing Automaton

33 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 33 DrScheme Display Program not stored as text AST created from display Communication is AST-based only Store is serialized form of the display Easy to go from store to display Requires display infrastructure to interpret Textual form is not readable Point of openness Raw Text Other Tools Store AST Expanded AST (Byte) Code

34 Andrew Eisenberg and Gregor Kiczales — University of British Columbia 34 Presentation Extensions mean what?


Download ppt "University of British Columbia Software Practices Lab Expressive Programs Through Presentation Extension Andrew D. Eisenberg and Gregor Kiczales."

Similar presentations


Ads by Google