Presentation is loading. Please wait.

Presentation is loading. Please wait.

Formal Models for Programming Languages

Similar presentations


Presentation on theme: "Formal Models for Programming Languages"— Presentation transcript:

1 Formal Models for Programming Languages
FJ and FGJ Alexandra Stefan 11/26/2018

2 Topics of Discussion Programming Languages (PLs) and Formal Models
Case study: Java - Featherweight Java (FJ) Extension: Generic Java (1.5 beta) – Featherweight Generic Java (FGJ) Some properties: compositionality ... Related work 11/26/2018

3 PLs & formal models First was the computer … and then the programs …
and then the programs to write programs … Numerous programming languages: imperative: Ada, Pascal, Perl, Java, all of the Cs … functional: Scheme, SML, Prolog, Haskel, OCaml … How to choose one? What makes one better than the other? expressive power? No. friendliness? (readability/ modifiability/ debugging) Yes. 11/26/2018

4 PLs & formal models Then questions and needs were raised about languages: How safe is it? It passed compilation: what next? Can I trust it to run well? Will it stab me on the back? Can it be extended? Improved efficiency: generic classes Increased expressivity: XML syntax How would I design a new language? 11/26/2018

5 PLs & formal models Here we come, the PL people! How do we do this?
check their properties (e.g. type preservation, progress, …) try to capture the invariants with a type system How do we do this? using a formal model 11/26/2018

6 Formal model Design choice: completeness or compactness?
more complex is more unwieldy too parsimonious is useless trade-off 11/26/2018

7 Formal model Examples: Lambda calculus
Java: FJ, FGJ, Javas (Javase), Javalight, ClassicJava, … C: C 11/26/2018

8 Topics of Discussion Programming Languages (PLs) and Formal Models
Case study: Java - Featherweight Java (FJ) Extension: Generic Java (1.5 beta) – Featherweight Generic Java (FGJ) Some properties: compositionality ... Related work 11/26/2018

9 Topics of Discussion Programming Languages (PLs) and Formal Models
Case study: Java - Featherweight Java (FJ) 11/26/2018

10 Case study: Featherweight Java (FJ)
Proposed by Igarashi, Pierce, and Wadler in 1999. Models Java’s type system. Minimal core calculus “Favors compactness over completeness almost obsessively” (It hardly resembles Java!) no assignment -> functional captures the core features of Java typing. How close is it to Java? FJ ~ purely functional core of Java. (every FJ program is ‘literally’ an executable Java program) 11/26/2018

11 FJ: What can be done with it?
It allows easy proofs for type safety for FJ FJ’s main application is to model extensions of Java FGJ Featherweight Open Java Inner classes 11/26/2018

12 FJ What does it include? What does it not include? Object creation (*)
Field access (*) Method invocation (*) Cast (*) Variables (*) Mutually recursive class definitions Method override Method recursion – this Assignment (final) Null pointers Base types Messages to super Field shadowing Method overloading Access control (public, private, …) Interfaces Exceptions 11/26/2018

13 FJ How does an FJ program look like? Sanity conditions for classes
Pair: (class table, expression) The class table - fixed Sanity conditions for classes ‘Object’ - not part of the class table All necessary classes are defined No cycles in the subtyping relation induced by the class table 11/26/2018

14 FJ: class declaration examples
11/26/2018

15 FJ: expression examples
11/26/2018

16 FJ: syntax & subtyping rules
11/26/2018

17 FJ: auxiliary functions
11/26/2018

18 FJ: expression typing 11/26/2018

19 FJ: expression typing 11/26/2018

20 FJ: evaluation rules 11/26/2018

21 FJ: results 11/26/2018

22 Topics of Discussion Programming Languages (PLs) and Formal Models
Case study: Java - Featherweight Java (FJ) Extension: Generic Java (1.5 beta) – Featherweight Generic Java (FGJ) Some properties: compositionality ... Related work 11/26/2018

23 Compositional compilation
“Polymorphic Bytecode: Compositional Compilation for Java-like Languages” D. Anacona S. Drossopoulou F. Damiani E. Zucca 11/26/2018

24 Separate compilation: motivation
Why do we want these properties? modularity safety 11/26/2018

25 Separate compilation compile link compile compile fragment
Used fragments fragment compile link Used fragments fragment compile fragment compile fragment 11/26/2018

26 Java-like languages ‘clash of philosophy’
Separate compilation -> byte-code reflects compilation environment Dynamic linking -> byte-code does not reflect compilation environment no: (compilation ~ execution) environment no: (final ~ globally) compiled application type-safety through runtime verification Example: E m(B x){ return x.f1.f2} CEnv1 = … B {… C f1; …} … C {… E f2 …} -> mdB1 = E m(B x){ return x[B.f1 C][C.f2 E]} CEnv2 = … B {… D f1; …} … D {… F f2 …} -> -> mdB2 = E m(B x){ return x[B.f1 D][D.f2 F]} 11/26/2018

27 Compositionality Compositional analysis: Compositional compilation:
analyze source code fragments separately put them together finish analysis of the whole without reanalyzing the fragments Compositional compilation: typecheck source code fragments separately -> generate corresponding binaries link together fragments whose mutual constraints are satisfied, without reinspecting the code 11/26/2018

28 Compositional compilation: IDEA
Compile fragments separately Generate bytecode with type variables constraints –> relate the type variables Put the constraints together (particular order) Solve the constraints –> substitution Put the bytecode together Apply the substitution Done! 11/26/2018

29 Compositional compilation
How good is it? We are not sure yet, but it looks promising. My work: Try to apply it for FGJ. 11/26/2018

30 Topics of Discussion Programming Languages (PLs) and Formal Models
Case study: Java - Featherweight Java (FJ) Extension: Generic Java (1.5 beta) – Featherweight Generic Java (FGJ) Some properties: compositionality ... Related work 11/26/2018

31 Generic Java Version: 1.5 beta Parametric polymorphism
Uses the standard JVM Backward & Forward compatibility with old code. 11/26/2018

32 FGJ: class declaration examples
11/26/2018

33 FGJ: term examples 11/26/2018

34 Homogeneous vs Heterogeneous polymorphism
Description One piece of code: handles all instances of a generic class Stack<T> ---> Stack Object < ---> T problem: raw types The template: rewritten as specialized code for each unique set of parameters Examples Generic Java, ML C++ (templates) Byte code size Small Large: linear in size of parameter combinations Type semantics Clear Blurred: the complier does not know the classes derive from the same template generic class can not be rewritten Speed Slow: runtime cast Fast: no additional casts 11/26/2018

35 Generic Java (GJ) No explicit type arguments to a generic method:
parsing problem “e.m<A,B>(e’)”  “e.m<A”, “B>(e’)” Performs parameter inference: has a least type 11/26/2018

36 Featherweight Generic Java (FGJ)
FJ extended with generic classes Not a subset of GJ: requires type arguments to generic methods Not concerned with parameter inference 11/26/2018

37 FGJ: syntax & subtyping rules
11/26/2018

38 FGJ: auxiliary functions
11/26/2018

39 FGJ 11/26/2018

40 FGJ 11/26/2018

41 FGJ: expression typing
11/26/2018

42 FGJ: expression typing
11/26/2018

43 FGJ: evaluation rules 11/26/2018

44 FGJ: results 11/26/2018

45 Topics of Discussion Programming Languages (PLs) and Formal Models
Case study: Java - Featherweight Java (FJ) Extension: Generic Java (1.5 beta) – Featherweight Generic Java (FGJ) Some properties: compositionality ... Related work 11/26/2018

46 Related work “Types and Programming Languages” by B.C.Pierce
“Featherweight Java – A Minimal Core Calculus for Java and GJ” by Atsushi Igarashi, Benjamin C. Pierce, Philip Wadler “GJ Specification” by Gilad Bracha, Martin Odersky, David Stoutamire, Philid Wadler “Bringing Genericity to Java” by David W. Dunham “Polymorphic Bytecode: Compositional Compilation for Java-like Languages” by D. Anacona, S. Drossopoulou, F. Damiani, E. Zucca 11/26/2018


Download ppt "Formal Models for Programming Languages"

Similar presentations


Ads by Google