Static and Dynamic Type Checking: A Synopsis. Ronald Garcia University of British Columbia
|
|
- Brianne Eaton
- 7 years ago
- Views:
Transcription
1 Static and Dynamic Type Checking: A Synopsis Ronald Garcia University of British Columbia 1
2 Trends in Functional Programming, Volume 8 Selected papers from the Eighth Symposium on Trends in Functional Programming (TFP07), New York City, USA, April 2-4, Marco T. Morazán (editor) Intellect, Bristol, UK. ISBN Table of Contents Space-Efficient Gradual Typing 1-18 Best Student David Herman and Aaron Tomb and Cormac Flanagan Paper A Metalanguage for Structural Operational Semantics Matthew Lakin and Andrew Pitts AHA: Amortized Heap Space Usage Analysis Marko van Eekelen and Olha Shkaravska and Ron van Kesteren and Bart Jacobs and Erik Poll and Sjaak Smetsers Unifying Hybrid Types and Contracts Jessica Gronski and Cormac Flanagan 2
3 Trends in Functional Programming, Volume 8 Selected papers from the Eighth Symposium on Trends in Functional Programming (TFP07), New York City, USA, April 2-4, Marco T. Morazán (editor) Intellect, Bristol, UK. ISBN Table of Contents Space-Efficient Gradual Typing 1-18 Best Student David Herman and Aaron Tomb and Cormac Flanagan Paper A Metalanguage for Structural Operational Semantics Matthew Lakin and Andrew Pitts AHA: Amortized Heap Space Usage Analysis Marko van Eekelen and Olha Shkaravska and Ron van Kesteren and Bart Jacobs and Erik Poll and Sjaak Smetsers Unifying Hybrid Types and Contracts Jessica Gronski and Cormac Flanagan 3
4 Trends in Functional Programming, Volume 8 Selected papers from the Eighth Symposium on Trends in Functional Programming (TFP07), New York City, USA, April 2-4, Marco T. Morazán (editor) Intellect, Bristol, UK. ISBN Table of Contents Space-Efficient Gradual Typing 1-18 Best Student David Herman and Aaron Tomb and Cormac Flanagan Paper A Metalanguage for Structural Operational Semantics Matthew Lakin and Andrew Pitts AHA: Amortized Heap Space Usage Analysis Marko van Eekelen and Olha Shkaravska and Ron van Kesteren and Bart Jacobs and Erik Poll and Sjaak Smetsers Unifying Hybrid Types and Contracts Jessica Gronski and Cormac Flanagan 4
5 Gradual Typing Static Checking: (Robustness) Dynamic Checking: (Agility) Complementary Disciplines 5
6 Typing, Gradually struct Point { x } fun move(p, dx) { } Point(p.x + dx) let a = 1 p = Point(7) in move(p,a) 6
7 Typing, Gradually struct Point { x : int } fun move(p, dx) { } Point(p.x + dx) let a = 1 p = Point(7) in move(p,a) 7
8 Typing, Gradually struct Point { x : int } fun move(p : Point, dx) { } Point(p.x + dx) let a = 1 p = Point(7) in move(p,a) 8
9 Typing, Gradually struct Point { x : int } fun move(p : Point, dx : int) { Point(p.x + dx) } More Annotations let a : int = 1 p : Point = Point(7) in move(p,a) = More Static Checks! 9
10 Typing, Gradually if (SomethingTrue()) { x = 7.0 } else { x = Good Grief! } y = sqrt(x) Flexibility On Demand! 10
11 Static Languages Recurring Trend Dynamic Languages Haskell 11 Scheme
12 Static Languages Recurring Trend Dynamic Languages DLR DuctileJ Haskell Deferred Type Errors 12 Racket Scheme
13 Facebook wanted its coders to keep moving fast in the comfort of their native tongue, but it didn t want them to have to break things as they did it. James Somers, Toolkits for the Mind Technology Review, April 2, 2015
14 Why would I want to use it? When you re prototyping, you may not want the compiler bothering you about broken code that you don t care about. Or you may want to use duck typing while you re fleshing out the design of your interfaces DuctileJ homepage DuctileJ
15 Lots of Theories Hybrid Type Checking Dynamic typing: Quasi-static Typing Gradual Typing 15
16 Lots of Theories Hybrid Type Checking Dynamic typing: Quasi-static Typing Gradual Typing 16
17 Synopsis 17
18 Synopsis Levels of Reading: Elementary Inspectional Analytical Synoptical 18
19 Synopsis The difficulty begins as soon as we examine the phrase two or more books on the same subject. 19
20 Synopsis The difficulty begins as soon as we examine the phrase two or more books on the same subject. What do we mean by same subject? 20
21 Structure of the Talk Synopsis: Dynamic and Static Type Checking Focus: Gradual Information-Flow Typing 21
22 1: Which Comes First?! 22
23 A Theory of Type Polymorphism in Programming ROBIN MILNER Computer Science Department, Vm+ersity of Edinburgh, Edinburgh, Scotland Received October 10, 1977; revised April 19,
24 A Theory of Type Polymorphism e..- a*- x I(ee )l ife then e else e 1 Ax-eIfixx*ejletx=eine. b[(e,e,)]v = vl E F -+ (vz E W - wrong, (q I F)v,), wrong where vi is 6[e& (i = 1, 2). a[$ e, then e2 else e,]r] = vl E B, -+ (vl 1 B, -+ v2, vj, wrong where vi is &[e& (i = 1, 2, 3) S@X. en7 = (A0. S/p] 77(2)/x)) in V &jj-ji~ x - e]7j = Y(hv - b~el7){7$}) b[zet x = e, in e,jq = v1 E W-+ wrong, b[e2] 7.1&/x} where q = &[e&. 24
25 A Theory of Type Polymorphism e..- a*- x I(ee )l ife then e else e 1 Ax-eIfixx*ejletx=eine. b[(e,e,)]v = vl E F -+ (vz E W - wrong, (q I F)v,), wrong where vi is 6[e& (i = 1, 2). a[$ e, then e2 else e,]r] = vl E B, -+ (vl 1 B, -+ v2, vj, wrong where vi is &[e& (i = 1, 2, 3) S@X. en7 = (A0. S/p] 77(2)/x)) in V &jj-ji~ x - e]7j = Y(hv - b~el7){7$}) b[zet x = e, in e,jq = v1 E W-+ wrong, b[e2] 7.1&/x} where q = &[e&. Starts with a Dynamic Language! 25
26 A Theory of Type Polymorphism discipline. A Semantic Soundness Theorem (based on a formal semantics for the language) states that well-type programs cannot go wrong and a Syntactic Soundness Theorem states that if fl accepts a program then it is well typed. We also discuss extending these THEOREM 1 (Semantic Soundness). If 7 respects jj and p 1 & is well typed then &[djt : 7. i.e., If = : and ` t : T then = ˆ (t) :T. 26
27 A Theory of Type Polymorphism discipline. A Semantic Soundness Theorem (based on a formal semantics for the language) states that well-type programs cannot go wrong and a Syntactic Soundness Theorem states that if fl accepts a program then it is well typed. We also discuss extending these THEOREM 1 (Semantic Soundness). If 7 respects jj and p 1 & is well typed then &[djt : 7. i.e., If = : and ` t : T then = ˆ (t) :T. i.e., If ` t : T then = t : T. 27
28 A Theory of Type Polymorphism discipline. A Semantic Soundness Theorem (based on a formal semantics for the language) states that well-type programs cannot go wrong and a Syntactic Soundness Theorem states that if fl accepts a program then it is well typed. We also discuss extending these THEOREM 1 (Semantic Soundness). If 7 respects jj and p 1 & is well typed then &[djt : 7. i.e., If = : and ` t : T then = ˆ (t) :T. i.e., If ` t : T then = t : T. Proof Theory BNF on steroids 28
29 A Theory of Type Polymorphism discipline. A Semantic Soundness Theorem (based on a formal semantics for the language) states that well-type programs cannot go wrong and a Syntactic Soundness Theorem states that if fl accepts a program then it is well typed. We also discuss extending these THEOREM 1 (Semantic Soundness). If 7 respects jj and p 1 & is well typed then &[djt : 7. i.e., If = : and ` t : T then = ˆ (t) :T. i.e., If ` t : T then = t : T. Formal claim about Execution Model Theory 29
30 1996 John C. Mitchell 30
31 1996 John C. Mitchell 31
32 1993 (née 1969) 32
33 What do types mean? - From intrinsic to extrinsic semantics Jobn C. Reynolds 2003 [[D :: ` t : T ]] [[t]] Intrinsic Semantics Extrinsic Semantics 33
34 2: Mixing Static and Dynamic Checking! 34
35 PLDI 1991 A Practical Soft Type System for Scheme ANDREW K. WRIGHT NEC Research Institute and ROBERT CARTWRIGHT Rice University TOPLAS
36 Soft Typing Extend Milner 1978 with: constructor types bare union types equi-recursive types union-induced subtyping 36
37 Soft Typing Program Type-Directed Coercion Insertion Dynamic Program 1991: Extrinsic, Denotational 1997: Intrinsic Operational 37
38 Quasi-static (Preliminary Typing Report) Satish R. Thatte* Department of Mathematics and Computer Science Clarkson University, Potsdam, NY POPL 1990 sarily goes wrong at run-time. Given the undecidability of semantically complete typechecking for most languages, a system that permits ill-typing proofs has to make a three way division of programs into welltyped, ill-typed, and ambivalent ones. Such a system 38
39 Quasi-static Typing Lack of Information Type T<: All types are a subtypes of the Omega type r 5 R. 39
40 Quasi-static Typing ` t 1 : T 1! T 2 ` t 2 : T 3 T 1 <: T 3 ` t 1 t 2 : T 2 ` t 1 : ` t 2 : T 3 ` t 1 t 2 : Automatic Downcasts 40
41 Quasi-static Typing ` t 1 : T 1! T 2 ` t 2 : T 3 T 1 <: T 3 ` t 1 t 2 : T 2 ` t 1 : ` t 2 : T 3 [T 3! <: ] ` t 1 t 2 : Automatic Downcasts 41
42 Quasi-static Typing ` t 1 : T 1! T 2 ` t 2 : T 3 T 1 <: T 3 ` t 1 t 2 : T 2 ` t 1 : ` t 2 : T 3 [T 3! <: ] ` t 1 t 2 : Automatic Downcasts (Nearly) Every Program Type Checks 42
43 Quasi-Static Typing Program Type-Directed Coercion Insertion Dynamic Program Plausibility Checking Quasi-Static Program Type Error! 43
44 Hybrid Type Checking KENNETH KNOWLES CORMAC FLANAGAN University of California at Santa Cruz POPL 2006, TOPLAS 2009 Ill-typed programs Well-typed programs Clearly ill-typed Subtle programs Clearly well-typed Rejected by type checker Accepted Accepted without casts with casts Casts Casts may never fail fail 44
45 Hybrid Type Checking h i S, T ::= x:s! T {x:b t} First-order Subset Types First-Order Type Boolean Term 45
46 Hybrid Type Checking h i S, T ::= x:s! T {x:b t} Dependent Function Types 46
47 Hybrid Type Checking ` { } Subtyping E ` S<: T E ` T 1 <: S 1 E,x : T 1 ` S 2 <: T 2 E ` (x:s 1! S 2 ) <: (x:t 1! T 2 ) E,x : B ` s ) t E ` {x:b s} <: {x:b t} [S-Arrow] [S-Base] Boolean Term Entailment Undecidable Subtyping Judgment 47
48 Hybrid Type Checking 3-valued Subtyping Procedure E `aalg S<:! T a 2 { p,,?} { } Yes No Maybe 48
49 Hybrid Type Checking Program Type-Directed Coercion Insertion Hybrid Program `! # E ` s,! t : S E `?alg S<: T E ` s,! ht / Si t # T 49
50 Gradual Typing for Functional Languages Jeremy G. Siek University of Colorado Walid Taha Rice University 50
51 Gradual Typing for Functional Languages Jeremy G. Siek University of Colorado Walid Taha Rice University Static Types Gradual Types T ::= B T! T et ::= B? e T! e T 51 The Unknown Type
52 Gradual Typing static type equality Int = Int Bool = Bool Int! Bool 6= Bool! Int extend gradual type consistency Int Int Bool Bool Int! Bool 6 Bool! Int? Bool?! Bool Bool!? Consistency conservatively extends equality 52
53 Gradual Typing replace equality with consistency ` t 1 : Int ` t 2 : Int ` t 1 + t 2 : Int ` t 1 : T f 1 T1 f Int ` t 2 : T f 2 T2 f Int ` t 1 + t 2 : Int 53
54 Dynamic Checking Static Semantics Gradual Language Type-Directed Translation Dynamic Semantics Cast Language 54
55 Many Many More! 55
56 Synthesis Intrinsic vs. Extrinsic Typing Accept All Programs vs. Reject Ill-Typed Type-directed Translation is Ubiquitous Subtyping vs. Consistency Dynamic, Simple, Refinement Typing It s all relative! 56
57 3: Gradual Information-Flow Typing!! sec 57
58 erating tems R.S. Gaines Editor A Lattice Model of ecure Information low rothy E. Denning rdue University [CACM 1976] 58
59 Security as a Lattice Classification Permitted Readers Zdancewic. Programming Languages for Information Security 59
60 Security as a Lattice Low-security information may flow to high-security contexts Zdancewic. Programming Languages for Information Security 60
61 Security as a Lattice High-security information may not flow to low-security contexts Zdancewic. Programming Languages for Information Security 61
62 Example let age : Int = 31 let salary : Int = let inttostring : Int! String =... let print : String! Unit =... print(inttostring(salary)) Disney and Flanagan. Gradual Information Flow Typing 62
63 Example Low Security Data let age : Int = 31 let salary : Int = let inttostring : Int! String =... let print : String! Unit =... print(inttostring(salary)) Disney and Flanagan. Gradual Information Flow Typing 63
64 Example Low Security Data let age : Int = 31 let salary : Int = let inttostring : Int! String =... let print : String! Unit =... print(inttostring(salary)) High Security Data Disney and Flanagan. Gradual Information Flow Typing 64
65 Example Low Security Data let age : Int = 31 let salary : Int = let inttostring : Int! String =... let print : String! Unit =... print(inttostring(salary)) High Security Data Low Security Channel Disney and Flanagan. Gradual Information Flow Typing 65
66 Example Low Security Data let age : Int = 31 let salary : Int = let inttostring : Int! String =... let print : String! Unit =... print(inttostring(salary)) High Security Data Low Security Channel Security Leak!! Unchecked Semantic Error Disney and Flanagan. Gradual Information Flow Typing 66
67 Security Typing Int! Int Simple Type Structure 67
68 Security Typing Higher Security Lower Security Int H! L Int H Security-Indexed Type Constructors 68
69 Security Typing Higher Security Lower Security Int L <: Int H Int H! L Int L <: Int L! H Int H Induced Subtyping Structure 69
70 Example let age : Int = 31 let salary : Int = let inttostring : Int! String =... let print : String! Unit =... print(inttostring(salary)) Security Leak!! Unchecked Semantic Error Disney and Flanagan. Gradual Information Flow Typing 70
71 Example let age : IntL = 31 let salary : IntH = let inttostring : IntL!L StringL =... let print : StringL!L UnitL =... print(inttostring(salary)) Type Error Checked Semantic Error Disney and Flanagan. Gradual Information Flow Typing 71
72 Example let age : IntL = 31 let salary : IntH = let inttostring : IntL!L StringL =... let print : StringL!L UnitL =... print(inttostring(age)) Security Typed Disney and Flanagan. Gradual Information Flow Typing 72
73 Implicit Security Flows High-Security information can affect the control flow of a program, and thereby leak information. Upgrade the security of the results of high-value computations. 73
74 Implicit Security Flows fun b : BoolH => let tt : BoolL = true let ff : BoolL = false if b then tt else ff High-Security data can affect control flow of a program 74
75 Effects Can Leak Information High-Security values can flow from a computation via mutable reference cells 75
76 Security Typing Int H! L Int H ; ` t : S 76
77 Security Typing Int H L!L Int H ; ; ` ` t : S Latent Security Effects 77
78 Security Typing Gap Simple Typing Security Typing 78
79 Security Typing Gap Simple Typing + Dynamic Information-Flow Security Typing 79
80 Gradual Typing! Simple Typing Gradual Information Flow Typing Tim Disney and Cormac Flanagan University of California Santa Cruz Security Typing [STOP 2011] 80
81 Security Lattice 81
82 Security Lattice Dynamic Security as Top 82
83 Example let age : Int = 31 let salary : Int = let inttostring : Int! String =... let print : String! Unit =... print(inttostring(salary)) Disney and Flanagan. Gradual Information Flow Typing 83
84 Dynamic Program let age : Int? = 31 let salary : Int? = let inttostring : Int?!? String? =... let print : String?!? Unit? =... print(inttostring(salary)) Disney and Flanagan. Gradual Information Flow Typing 84
85 Gradual Program let age : Int? = 31 let salary : IntH = let inttostring : Int?!? String? =... let print : StringL!? Unit? =... print((stringl)inttostring(salary)) Disney and Flanagan. Gradual Information Flow Typing 85
86 Gradual Program let age : Int? = 31 let salary : IntH = let inttostring : Int?!? String? =... let print : StringL!? Unit? =... print((stringl)inttostring(salary)) Static Security Labels Disney and Flanagan. Gradual Information Flow Typing 86
87 Gradual Program let age : Int? = 31 let salary : IntH = let inttostring : Int?!? String? =... let print : StringL!? Unit? =... print((stringl)inttostring(salary)) Explicit Runtime Downcasts closer to Quasi-static than Gradual Disney and Flanagan. Gradual Information Flow Typing 87
88 Quasi-Static Style Program Type-Directed Coercion Insertion Dynamic Program Plausibility Checking Quasi-Static Program Type Error! 88
89 Gradual Information Flow Me Éric Tanter Matías Toro (A Whirlwind Tour) 89
90 static type system & type safety proof interpretation of gradual types Abstracting Gradual Typing Ronald Garcia Alison M. Clark Software Practices Lab Department of Computer Science University of British Columbia, Canada Éric Tanter PLEIAD Laboratory Computer Science Department (DCC) University of Chile, Chile POPL 2016 gradual language TYPE SYSTEM DYNAMIC SEMANTICS 90
91 Gradual Security ` 2 Label è 2 GLabel ::= `? Unknown Label 91
92 Interpret Gradual Labels : GLabel! P(Label) (L) ={L} (H) ={H} (?) = Label Concretization 92
93 Interpret Gradual Labels : GLabel! P(Label) (L) =L (H) =H (?) = Label : P(Label) * GLabel ({L}) =L ({L, H}) =? Abstraction 93
94 Gradual Label Precision e l v e l 94
95 Gradual Label Precision e l v e l ( e l 1 ) ( e l 2 ) 95
96 Consistent Ordering e l e4 e l l 1 4 l 2 for some l 1 2 ( e l 1 ),l 1 2 ( e l 1 ) 96
97 Consistent Ordering L e4 H L 6e4 H L e4 L? e4 L L e4? Not really an order 97
98 Lifted Join e l e e l ( ( e l 1 ) ( e l 2 )) 98
99 Lifted Join L e H = H H e H = H? e H =? 99
100 Interpret Gradual Types : GType! P(Type) (Int? )={Int?, Int L, Int H, Int > } Concretization 100
101 Interpret Gradual Types : GType! P(Type) (Int? )={Int?, Int L, Int H, Int > } : P(Type) * GType ({Int L })=Int L ({Int L, Int H })=Int? Abstraction 101
102 Lifting Judgments Subtyping T<: T Consistent Subtyping et. e T 102
103 Lifting Typing Rules `0 ; ; `c ` t 1 : T 11 T!`x 12 ; ; `c ` t 2 : T 2 S 2 <: S 11 `c `x 4 `0 ; ; `c ` t 1 t 2 : T 12 `x ; ; è c ` et 1 : T e è0 11 T!`x 12 ; ; è c ` et 2 : T e 2 et 2. e T 11 èc ; ; è c ` et 1 et 2 : e T 12 e è x ^è x v è0 103
104 Lift Type Safety Argument D =) D 0 ` t : T t 7! t 0 Preservation Theorem 104 ` t 0 : T
105 Gradual Program let age : Int? = 31 let salary : IntH = let inttostring : Int?!? String? =... let print : StringL!? Unit? =... print((stringl)inttostring(salary)) No Casts Necessary! Disney and Flanagan. Gradual Information Flow Typing 105
106 106
107 Conclusion Hybrid Type Checking Dynamic typing: Quasi-static Typing Gradual Typing 107
108 Conclusion Hybrid Type Checking Dynamic typing: Quasi-static Typing Gradual Typing 108
109 Synopsis it is in a sense true that the identification of the subject matter must follow the reading, not precede it. 109
The gradual typing approach to mixing static and dynamic typing
1/38 The gradual typing approach to mixing static and dynamic typing Jeremy G. Siek University of Colorado =) Indiana University TFP 2013 at Provo, Utah, May 2013 The Goals of Gradual Typing I Enjoy the
More informationWell-typed programs can t be blamed
Well-typed programs can t be blamed Philip Wadler University of Edinburgh Robert Bruce Findler University of Chicago Abstract We introduce the blame calculus, which adds the notion of blame from Findler
More informationHybrid Type Checking
Hybrid Type Checking Cormac Flanagan Department of Computer Science University of California, Santa Cruz cormac@cs.ucsc.edu Abstract Traditional static type systems are very effective for verifying basic
More informationSage: Unified Hybrid Checking for First-Class Types, General Refinement Types, and Dynamic (Extended Report)
Sage: Unified Hybrid Checking for First-Class Types, General Refinement Types, and Dynamic (Extended Report) Kenneth Knowles Aaron Tomb Jessica Gronski Stephen N. Freund Cormac Flanagan University of California,
More informationSemester Review. CSC 301, Fall 2015
Semester Review CSC 301, Fall 2015 Programming Language Classes There are many different programming language classes, but four classes or paradigms stand out:! Imperative Languages! assignment and iteration!
More informationLecture 18-19 Data Types and Types of a Language
Lecture 18-19 Data Types and Types of a Language April 29, 2014 Data Types and Types of a Language Data, Data Types and Types Type: Generalities Type Systems and Type Safety Type Equivalence, Coercion
More informationTypes, Polymorphism, and Type Reconstruction
Types, Polymorphism, and Type Reconstruction Sources This material is based on the following sources: Pierce, B.C., Types and Programming Languages. MIT Press, 2002. Kanellakis, P.C., Mairson, H.G. and
More informationA Type System for Data-Flow Integrity on Windows Vista
A Type System for Data-Flow Integrity on Windows Vista Avik Chaudhuri University of California at Santa Cruz avik@cs.ucsc.edu Prasad Naldurg Sriram Rajamani Microsoft Research India {prasadn,sriram}@microsoft.com
More informationPOLYTYPIC PROGRAMMING OR: Programming Language Theory is Helpful
POLYTYPIC PROGRAMMING OR: Programming Language Theory is Helpful RALF HINZE Institute of Information and Computing Sciences Utrecht University Email: ralf@cs.uu.nl Homepage: http://www.cs.uu.nl/~ralf/
More informationIntegrating Typed and Untyped Code in a Scripting Language
Integrating Typed and Untyped Code in a Scripting Language Tobias Wrigstad Francesco Zappa Nardelli Sylvain Lebresne Johan Östlund Jan Vitek PURDUE UNIVERSITY INRIA Abstract Many large software systems
More informationHybrid Types, Invariants, and Refinements For Imperative Objects
Hybrid Types, Invariants, and Refinements For Imperative Objects Cormac Flanagan Department of Computer Science University of California, Santa Cruz Stephen N. Freund Department of Computer Science Williams
More informationA SOUND TYPE SYSTEM FOR SECURE FLOW ANALYSIS
Journal of Computer Security draft printout, (17 Sep 2009), 1 20 IOS Press 1 A SOUND TYPE SYSTEM FOR SECURE FLOW ANALYSIS Dennis Volpano Computer Science Department Naval Postgraduate School Monterey,
More informationSemantic Analysis: Types and Type Checking
Semantic Analysis Semantic Analysis: Types and Type Checking CS 471 October 10, 2007 Source code Lexical Analysis tokens Syntactic Analysis AST Semantic Analysis AST Intermediate Code Gen lexical errors
More informationFunctional Programming. Functional Programming Languages. Chapter 14. Introduction
Functional Programming Languages Chapter 14 Introduction Functional programming paradigm History Features and concepts Examples: Lisp ML 1 2 Functional Programming Functional Programming Languages The
More informationLab Experience 17. Programming Language Translation
Lab Experience 17 Programming Language Translation Objectives Gain insight into the translation process for converting one virtual machine to another See the process by which an assembler translates assembly
More informationHarmless Advice. Daniel S Dantas Princeton University. with David Walker
Harmless Advice Daniel S Dantas Princeton University with David Walker Aspect Oriented Programming Aspect Oriented Programming IBM - 2004 IBM reports positive results in aspect-oriented programming experiments
More informationCS-XXX: Graduate Programming Languages. Lecture 25 Multiple Inheritance and Interfaces. Dan Grossman 2012
CS-XXX: Graduate Programming Languages Lecture 25 Multiple Inheritance and Interfaces Dan Grossman 2012 Multiple Inheritance Why not allow class C extends C1,C2,...{...} (and C C1 and C C2)? What everyone
More informationJournal of Functional Programming, volume 3 number 4, 1993. Dynamics in ML
Journal of Functional Programming, volume 3 number 4, 1993. Dynamics in ML Xavier Leroy École Normale Supérieure Michel Mauny INRIA Rocquencourt Abstract Objects with dynamic types allow the integration
More informationProgramming Languages Featherweight Java David Walker
Programming Languages Featherweight Java David Walker Overview Featherweight Java (FJ), a minimal Javalike language. Models inheritance and subtyping. Immutable objects: no mutation of fields. Trivialized
More informationClass 16: Function Parameters and Polymorphism
Class 16: Function Parameters and Polymorphism SI 413 - Programming Languages and Implementation Dr. Daniel S. Roche United States Naval Academy Fall 2011 Roche (USNA) SI413 - Class 16 Fall 2011 1 / 15
More informationAspect-Oriented Programming with Type Classes
Aspect-Oriented Programming with Type Classes Martin Sulzmann School of Computing, National University of Singapore S16 Level 5, 3 Science Drive 2, Singapore 117543 sulzmann@comp.nus.edu.sg Meng Wang School
More informationVisualizing Information Flow through C Programs
Visualizing Information Flow through C Programs Joe Hurd, Aaron Tomb and David Burke Galois, Inc. {joe,atomb,davidb}@galois.com Systems Software Verification Workshop 7 October 2010 Joe Hurd, Aaron Tomb
More informationOrganization of DSLE part. Overview of DSLE. Model driven software engineering. Engineering. Tooling. Topics:
Organization of DSLE part Domain Specific Language Engineering Tooling Eclipse plus EMF Xtext, Xtend, Xpand, QVTo and ATL Prof.dr. Mark van den Brand GLT 2010/11 Topics: Meta-modeling Model transformations
More informationDeterministic Discrete Modeling
Deterministic Discrete Modeling Formal Semantics of Firewalls in Isabelle/HOL Cornelius Diekmann, M.Sc. Dr. Heiko Niedermayer Prof. Dr.-Ing. Georg Carle Lehrstuhl für Netzarchitekturen und Netzdienste
More informationIntroduction to type systems
Introduction to type systems p. 1/5 Introductory Course on Logic and Automata Theory Introduction to type systems Polyvios.Pratikakis@imag.fr Based on slides by Jeff Foster, UMD Introduction to type systems
More informationSoftware Testing & Analysis (F22ST3): Static Analysis Techniques 2. Andrew Ireland
Software Testing & Analysis (F22ST3) Static Analysis Techniques Andrew Ireland School of Mathematical and Computer Science Heriot-Watt University Edinburgh Software Testing & Analysis (F22ST3): Static
More informationFormal Languages and Automata Theory - Regular Expressions and Finite Automata -
Formal Languages and Automata Theory - Regular Expressions and Finite Automata - Samarjit Chakraborty Computer Engineering and Networks Laboratory Swiss Federal Institute of Technology (ETH) Zürich March
More informationMoving from CS 61A Scheme to CS 61B Java
Moving from CS 61A Scheme to CS 61B Java Introduction Java is an object-oriented language. This document describes some of the differences between object-oriented programming in Scheme (which we hope you
More informationChapter 5 Names, Bindings, Type Checking, and Scopes
Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Topics Introduction Names Variables The Concept of Binding Type Checking Strong Typing Scope Scope and Lifetime Referencing Environments Named
More informationTyped Lua: An Optional Type System for Lua
Typed Lua: An Optional Type System for Lua André Murbach Maidl PUC-Rio Rio de Janeiro, Brazil amaidl@inf.puc-rio.br Fabio Mascarenhas UFRJ Rio de Janeiro, Brazil mascarenhas@ufrj.br Roberto Ierusalimschy
More informationType Classes with Functional Dependencies
Appears in Proceedings of the 9th European Symposium on Programming, ESOP 2000, Berlin, Germany, March 2000, Springer-Verlag LNCS 1782. Type Classes with Functional Dependencies Mark P. Jones Department
More informationMain Question 1: How and where do you or your family use the Internet - whether on a computer or a cell phone? Follow up questions for INTERNET USERS
TABLE 1: Current Internet use Main Question 1: How and where do you or your family use the Internet - whether on a computer or a cell phone? Follow up questions for INTERNET USERS 1. What do you use to
More information15-150 Lecture 11: Tail Recursion; Continuations
15-150 Lecture 11: Tail Recursion; Continuations Lecture by Dan Licata February 21, 2011 In this lecture we will discuss space usage: analyzing the memory it takes your program to run tail calls and tail
More informationBeyond the Mouse A Short Course on Programming
1 / 22 Beyond the Mouse A Short Course on Programming 2. Fundamental Programming Principles I: Variables and Data Types Ronni Grapenthin Geophysical Institute, University of Alaska Fairbanks September
More informationProgramming Language Rankings. Lecture 15: Type Inference, polymorphism & Type Classes. Top Combined. Tiobe Index. CSC 131! Fall, 2014!
Programming Language Rankings Lecture 15: Type Inference, polymorphism & Type Classes CSC 131 Fall, 2014 Kim Bruce Top Combined Tiobe Index 1. JavaScript (+1) 2. Java (-1) 3. PHP 4. C# (+2) 5. Python (-1)
More informationSources: On the Web: Slides will be available on:
C programming Introduction The basics of algorithms Structure of a C code, compilation step Constant, variable type, variable scope Expression and operators: assignment, arithmetic operators, comparison,
More informationAdding GADTs to OCaml the direct approach
Adding GADTs to OCaml the direct approach Jacques Garrigue & Jacques Le Normand Nagoya University / LexiFi (Paris) https://sites.google.com/site/ocamlgadt/ Garrigue & Le Normand Adding GADTs to OCaml 1
More informationLiveWeb Core Language for Web Applications. CITI Departamento de Informática FCT/UNL
LiveWeb Core Language for Web Applications Miguel Domingues João Costa Seco CITI Departamento de Informática FCT/UNL Most Web Application Development is not Type Safe Heterogeneous development environments
More informationIntroducing Formal Methods. Software Engineering and Formal Methods
Introducing Formal Methods Formal Methods for Software Specification and Analysis: An Overview 1 Software Engineering and Formal Methods Every Software engineering methodology is based on a recommended
More informationCHAPTER 7 GENERAL PROOF SYSTEMS
CHAPTER 7 GENERAL PROOF SYSTEMS 1 Introduction Proof systems are built to prove statements. They can be thought as an inference machine with special statements, called provable statements, or sometimes
More informationBlame for All. Jeremy G. Siek. Amal Ahmed. Robert Bruce Findler. Philip Wadler. Abstract. 1. Introduction
Blame for All Amal Ahmed Indiana University amal@cs.indiana.edu Robert Bruce Findler Northwestern University robby@eecs.northwestern.edu Jeremy G. Siek University of Colorado at Boulder jeremy.siek@colorado.edu
More informationSymbol Tables. Introduction
Symbol Tables Introduction A compiler needs to collect and use information about the names appearing in the source program. This information is entered into a data structure called a symbol table. The
More informationIntegrating Formal Models into the Programming Languages Course
Integrating Formal Models into the Programming Languages Course Allen B. Tucker Robert E. Noonan Computer Science Department Computer Science Department Bowdoin College College of William and Mary Brunswick,
More informationChapter 3. Cartesian Products and Relations. 3.1 Cartesian Products
Chapter 3 Cartesian Products and Relations The material in this chapter is the first real encounter with abstraction. Relations are very general thing they are a special type of subset. After introducing
More informationChecks and Balances - Constraint Solving without Surprises in Object-Constraint Programming Languages
Checks and Balances - Constraint Solving without Surprises in Object-Constraint Programming Languages Tim Felgentreff, Todd Millstein, Alan Borning and Robert Hirschfeld Viewpoints Research Institute,
More informationFoundations of Access Control for Secure Storage
Foundations of Access Control for Secure Storage Thesis Proposal Avik Chaudhuri Computer Science Department University of California, Santa Cruz avik@cs.ucsc.edu Abstract Formal techniques have played
More informationopalang - Rapid & Secure Web Development
opalang - Rapid & Secure Web Development Syllabus Brief History of Web Development Ideas and Goals The Language itself Community Reason for Development Services and Apps written in OPA Future of OPA OPA
More informationUPDATES OF LOGIC PROGRAMS
Computing and Informatics, Vol. 20, 2001,????, V 2006-Nov-6 UPDATES OF LOGIC PROGRAMS Ján Šefránek Department of Applied Informatics, Faculty of Mathematics, Physics and Informatics, Comenius University,
More informationType Systems. Luca Cardelli. Microsoft Research
Type Systems Luca Cardelli Microsoft Research 1 Introduction The fundamental purpose of a type system is to prevent the occurrence of execution errors during the running of a program. This informal statement
More informationProgram Analysis: Theory and Practice
Introductions Program Analysis: Theory and Practice Who am I? About you? What do you want to get out of this class? Evan Chang Meeting 1: Welcome CSCI 7135, Fall 2010 http://www.cs.colorado.edu/~bec/courses/csci7135-f10/
More informationPROGRAM LOGICS FOR CERTIFIED COMPILERS
PROGRAM LOGICS FOR CERTIFIED COMPILERS Separation logic is the twenty-first-century variant of Hoare logic that permits verification of pointer-manipulating programs. This book covers practical and theoretical
More informationComputer Programming I
Computer Programming I COP 2210 Syllabus Spring Semester 2012 Instructor: Greg Shaw Office: ECS 313 (Engineering and Computer Science Bldg) Office Hours: Tuesday: 2:50 4:50, 7:45 8:30 Thursday: 2:50 4:50,
More informationSecurity types to the rescue
Security types to the rescue p. 1 Security types to the rescue David Wagner and Rob Johnson {daw,rtjohnso}@cs.berkeley.edu University of California, Berkeley Security types to the rescue p. 2 Problem statement
More informationHow To Write A Type System
Type Systems 1 Introduction Luca Cardelli Digital Equipment Corporation Systems Research Center The fundamental purpose of a type system is to prevent the occurrence of execution errors during the running
More informationOverview. Elements of Programming Languages. Advanced constructs. Motivating inner class example
Overview Elements of Programming Languages Lecture 12: Object-oriented functional programming James Cheney University of Edinburgh November 6, 2015 We ve now covered: basics of functional and imperative
More informationDetecting Pattern-Match Failures in Haskell. Neil Mitchell and Colin Runciman York University www.cs.york.ac.uk/~ndm/catch
Detecting Pattern-Match Failures in Haskell Neil Mitchell and Colin Runciman York University www.cs.york.ac.uk/~ndm/catch Does this code crash? risers [] = [] risers [x] = [[x]] risers (x:y:etc) = if x
More informationTesting LTL Formula Translation into Büchi Automata
Testing LTL Formula Translation into Büchi Automata Heikki Tauriainen and Keijo Heljanko Helsinki University of Technology, Laboratory for Theoretical Computer Science, P. O. Box 5400, FIN-02015 HUT, Finland
More informationObject-Oriented Design Lecture 4 CSU 370 Fall 2007 (Pucella) Tuesday, Sep 18, 2007
Object-Oriented Design Lecture 4 CSU 370 Fall 2007 (Pucella) Tuesday, Sep 18, 2007 The Java Type System By now, you have seen a fair amount of Java. Time to study in more depth the foundations of the language,
More information2! Multimedia Programming with! Python and SDL
2 Multimedia Programming with Python and SDL 2.1 Introduction to Python 2.2 SDL/Pygame: Multimedia/Game Frameworks for Python Literature: G. van Rossum and F. L. Drake, Jr., An Introduction to Python -
More informationObject-Oriented Software Specification in Programming Language Design and Implementation
Object-Oriented Software Specification in Programming Language Design and Implementation Barrett R. Bryant and Viswanathan Vaidyanathan Department of Computer and Information Sciences University of Alabama
More informationRegular Expressions and Automata using Haskell
Regular Expressions and Automata using Haskell Simon Thompson Computing Laboratory University of Kent at Canterbury January 2000 Contents 1 Introduction 2 2 Regular Expressions 2 3 Matching regular expressions
More informationRigorous Software Development CSCI-GA 3033-009
Rigorous Software Development CSCI-GA 3033-009 Instructor: Thomas Wies Spring 2013 Lecture 5 Disclaimer. These notes are derived from notes originally developed by Joseph Kiniry, Gary Leavens, Erik Poll,
More informationJava Interview Questions and Answers
1. What is the most important feature of Java? Java is a platform independent language. 2. What do you mean by platform independence? Platform independence means that we can write and compile the java
More informationChapter 7: Functional Programming Languages
Chapter 7: Functional Programming Languages Aarne Ranta Slides for the book Implementing Programming Languages. An Introduction to Compilers and Interpreters, College Publications, 2012. Fun: a language
More informationA Static Analyzer for Large Safety-Critical Software. Considered Programs and Semantics. Automatic Program Verification by Abstract Interpretation
PLDI 03 A Static Analyzer for Large Safety-Critical Software B. Blanchet, P. Cousot, R. Cousot, J. Feret L. Mauborgne, A. Miné, D. Monniaux,. Rival CNRS École normale supérieure École polytechnique Paris
More informationTranslating a Subset of OCaml into System F. Jonatha Protzenk under the dire ion of François Po ier
Translating a Subset of OCaml into System F Jonatha Protzenk under the dire ion of François Po ier June I Some background 1 Motivations Contents I Some background 2 1 Motivations 2 2 A high-level description
More informationReasoning about Safety Critical Java
Reasoning about Safety Critical Java Chris Marriott 27 th January 2011 Motivation Safety critical systems are becoming part of everyday life Failure can potentially lead to serious consequences Verification
More informationSchema Mappings and Data Exchange
Schema Mappings and Data Exchange Phokion G. Kolaitis University of California, Santa Cruz & IBM Research-Almaden EASSLC 2012 Southwest University August 2012 1 Logic and Databases Extensive interaction
More informationSafe Locking for Multi-threaded Java
Safe Locking for Multi-threaded Java Einar Broch Johnsen, Thi Mai Thuong Tran, Olaf Owe, Martin Steffen University of Oslo, Norway NWPT 10 10-12 November, 2010 Motivation Concurrency control mechanisms
More informationExtraction of certified programs with effects from proofs with monadic types in Coq
Extraction of certified programs with effects from proofs with monadic types in Coq Marino Miculan 1 and Marco Paviotti 2 1 Dept. of Mathematics and Computer Science, University of Udine, Italy 2 IT University
More informationComp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages. Corky Cartwright Swarat Chaudhuri November 30, 20111
Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages Corky Cartwright Swarat Chaudhuri November 30, 20111 Overview I In OO languages, data values (except for designated non-oo
More informationM/M/1 and M/M/m Queueing Systems
M/M/ and M/M/m Queueing Systems M. Veeraraghavan; March 20, 2004. Preliminaries. Kendall s notation: G/G/n/k queue G: General - can be any distribution. First letter: Arrival process; M: memoryless - exponential
More informationOrigin Tracking in Attribute Grammars
Origin Tracking in Attribute Grammars Kevin Williams and Eric Van Wyk University of Minnesota Stellenbosch, WG2.11, January 20-22, 2015 1 / 37 First, some advertising Multiple new faculty positions at
More informationOne-Stop-Shopping Investment For Retirement Planning
TARGET DATE RETIREMENT FUNDS One-Stop-Shopping Investment For Retirement Planning Investing for retirement can be challenging if you re not an expert. Here s a simple choice for your retirement investing...
More informationPluggable Type Systems. Gilad Bracha
Pluggable Type Systems Gilad Bracha The Paradox of Type Systems Type systems help reliability and security by mechanically proving program properties Type systems hurt reliability and security by making
More informationDocumenting questionnaires
Documenting questionnaires Jean-Pierre Kent and Leon Willenborg, Statistics Netherlands 1. Introduction The growing possibilities of Blaise III have led designers to build very complex survey instruments.
More informationSoftware Engineering Reference Framework
Software Engineering Reference Framework Michel Chaudron, Jan Friso Groote, Kees van Hee, Kees Hemerik, Lou Somers, Tom Verhoeff. Department of Mathematics and Computer Science Eindhoven University of
More informationUCSC Mathematics BA Graduates Academic Plans
Academic Plans No plans to apply pursue in the next 5 years Undecided Not applied, but intend to within the next 5 years Have applied, unknown acceptance Accepted, plan to defer Accepted and will start
More information1 Operational Semantics for While
Models of Computation, 2010 1 1 Operational Semantics for While The language While of simple while programs has a grammar consisting of three syntactic categories: numeric expressions, which represent
More informationA puzzle. Suppose that you want to run some JavaScript programs---all the cool kids are doing it.
A puzzle Suppose that you want to run some JavaScript programs---all the cool kids are doing it. However, you are deathly afraid that your mom/ significant other/boss will see the curse word b00 appear
More informationDiscrete Mathematics and Probability Theory Fall 2009 Satish Rao, David Tse Note 10
CS 70 Discrete Mathematics and Probability Theory Fall 2009 Satish Rao, David Tse Note 10 Introduction to Discrete Probability Probability theory has its origins in gambling analyzing card games, dice,
More informationUsing Questions to Promote Critical Thinking By Cindy McClung, coordinator for quality, and Bob Hoglund, president of Bob Hoglund Inc.
Using Questions to Promote Critical Thinking By Cindy McClung, coordinator for quality, and Bob Hoglund, president of Bob Hoglund Inc. Critical thinking occurs whenever you judge, decide or solve a problem.
More informationFundamentals of Programming Languages
A puzzle and a dilemma Suppose I want to capture/catch/slay crashing programs before they have a chance to run (=static type safety). Do I let this one go? let c = ref (fun x -> x) in c := (fun x -> x
More informationVIRTUAL LABORATORY: MULTI-STYLE CODE EDITOR
VIRTUAL LABORATORY: MULTI-STYLE CODE EDITOR Andrey V.Lyamin, State University of IT, Mechanics and Optics St. Petersburg, Russia Oleg E.Vashenkov, State University of IT, Mechanics and Optics, St.Petersburg,
More informationTýr: a dependent type system for spatial memory safety in LLVM
Týr: a dependent type system for spatial memory safety in LLVM Vítor De Araújo Álvaro Moreira (orientador) Rodrigo Machado (co-orientador) August 13, 2015 Vítor De Araújo Álvaro Moreira (orientador) Týr:
More informationQuality Risk Management
PS/INF 1/2010 * * Quality Risk Management Quality Risk Management Implementation of ICH Q9 in the pharmaceutical field an example of methodology from PIC/S Document > Authors: L. Viornery (AFSSAPS) Ph.
More informationAP English Language Research Project Assignment Created by Sandy Jameson, Nazareth Area High School, 2013
Assignment Created by Sandy Jameson, Nazareth Area High School, 2013 You will be creating an AP Exam style Synthesis Question. The Synthesis Question gives you several sources, and asks you to combine
More informationSoftware Engineering Tools and Methods
Software Engineering Tools and Methods Fernando Brito e Abreu (fba@di.fct.unl.pt) Universidade Nova de Lisboa (http://www.unl.pt) QUASAR Research Group (http://ctp.di.fct.unl.pt/quasar) SWEBOK: the 10
More information4 View Based Access Control
This chapter presents and discusses a declarative access control language designed to meet the manageability requirements introduced in the previous chapters. The language builds on the earlier publications
More informationTachyon: a Meta-circular Optimizing JavaScript Virtual Machine
Tachyon: a Meta-circular Optimizing JavaScript Virtual Machine Maxime Chevalier-Boisvert Erick Lavoie Marc Feeley Bruno Dufour {chevalma, lavoeric, feeley, dufour}@iro.umontreal.ca DIRO - Université de
More informationAutomatic Verification by Abstract Interpretation
Automatic Verification by Abstract Interpretation (Invited tutorial) Patrick Cousot École normale supérieure, Département d informatique, 45 rue d Ulm, 75230 Paris cedex 05, France Patrick.Cousot@ens.fr
More informationThe Clean programming language. Group 25, Jingui Li, Daren Tuzi
The Clean programming language Group 25, Jingui Li, Daren Tuzi The Clean programming language Overview The Clean programming language first appeared in 1987 and is still being further developed. It was
More informationA COOL AND PRACTICAL ALTERNATIVE TO TRADITIONAL HASH TABLES
A COOL AND PRACTICAL ALTERNATIVE TO TRADITIONAL HASH TABLES ULFAR ERLINGSSON, MARK MANASSE, FRANK MCSHERRY MICROSOFT RESEARCH SILICON VALLEY MOUNTAIN VIEW, CALIFORNIA, USA ABSTRACT Recent advances in the
More informationCSE 373: Data Structure & Algorithms Lecture 25: Programming Languages. Nicki Dell Spring 2014
CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages Nicki Dell Spring 2014 What is a Programming Language? A set of symbols and associated tools that translate (if necessary) collections
More informationSUBGROUPS OF CYCLIC GROUPS. 1. Introduction In a group G, we denote the (cyclic) group of powers of some g G by
SUBGROUPS OF CYCLIC GROUPS KEITH CONRAD 1. Introduction In a group G, we denote the (cyclic) group of powers of some g G by g = {g k : k Z}. If G = g, then G itself is cyclic, with g as a generator. Examples
More informationTechnical Assistance to Support Evidence-Based Policymaking: A Conversation With the Regional Comprehensive Centers
Technical Assistance to Support Evidence-Based Policymaking: A Conversation With the Regional Comprehensive Centers Facilitated By Betheny Gross November 2015 2015 Edvance Research, Inc. 53 the SEA of
More informationTesting, Debugging, and Verification
Testing, Debugging, and Verification Testing, Part II Moa Johansson 10 November 2014 TDV: Testing /GU 141110 1 / 42 Admin Make sure you are registered for the course. Otherwise your marks cannot be recorded.
More informationBBA to Become a Real Business Manager
Academic Plans No plans to apply pursue in the next 5 years Undecided Not applied, but intend to within the next 5 years Have applied, unknown acceptance Accepted, plan to defer Accepted and will start
More informationA STUDY OF SEMANTICS, TYPES AND LANGUAGES FOR DATABASES AND OBJECT-ORIENTED PROGRAMMING ATSUSHI OHORI. Computer and Information Science
A STUDY OF SEMANTICS, TYPES AND LANGUAGES FOR DATABASES AND OBJECT-ORIENTED PROGRAMMING ATSUSHI OHORI A DISSERTATION in Computer and Information Science Presented to the Faculties of the University of
More informationProgramming and Reasoning with Algebraic Effects and Dependent Types
Programming and Reasoning with Algebraic Effects and Dependent Types Edwin C. Brady School of Computer Science, University of St Andrews, St Andrews, Scotland. Email: ecb10@st-andrews.ac.uk Abstract One
More information