+ All Categories
Home > Documents > Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n...

Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n...

Date post: 09-Apr-2020
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
52
UT Austin Ensō William Cook, Alex Loh UT Aus7n Tijs van der Storm CWI
Transcript
Page 1: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Ensō    

William  Cook,  Alex  Loh    UT  Aus7n  

Tijs  van  der  Storm    CWI  

Page 2: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Enable  Good  

2  

Prevent  Bad  

Page 3: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Enable  Good  

Prevent  Bad  

Bug  Finding  Race  Detec7on  Type  Checking  etc.  

3  

Page 4: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Enable  Good  

New  languages?  New  features?  

For  what?  

Prevent  Bad  

Bug  Finding  Race  Detec7on  Type  Checking  etc.  

Page 5: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Enable  Good  

New  languages?  New  features?  

For  what?  

Advantages:  Measurable  Domain-­‐free  

Prevent  Bad  

Bug  Finding  Race  Detec7on  Type  Checking  etc.  

Page 6: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Kolmogorov  Complexity  

6  

Page 7: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Shortest  program    that    

generates  informa7on  

7  

Page 8: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Shortest  program    that    

generates  informa7on  

Best  

behavior  

8  

Page 9: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Shortest  program    that    

generates  informa7on  

Best  

behavior  

Qualita7ve  Kolmogorov    Program  Complexity  

9  

Page 10: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

I  don't  know  how  

10  

Page 11: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

but  it’s  a  good  goal  

11  

Page 12: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

A  Problem  

1.  Many  (many!)  repeated  instances  of  similar  code  

2.  Unique  details  and  names  prevent  generaliza7on  

12  

Page 13: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin Applica7on  

(Code)  Behavior  

Strategies  (how)  

Requirements  (what)  

13  

Page 14: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin Applica7on  

(Code)  Applica7on  (Code)  

Very  different  Code   Behavior  

Very  different  Strategies  

Small  change  to  Requirements  

14  

Page 15: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin Applica7on  

(Code)  Applica7on  (Code)  

Very  different  Code   Behavior  

Chaos!  

15  

Very  different  Strategies  

Small  change  to  Requirements  

Page 16: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Strategies  (how)  

Applica7on  (Code)  

Reify!?  

Behavior  

Requirements  (what)  

16  

Page 17: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Strategies  

Requirements  

Unique  Bits  

Behavior  

Technical  Requirements  

17  

Page 18: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Data  Manager  

Data  Requirements  

Data  Model  

Objects  

Technical  Requirements  

18  

Page 19: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Using  Managed  Data  (Ruby)  

•  Descrip7on  of  data  to  be  managed  Point = { x: Integer, y: Integer }

•  Dynamic  crea7on  based  on  metadata  p = BasicRecord.new Point p.x = 3 p.y = -10 print p.x + p.y p.z = 3 # error!

•  Factory  BasicRecord:  Descrp7on<T>    T  

19  

Page 20: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Implemen7ng  Managed  Data  

•  Override  the  "dot  operator"  (p.x)  •  Reflec7ve  handling  of  unknown  methods  

• Ruby  method_missing  

•  Smalltalk:  doesNotUnderstand  • Also  IDispatch,  Python,  Objec7ve-­‐C,  Lua,  CLOS  • Mar7n  Fowler  calls  it  "Dynamic  Recep7on"  

•    Programma7c  method  crea7on  •  E.g.  Ruby  define_method  

•  Par7al  evalua7on  20  

Page 21: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Other  Data  Managers  

•  Mutability:  control  whether  changes  allowed  •  Observable:  posts  no7fica7ons  •  Constrained:  checks  mul7-­‐field  invariants  •  Derived:  computed  fields  (reac7ve)  •  Secure:  checks  authoriza7on  rules  •  Graph:  inverse  fields  (bidirec7onal)  •  Persistence:  store  to  database/external  format  •  General  strategy  for  all  accesses/updates  •  Combine  them  for  modular  strategies  

21  

Page 22: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin Graphs,  Invariants,  Computed  

Teacher  

7tle  

Student  

tui7on  paid  

Person  

name  SSN  ac7ve  

advisor↑  

advisees↓  

Course  

7tle  schedule  

Enrollment  

grade-­‐op7on  grade  

↑course  

↓enrollments  

←enrollments  student→  

←teaches  teacher→  

0  or  more  Exactly  1  0  or  1  Subtype  

Constraints:  for  all  student  s  

                                         s.dept  =  s.advisor.dept  Computed  values/atribute  grammars  

22  

Page 23: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin Tradi7onal  Data  Mechanisms  

23  

Page 24: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Managed  Data  

24  

Page 25: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Grammars  

•  Mapping  between  text  and  object  graph  •  A  point  is  writen  as  (x,  y)  

•  Notes:  • Direct  reading,  no  abstract  syntax  tree  (AST)  • Bidirec7onal:  can  parse  and  prety-­‐print  • GLL  parsing,  interpreted!  

Individual   Grammar  

(3,  4)   P  ::=  [Point]  "("  x:int  ","  y:int  ")"  

25  

class   fields  

Page 26: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

start  Opened  

state  Opened      on  close  go  Closed  

state  Closed      on  open  go  Opened      on  lock  go  Locked  

state  Locked      on  unlock  go  Closed  

def  run_state_machine(m)      current  =  m.start      while  gets          puts  "#{current.name}"          input  =  $_.strip          current.out.each  do  |trans|              if  trans.event  ==  input                  current  =  trans.to                  break              end          end      end  end  

State  Machine  Example  

26  

class  Machine      start    :  State      states!  State*  

class  State      machine:  Machine      name  #      str      out          !        Trans*      in                :        Trans*  

class  Trans      event  :    str      from      :    State  /  out      to                :    State  /  in  

M::=  [Machine]  "start"  \start:</states[it]>  states:S*  S  ::=  [State]  "state"  name:sym      out:T*  T  ::=  [Trans]  "on"  event:sym  "go"  to:</states[it]>  

Door  StateMachine   StateMachine  Grammar  

StateMachine  Schema  A  StateMachine  Interpreter  

Page 27: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

3*(5+6)  

module  Eval          opera7on  :eval  

   def  eval_Num(val)          val      end  

   def  eval_Add(le~,  right)          le~.eval  +  right.eval      end  

   def  eval_Mul(le~,  right)          le~.eval  *  right.eval      end  end  

Expression  Example  

27  

class  Exp  

class  Num      val  :  int  

class  Add      le~      :  Exp      right  :  Exp  

class  Mul      le~      :  Exp      right  :  Exp  

E      ::=  [Add]  le~:E  "+"  right:M    |  M  M  ::=  [Mul]  le~:M  "*"  right:P    |  P  P      ::=  [Num]  val:int                                      |  "("  E  ")"    

Sample  Expression   Expression  Grammar  

Expression  Schema  An  Expression  Interpreter  

Page 28: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

start  G  G  ::=  [Grammar]  "start"    start:</rules[it]>  rules:R*  R  ::=  [Rule]      name:sym  "::="  arg:A  A  ::=  [Alt]      alts:C+  @"|"  C  ::=  [Create]    "["  name:sym  "]"  arg:S    |    S  S  ::=  [Sequence]  elements:F*  F  ::=  [Field]      name:sym  ":"  arg:P                |    P  P  ::=  [Lit]      value:str                  |    [Value]  kind:("int"  |  "str"  |  "real"  |  "sym")                  |    [Ref]    "<"  path:Path  ">"                  |    [Call]    rule:</rules[it]>                  |    [Code]  "{"  code:Expr  "}"                    |    [Regular]  arg:P  "*"  Sep?    {  op7onal  &&  many  }  

   |    [Regular]  arg:P  "?"            {  op7onal  }      |    "("  A  ")"  

Sep  ::=  "@"  sep:P  

Grammar  Grammar  

28  

non-­‐terminal  name      reference  to  rule  

Page 29: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Schema  Language  +  Interpreter  

StateMachine  Schema  

Schema  Grammar  

StateMachine  DSL  

StateMachine  Grammar  

Schema  Schema  

Grammar  Grammar  

Grammar  Schema  

Grammar  Language  +  Interpreter  

StateMachine Interpreter  

Everything  is  a  language  

29  

Page 30: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

!"#$$#"!"#$$#"

%&'($#%&'($#

)*"$#++(,-./

012+#1&(-*3

012+#1&(-*3012+#1&(-*3

)*"$#++(,-./

)*"$#++(,-./

012+#1&(-*3

)*"$#++(,-./

%&'($#!"#$$#"

!"#$$#"%&'($#

Quad-­‐model  

30  

Nontrivial    bootstrapping  

Page 31: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

class  Schema          types:  Type*  class  Type          name:  string  class  Primi7ve  <  Type    class  Class  <  Type          fields:  Field*          super:  Type?  

class  Field            name:  string            type:  Type            many:  bool            op7onal:  bool  primiCve  string  primiCve  bool  

Schema  Schema  

(Self-­‐Descrip7on)  31  

Page 32: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Diagrams  

•  Model  •  Shapes  and  connectors  

•  Interpreter  • Diagram  render/edit  applica7on  • Basic  constraint  solver  

32  

Page 33: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Schema  Diagram  

33  

Page 34: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Stencils  

•  Model:  mapping  object  graph    diagram  •  Interpreter  

•  Inherits  func7onality  of  Diagram  editor  • Maps  object  graph  to  diagram  

– Update  projec7on  if  objects  change  • Maps  diagram  changes  back  to  object  graph  • Binding  for  data  and  collec7ons  

– Strategy  uses  schema  informa7on  – Rela7onships  get  drop-­‐downs,  etc  – Collec7ons  get  add/remove  menus  

34  

Page 35: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Schema  Diagram  Editor  

35  

Page 36: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Schema  Stencil  diagram(schema)  graph  [font.size=12,fill.color=(255,255,255)]  {  for  "Class"  class  :  schema.classes          label  class            box  [line.width=3,  fill.color=(255,228,181)]  {                  verCcal  {                      text  [font.size=16,font.weight=700]  class.name                      for  "Field"  field  :  class.defined_fields                          if  (field.type  is  Primi7ve)                                horizontal  {                                    text  field.name  //  editable  field  name                                    text  ":  "                                    text  field.type.name  //  drop-­‐down  for  type                                }}}}  

36  

Page 37: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin Schema  Stencil:  Connectors  

 …  //  create  the  subclass  links      for  class  :  schema.classes          for  "Parent"  super  :  class.supers              connector  [line.width=3,  line.color=(255,0,0)]                          (class  -­‐-­‐>  super)  …  [also  for  rela7onships]  

37  

Page 38: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Language  Workbench  Challenge  

•  Models  •  Physical  hea7ng  system  

– furnace,  radiator,  thermostat,  etc  •  Controller  for  hea7ng  system  

•  Interpreter  •  Simulator  for  hea7ng  system  

– pressure,  temperature  •  State  machine  interpreter  

– Events  and  ac7ons  

38  

Page 39: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Physical  Hea7ng  System  Model  

39  

Page 40: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Piping  Controller  

40  

Page 41: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Piping  Details  

•  Simula7on  updates  physical  model  •  Change  to  physical  model  causes  update  to  view  

• Observable  Data  Manager  -­‐>  Presenta7on  update  

•  State  machine  interpreter  changes  states  •  Presenta7on  shows  current  state  

•  User  can  interact  with  physical  model  •  Change  thermostat  

•  User  can  edit  diagram  

41  

Page 42: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Performance  

•  Ensō  is  currently  slow  but  usable  • Accessing  a  field  involves  two  levels  of  meta-­‐interpreta7on  

• My  job  is  to  give  compiler  people  something  to  do  

•  Par7al  Evalua7on  of  model  interpreters  web(UI, Schema, db, request) : HTML web[UI, Schema](db, request) : HTML

sta@c   dynamic  42  

Page 43: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Bootstrap 387 —

Utilities 256 —

Schemas 691 51

Grammar/Parse 885 106

Render 318 17

Web 932 305

Security 276 46

Diagram/Stencil 1389 176

Expressions 448 144

43  

Page 44: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Ensō  Summary  

•  Executable  Specifica7on  Languages  •  Data,  grammar,  GUI,  Web,  Security,  Queries,  etc.  

•  External  DSLs  (not  embeded)  •  Interpreters  (not  compilers/model  transform)  

• Mul7ple  interpreters  for  each  languages  

•  Composi7on  of  Languages/Interpreters  •  Reuse,  extension,  deriva7on  (inheritance)  

•  Self-­‐implemented  (Ruby  for  base/interpreters)  •  Par7al  evalua7on  for  speed  

44  

Page 45: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Related  Work  

•  Aspects:  a  fundamental  idea  •  Current  solu7ons  are  terrible  (AspectJ)  

•  DSLs  and  Models:  Feeling  same  elephant  •  external  vs.  internal  •  graphical  vs.  textual  

•  F#  Type  Providers  •  Scheme  macros  (defstruct)  

•  Metaprogramming  • But  without  manipula7ng  'code'  

45  

Language   Meta-­‐Model  

Program   Model  

More..  

Page 46: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

How  (implementa7on)  

What  (Specifica7on)  

Spectrum  of  programming  

46  

Page 47: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

How  (implementa7on)  

What  (Specifica7on)  

47  

VerificaCon  

Page 48: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

How  (implementa7on)  

What  (Specifica7on)  

48  

Synthesis  

VerificaCon  

Page 49: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

How  (implementa7on)  

What  (Specifica7on)  

49  

Synthesis  

Domain-­‐Specific  Specifica7ons  

VerificaCon  Lite  

VerificaCon  Verifica7on  Lite  =  Type  checking  

Page 50: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

How  (implementa7on)  

What  (Specifica7on)  

Synthesis              (guided)  

Domain-­‐Specific  Specifica7ons  

VerificaCon  Lite  

Synthesis  Lite  

VerificaCon  

50  

Synthesis  Lite  =    Model-­‐Driven  Development  Domain-­‐Specific  Languages,  …  

Page 51: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Don't  Design    Your  Programs  

51  

Page 52: Ensō%% - University of Texas at Austinwcook/Drafts/2012/2012-07-13EnsoMSR.pdf · 2019-12-19 · n Enable%Good% New%languages?% New%features?% For%what?% PreventBad% BugFinding Race%Detec7on%

UT

Aus

tin

Program  Your  Designs  

Ensō  enso-­‐lang.org  

52  


Recommended