A Type System for Functional Traversal-Based Aspects

Size: px
Start display at page:

Download "A Type System for Functional Traversal-Based Aspects"

Transcription

1 A Type System for Functional Traversal-Based Aspects Bryan Chadwick and Karl Lieberherr March 2 nd / 30

2 Outline Introduction Example (Pure) Semantics Example (Full Dispatch) Type System Soundness 2 / 30

3 Intro: Traversals AOP Modularizes Crosscutting Concerns Traversal is an Important Concern ˆ Walk a Data Structure... Do Some Work ˆ Tedious to Write ˆ Crosscuts Data Definitions 3 / 30

4 Intro: Functional Traversal Functional Traversal ˆ Compute Without Mutation ˆ Multi-threading ˆ Safe But Flexible ˆ Eliminate Implicit Ordering 4 / 30

5 Intro: Functional Traversal Tree Contraction 5 / 30

6 Intro: Functional Traversal Tree Contraction 6 / 30

7 Intro: Functional Traversal Tree Contraction 7 / 30

8 Intro: Functional Traversal Tree Contraction 8 / 30

9 Intro: Functional Traversal Tree Contraction... 9 / 30

10 Goals: Modularity and Safety Separate Traversals and Computation ˆ Traversal Flexibility/Control ˆ Freedom of Implementation ˆ Write Once or Generate from Structures Enforce Safety With Types ˆ Express More of the Computation ˆ Assumptions Are Checked 10 / 30

11 Functional Traversal-Based Aspects Sets of Functions Over a Depth-First Traversal ˆ Each Function Is Advice ˆ Join Points Are After Subtraversals Complete ˆ Pointcuts Are Function Signatures Benefits ˆ Functional! ˆ Type Sound 11 / 30

12 Surface Syntax x C A T ::= variable names ::= concrete type names ::= abstract type names ::= C A P ::= D 1... D n e D ::= concrete C ( T 1,..., T n ) abstract A ( T 1,..., T n ) e ::= x new C ( e 1,..., e n ) traverse( e 0, F ) F ::= funcset(f 1... f n ) f ::= (T 0 x 0,..., T n x n ){ return e; } 12 / 30

13 Example: Boolean Expressions Data Definitions abstract Exp ( Lit, Neg, And, Or) abstract Lit ( True, False ) concrete True () concrete False () concrete Neg ( Exp ) concrete And ( Exp, Exp ) concrete Or ( Exp, Exp ) 13 / 30

14 Example: Boolean Expressions An Expression &! F T F new Or(new And ( new False (), new True ()), new Neg ( new False ())) 14 / 30

15 Example: Boolean Expressions & Or Elimination! F T F funcset ( F T F (True t){ return t; } (False f){ return f; } (Neg n, Exp e) { return new Neg (e); } (And a, Exp l, Exp r){ return new And (l,r); }! & &!!! ) (Or o, Exp l, Exp r){ return new Neg ( new And ( new Neg (l), new Neg (r ))); } 15 / 30

16 Example: Boolean Expressions & Or Elimination! F T F! & &!!! F T F Other Functions Just Reconstruct (Or o, Exp l, Exp r){ return new Neg ( new And ( new Neg (l), new Neg (r ))); } 16 / 30

17 Semantics Traversals and Dispatch ˆ Adaptive Depth-First Traversal ˆ Dispatch on First Argument Type ˆ Enforce Safety With Types Functions ˆ Depend on Argument Order ˆ Can implement Field Access 17 / 30

18 Semantics: Expanded Expanded Dispatch Semantics ˆ Asymmetric Multiple Dispatch ˆ Pattern Matching with Safety Similar to CLOS Generic Functions 18 / 30

19 Example: Refactored Abstract Binary Exp abstract Exp ( Lit, Neg, Bin )... concrete Bin ( Op, Exp, Exp ) abstract Op ( And, Or) concrete And () concrete Or () 19 / 30

20 Example: Refactored Evaluation funcset ( (Lit l){ return l; } (Neg n, True t) { return new False (); } (Neg n, False t){ return new True (); } (Op o){ return o; } (Bin b, And a, True l, True r){ return l; } (Bin b, And a, Lit l, Lit r) { return new False (); } ) (Bin b, Or o, False l, False r){ return l; } (Bin b, Or o, Lit l, Lit r) { return new True (); } 20 / 30

21 Benefits of Extended Dispatch ˆ Abstraction (Lit l){...} (Bin b, And a, Lit l, Lit r){...} Handle Multiple Cases ˆ Type Flexibility (Bin b,...) {...} Lit (Op o){...} Op Not Strictly Type Unifying or Preserving ˆ Type Safety Adding XOr to Op *error* (Bin b, XOr x,...) not handled 21 / 30

22 Type System Connect Static and Dynamic Worlds ˆ Advice Lookup Never Fails ˆ Advice Application Never Fails Enables Flexible Traversal ˆ Dynamic (Reflection) ˆ Heap Based, With/Without Stack ˆ Complete Inlining 22 / 30

23 Typing Rules [T-Var] x : T Γ Γ e x : T [T-New] concrete C ( T 1,..., T n ) P Γ e e i : T i T i T i for all i 1..n Γ e new C ( e 1,..., e n ) : C [T-Func] x i : T i e e 0 : T F (T 0 x 0,..., T n x n ){ return e 0 ; } : T [T-Trav] Γ e e 0 : T 0 T T 0, F : T ; traverse( e 0, F ) : T 23 / 30

24 Traversal Typing Rules [T-CTrav] concrete C ( T 1,..., T n ) P types(choose(f, C)) = (C, T 1,..., T n ) F choose(f, C) : T for all i 1..n T i X X {C} T T i, F : T i ; Φ i T i T i (C, T ) (Φ 1 Φ n) T T Φ = { (T j, T j ) j 1..n T j X } Φ = Φ (Φ 1 Φ n)\(c, ) X T C, F : T ; Φ [T-ATrav] abstract A ( T 1,..., T n ) P for all i 1..n T i X X {A} T T i, F : T i ; Φ i T i T (A, T ) (Φ 1 Φ n) T T Φ = { (T j, T ) j 1..n T j X } Φ = Φ (Φ 1 Φ n)\(a, ) X T A, F : T ; Φ 24 / 30

25 Soundness Type System: Rules Out Runtime Errors ˆ Advice Lookup Never Fails ˆ Advice Application Never Fails ˆ Correctly Predicts Program Result Notables ˆ Complete Functions ˆ Subtype Traversals Return Subtypes 25 / 30

26 Related Work AOP Semantics: Bruns et al. [2004] Jagadeesan et al. [2003] Wand et al. [2004] AOP Soundness: Kammüller and Voesgen [2009] Walker et al. [2003] OO Type Soundness: Igarashi et al. [1999] Flatt et al. [1998] Constraint Type Systems: Palsberg and Schwartzbach [1991] 26 / 30

27 Next Steps Adding Features to the Model ˆ Multiple-dispatch ˆ Function Set Extension ˆ Traversal Control and Abstraction Towards Traditional Adaptive Programming 27 / 30

28 Next Steps Full Language Implementation ˆ Independent ˆ Or in a Future Functional Language Implementation Features ˆ Type Directed Inlining ˆ Type Directed Traversal Generation ˆ Performance results 28 / 30

29 Contact Bryan Chadwick: Karl Lieberherr: DemeterF Home: / 30

30 References Glenn Bruns, Radha Jagadeesan, Alan Jeffrey, and James Riely. µabc: A minimal aspect calculus. In Proceedings of the 2004 International Conference on Concurrency Theory, pages Springer-Verlag, Matthew Flatt, Shriram Krishnamurthi, and Matthias Felleisen. Classes and mixins. In In POPL, pages ACM Press, Atsushi Igarashi, Benjamin Pierce, and Philip Wadler. Featherweight java: A minimal core calculus for java and gj. In TOPLAS, pages , Radha Jagadeesan, Alan Jeffrey, and James Riely. A calculus of untyped aspect-oriented programs. In ECOOP, pages 54 73, Florian Kammüller and Matthias Voesgen. Towards type safety of aspect-oriented languages. In AOSD 2006, FOAL Workshop, Jens Palsberg and Michael I. Schwartzbach. Object-oriented type inference. In OOPSLA, pages , New York, NY, USA, ACM. ISBN doi: David Walker, Steve Zdancewic, and Jay Ligatti. A theory of aspects. In ICFP, pages , New York, NY, USA, ACM. ISBN doi: Mitchell Wand, Gregor Kiczales, and Chris Dutchyn. A semantics for advice and dynamic join points in aspect-oriented programming. TOPLAS, 26(5): , / 30

A Type System for Functional Traversal-Based Aspects

A Type System for Functional Traversal-Based Aspects A Type System for Functional Traversal-Based Aspects Bryan Chadwick College of Computer & Information Science Northeastern University, 360 Huntington Avenue Boston, Massachusetts 02115 USA chadwick@ccs.neu.edu

More information

A Calculus of Untyped Aspect-Oriented Programs

A Calculus of Untyped Aspect-Oriented Programs A Calculus of Untyped Aspect-Oriented Programs Radha Jagadeesan, Alan Jeffrey, and James Riely CTI, DePaul University Abstract. Aspects have emerged as a powerful tool in the design and development of

More information

Graph-Based Specification and Simulation of Featherweight Java with Around Advice

Graph-Based Specification and Simulation of Featherweight Java with Around Advice Graph-Based Specification and Simulation of Featherweight Java with Around Advice ABSTRACT Tom Staijen Software Engineering Group University of Twente P.O. Box 217, 7500 AE Enschede, The Netherlands staijen@cs.utwente.nl

More information

Functional Adaptive Programming

Functional Adaptive Programming Functional Adaptive Programming A dissertation presented by Bryan Chadwick to the Faculty of the Graduate School of the College of Computer and Information Science in partial fulfillment of the requirements

More information

Functional Adaptive Programming

Functional Adaptive Programming Functional Adaptive Programming A dissertation presented by Bryan Chadwick to the Faculty of the Graduate School of the College of Computer and Information Science in partial fulfillment of the requirements

More information

Functions and Traversals in Combination

Functions and Traversals in Combination Functions and Traversals in Combination Bryan Chadwick Therapon Skotiniotis Karl Lieberherr Northeastern University chadwick, skotthe, lieber @ccs.neu.edu Abstract In this paper we describe a new traversal

More information

Weaving Generic Programming and Traversal Performance

Weaving Generic Programming and Traversal Performance Weaving Generic Programming and Traversal Performance Bryan Chadwick chadwick@ccs.neu.edu College of Computer & Information Science Northeastern University, 360 Huntington Avenue Boston, Massachusetts

More information

Aspect-Oriented Generation of the API Documentation for AspectJ

Aspect-Oriented Generation of the API Documentation for AspectJ Aspect-Oriented Generation of the API Documentation for AspectJ Michihiro Horie Tokyo Institute of Technology 2-12-1 Ohkayama, Meguro-ku, Tokyo 152-8552, Japan www.csg.is.titech.ac.jp/ horie Shigeru Chiba

More information

Call by Declaration. Erik Ernst 1. Dept. of Computer Science, University of Aarhus, Denmark

Call by Declaration. Erik Ernst 1. Dept. of Computer Science, University of Aarhus, Denmark Call by Declaration Erik Ernst 1 Dept. of Computer Science, University of Aarhus, Denmark eernst@daimi.au.dk Abstract. With traditional inheritance mechanisms, a subclass is able to use inherited features

More information

A Unit Testing Framework for Aspects without Weaving

A Unit Testing Framework for Aspects without Weaving A Unit Testing Framework for Aspects without Weaving Yudai Yamazaki l01104@sic.shibaura-it.ac.jp Kouhei Sakurai sakurai@komiya.ise.shibaura-it.ac.jp Saeko Matsuura matsuura@se.shibaura-it.ac.jp Hidehiko

More information

Type Systems. Today. 1. Organizational Matters. 1. Organizational Matters. Lecture 1 Oct. 20th, 2004 Sebastian Maneth. 1. Organizational Matters

Type Systems. Today. 1. Organizational Matters. 1. Organizational Matters. Lecture 1 Oct. 20th, 2004 Sebastian Maneth. 1. Organizational Matters Today Type Systems 1. Organizational Matters 2. What is this course about? 3. Where do types come from? 4. Def. of the small language Expr. Its syntax and semantics. Lecture 1 Oct. 20th, 2004 Sebastian

More information

Safe Instantiation in Generic Java

Safe Instantiation in Generic Java Safe Instantiation in Generic Java January 31, 2003 Abstract This paper presents the safe-instantiation principle a new design principle for evaluating extensions of Java with support for generic types.

More information

Typed Lambda Calculus. Chapter 9 Benjamin Pierce Types and Programming Languages

Typed Lambda Calculus. Chapter 9 Benjamin Pierce Types and Programming Languages Typed Lambda Calculus Chapter 9 Benjamin Pierce Types and Programming Languages t ::= x x. t t t Call-by-value small step perational Semantics terms variable v ::= values abstraction x. t abstraction values

More information

5. Semantic Analysis!

5. Semantic Analysis! 5. Semantic Analysis! Prof. O. Nierstrasz! Thanks to Jens Palsberg and Tony Hosking for their kind permission to reuse and adapt the CS132 and CS502 lecture notes.! http://www.cs.ucla.edu/~palsberg/! http://www.cs.purdue.edu/homes/hosking/!

More information

Lifted Java: A Minimal Calculus for Translation Polymorphism

Lifted Java: A Minimal Calculus for Translation Polymorphism Lifted Java: A Minimal Calculus for Translation Polymorphism Matthias Diehn Ingesman and Erik Ernst Department of Computer Science, Aarhus University, Denmark, {mdi,eernst}@cs.au.dk Abstract. To support

More information

Specifying Pointcuts in AspectJ

Specifying Pointcuts in AspectJ Specifying Pointcuts in AspectJ Yi Wang Department of Computer Science Shanghai Jiao Tong University 800 Dongchuan Rd, Shanghai, 200240, China yi_wang@sjtu.edu.cn Jianjun Zhao Department of Computer Science

More information

Efficient Separate Compilation of Object-Oriented Languages

Efficient Separate Compilation of Object-Oriented Languages Efficient Separate Compilation of Object-Oriented Languages Jean Privat, Floréal Morandat, and Roland Ducournau LIRMM Université Montpellier II CNRS 161 rue Ada 34392 Montpellier cedex 5, France {privat,morandat,ducour}@lirmm.fr

More information

Compilation Semantics of Aspect-Oriented Programs

Compilation Semantics of Aspect-Oriented Programs Compilation Semantics of Aspect-Oriented Programs Hidehiko Masuhara Graduate School of Arts and Sciences University of Tokyo masuhara@acm.org Gregor Kiczales Department of Computer Science University of

More information

Control Flow Analysis with SAT Solvers

Control Flow Analysis with SAT Solvers Control Flow Analysis with SAT Solvers Steven Lyde, Matthew Might University of Utah, Salt Lake City, Utah, USA Abstract. Control flow analyses statically determine the control flow of programs. This is

More information

Beyond Aspect-Oriented Programming: Toward Naturalistic Programming

Beyond Aspect-Oriented Programming: Toward Naturalistic Programming Beyond Aspect-Oriented Programming: Toward Naturalistic Programming Cristina Videira Lopes Institute for Software Research and University of California, Irvine Outline AOP and AspectJ The problem and the

More information

5. Semantic Analysis. Mircea Lungu Oscar Nierstrasz

5. Semantic Analysis. Mircea Lungu Oscar Nierstrasz 5. Semantic Analysis Mircea Lungu Oscar Nierstrasz Thanks to Jens Palsberg and Tony Hosking for their kind permission to reuse and adapt the CS132 and CS502 lecture notes. http://www.cs.ucla.edu/~palsberg/

More information

Temporal Aspects as Security Automata

Temporal Aspects as Security Automata Temporal Aspects as Security Automata Peter Hui CTI, DePaul University Chicago, IL, USA James Riely CTI, DePaul University Chicago, IL, USA Abstract Aspect-oriented programming (AOP) has been touted as

More information

Reasoning about modules: data refinement and simulation

Reasoning about modules: data refinement and simulation Reasoning about modules: data refinement and simulation David Naumann naumann@cs.stevens-tech.edu Stevens Institute of Technology Naumann - POPL 02 Java Verification Workshop p.1/17 Objectives of talk

More information

Types for Flexible Objects

Types for Flexible Objects Types for Flexible Objects Building a Typed Scripting Language Pottayil Harisanker Menon, Zachary Palmer, Alexander Rozenshteyn, Scott F. Smith The Johns Hopkins University November 17th, 2014 2/1 Objective

More information

The Polymorphic Blame Calculus and Parametricity

The Polymorphic Blame Calculus and Parametricity 1 / 31 The Polymorphic Blame Calculus and Parametricity Jeremy G. Siek Indiana University, Bloomington University of Strathclyde August 2015 2 / 31 Integrating static and dynamic typing Static Dynamic

More information

Featherweight Java (FJ)

Featherweight Java (FJ) x = 1 let x = 1 in... x(1).!x(1) x.set(1) Programming Language Theory Featherweight Java (FJ) Ralf Lämmel This lecture is based on David Walker s lecture: Computer Science 441, Programming Languages, Princeton

More information

Functional Concepts in C++

Functional Concepts in C++ Trends in Functional Programming 2006 Nottingham Functional Concepts in C++ Rose H. Abdul Rauf, Anton Setzer, Ulrich Berger Swansea 1 Goal: Integrating Functional and Object-Oriented Programming A first

More information

Aspects and Soar: A Behavior Development Model. Jacob Crossman

Aspects and Soar: A Behavior Development Model. Jacob Crossman Aspects and Soar: A Behavior Development Model Jacob Crossman jcrossman@soartech.com Motivation: Why is Soar Useful? Soar Systems are often complex Often require multiple processes Are built of hundreds/thousands

More information

Combining Event-driven and Capsule-oriented Programming to Improve Integrated System Design

Combining Event-driven and Capsule-oriented Programming to Improve Integrated System Design Computer Science Technical Reports Computer Science 7-2017 Combining Event-driven and Capsule-oriented Programming to Improve Integrated System Design Jackson Maddox jlmaddox@iastate.edu Follow this and

More information

Toward Abstract Interpretation of Program Transformations

Toward Abstract Interpretation of Program Transformations Abstract Toward Abstract Interpretation of Program Transformations Developers of program transformations often reason about transformations to assert certain properties of the generated code. We propose

More information

Functional Visitors Revisited

Functional Visitors Revisited Functional Visitors Revisited Bryan Chadwick chadwick@ccs.neu.edu Therapon Skotiniotis skotthe@ccs.neu.edu College of Computer and Information Science Northeastern University 360 Huntington Avenue 202

More information

arxiv: v2 [cs.pl] 29 Dec 2017

arxiv: v2 [cs.pl] 29 Dec 2017 Towards a Java Subtyping Operad arxiv:1706.00274v2 [cs.pl] 29 Dec 2017 Abstract Moez A. AbdelGawad Informatics Research Institute, SRTA-City, Alexandria, Egypt moez@cs.rice.edu The subtyping relation in

More information

Jam: A Smooth Extension With Java Mixins

Jam: A Smooth Extension With Java Mixins Jam: A Smooth Extension With Java Mixins Davide Ancona, Giovanni Lagorio, Ellena Zucca Presentation created by Left-out Jam abstract syntax Formal definitions of Jam static semantics Formal definitions

More information

(Advanced) topics in Programming Languages

(Advanced) topics in Programming Languages Spring 2012 (Advanced) topics in Programming Languages Instructor: Mooly Sagiv TA: Shachar Itzhaky http://www.cs.tau.ac.il/~msagiv/courses/apl12.html Inspired by John Mitchell CS 242 Compilation course

More information

Operational Semantics. One-Slide Summary. Lecture Outline

Operational Semantics. One-Slide Summary. Lecture Outline Operational Semantics #1 One-Slide Summary Operational semantics are a precise way of specifying how to evaluate a program. A formal semantics tells you what each expression means. Meaning depends on context:

More information

Open Modules: Modular Reasoning in Aspect-Oriented Programming

Open Modules: Modular Reasoning in Aspect-Oriented Programming Open Modules: Modular Reasoning in Aspect-Oriented Programming Jonathan Aldrich School of Computer Science Carnegie Mellon University 5000 Forbes Avenue Pittsburgh, PA 15213, USA jonathan.aldrich@cs.cmu.edu

More information

Class-graph Inference for Adaptive Programs

Class-graph Inference for Adaptive Programs Theory and Practice of Object Systems 3(2):75-85, 1997. Class-graph Inference for Adaptive Programs Jens Palsberg Purdue University Abstract Software generators can adapt components to changes in the architectures

More information

Aspect-Oriented Programming and AspectJ

Aspect-Oriented Programming and AspectJ What is Aspect-Oriented Programming? Many possible answers: a fad Aspect-Oriented Programming and AspectJ Aspect-oriented programming is a common buzzword lately Papers from ECOOP 1997 (early overview

More information

PL Punta Arenas

PL Punta Arenas PL 2008 - Punta Arenas Aspects, Processes, and Components Jacques Noyé OBASCO - Ecole des Mines de Nantes/INRIA, LINA Jacques.Noye@emn.fr 12 November 2008 Introduction The basic idea There is usually no

More information

Featherweight Scala. Week 14

Featherweight Scala. Week 14 Featherweight Scala Week 14 1 Today Previously: Featherweight Java Today: Featherweight Scala Live research, unlike what you have seen so far. Focus today on path-dependent types Plan: 1. Rationale 2.

More information

Programming Languages

Programming Languages TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Programming Languages Mixins Dr. Michael Petter Winter 2014 Mixins 1 / 30 What advanced techiques are there besides multiple implementation inheritance?

More information

Exploring Possibilities for Symmetric Implementation of Aspect-Oriented Design Patterns in Scala

Exploring Possibilities for Symmetric Implementation of Aspect-Oriented Design Patterns in Scala Exploring Possibilities for Symmetric Implementation of Aspect-Oriented Design Patterns in Scala Pavol PIDANIČ Slovak University of Technology in Bratislava Faculty of Informatics and Information Technologies

More information

Efficient Separate Compilation of Object-Oriented Languages

Efficient Separate Compilation of Object-Oriented Languages Efficient Separate Compilation of Object-Oriented Languages Jean Privat, Floréal Morandat, and Roland Ducournau LIRMM Université Montpellier II CNRS 161 rue Ada 34392 Montpellier cedex 5, France {privat,morandat,ducour}@lirmm.fr

More information

Language support for AOP

Language support for AOP Language support for AOP AspectJ and beyond Mario Südholt www.emn.fr/sudholt INRIA and École des Mines de Nantes OBASCO project, Nantes, France Language support for AOP ; Mario Südholt; INRIA/EMN; March

More information

Programming Languages Fall 2014

Programming Languages Fall 2014 Programming Languages Fall 2014 Lecture 7: Simple Types and Simply-Typed Lambda Calculus Prof. Liang Huang huang@qc.cs.cuny.edu 1 Types stuck terms? how to fix it? 2 Plan First I For today, we ll go back

More information

Static type safety guarantees for the operators of a relational database querying system. Cédric Lavanchy

Static type safety guarantees for the operators of a relational database querying system. Cédric Lavanchy Static type safety guarantees for the operators of a relational database querying system Cédric Lavanchy June 6, 2008 Contents 1 Previous work 2 2 Goal 3 3 Theory bases 4 3.1 Typing a relation...........................

More information

Weaving Rewrite-Based Access Control Policies

Weaving Rewrite-Based Access Control Policies Weaving Rewrite-Based Access Control Policies Anderson Santana de Oliveira a, Eric Ke Wang ab, Claude Kirchner a, Hélène Kirchner a INRIA & LORIA The University of Hong Kong FMSE, 2007 Oliveira, Wang,

More information

Safe Metaclass Composition Using Mixin-Based Inheritance

Safe Metaclass Composition Using Mixin-Based Inheritance Safe Metaclass Composition Using Mixin-Based Inheritance Noury Bouraqadi bouraqadi@ensm-douai.fr http://csl.ensm-douai.fr/noury Dépt. G.I.P. - Ecole des Mines de Douai 941, rue Charles Bourseul - B.P.

More information

Denotational Semantics. Domain Theory

Denotational Semantics. Domain Theory Denotational Semantics and Domain Theory 1 / 51 Outline Denotational Semantics Basic Domain Theory Introduction and history Primitive and lifted domains Sum and product domains Function domains Meaning

More information

Aspects, Information Hiding and Modularity

Aspects, Information Hiding and Modularity Aspects, Information Hiding and Modularity Daniel S. Dantas Princeton University ddantas@cs.princeton.edu David Walker Princeton University dpw@cs.princeton.edu ABSTRACT Aspect-oriented programming languages

More information

Visitor-Oriented Programming

Visitor-Oriented Programming Visitor-Oriented Programming Thomas VanDrunen Purdue University Department of Computer Science West Lafayette, IN 47907 vandrutj@cs.purdue.edu Jens Palsberg UCLA Computer Science Department 4531K Boelter

More information

Operational Semantics of Cool

Operational Semantics of Cool Operational Semantics of Cool Key Concepts semantics: the meaning of a program, what does program do? how the code is executed? operational semantics: high level code generation steps of calculating values

More information

Separation of Concerns

Separation of Concerns Separation of Concerns Erik Ernst Dept. of Computer Science, University of Aarhus, Denmark eernst@daimi.au.dk Abstract. Separation of concerns is a crucial concept in discussions about software engineering

More information

UniAspect: A Language-Independent Aspect-Oriented Programming Framework

UniAspect: A Language-Independent Aspect-Oriented Programming Framework UniAspect: A Language-Independent Aspect-Oriented Programming Framework Akira Ohashi Kazunori Sakamoto Tomoyuki Kamiya Reisha Humaira Satoshi Arai Hironori Washizaki Yoshiaki Fukazawa Waseda University

More information

A Novel Approach to Unit Testing: The Aspect-Oriented Way

A Novel Approach to Unit Testing: The Aspect-Oriented Way A Novel Approach to Unit Testing: The Aspect-Oriented Way Guoqing Xu and Zongyuan Yang Software Engineering Lab, Department of Computer Science East China Normal University 3663, North Zhongshan Rd., Shanghai

More information

Interlanguage Migration

Interlanguage Migration Interlanguage Migration From Scripts to Programs Sam Tobin-Hochstadt and Matthias Felleisen Northeastern University DLS 2006 1 A Story 2 About a programmer 3 Who needed to manage his budget 4 And so, he

More information

Consistent Subtyping for All

Consistent Subtyping for All Consistent Subtyping for All Ningning Xie Xuan Bi Bruno C. d. S. Oliveira 11 May, 2018 The University of Hong Kong 1 Background There has been ongoing debate about which language paradigm, static typing

More information

COS 320. Compiling Techniques

COS 320. Compiling Techniques Topic 5: Types COS 320 Compiling Techniques Princeton University Spring 2016 Lennart Beringer 1 Types: potential benefits (I) 2 For programmers: help to eliminate common programming mistakes, particularly

More information

Learning from Components: Fitting AOP for System Software

Learning from Components: Fitting AOP for System Software Learning from Components: Fitting AOP for System Software Andreas Gal, Michael Franz Department of Computer Science University of California, Irvine Irvine, CA 92697-3425, USA {gal,franz@uci.edu Danilo

More information

Modularity: what, why and how

Modularity: what, why and how Modularity: what, why and how Stephen Kell Stephen.Kell@cl.cam.ac.uk Computer Laboratory University of Cambridge Modularity... p.1/33 Some problematic code Imagine implementing a syntax tree evaluator.

More information

Defaulting Generic Java to Ownership

Defaulting Generic Java to Ownership Defaulting Generic Java to Ownership Alex Potanin, James Noble, Dave Clarke 1, and Robert Biddle 2 {alex, kjx@mcs.vuw.ac.nz, dave@cwi.nl, and robert biddle@carleton.ca School of Mathematical and Computing

More information

ASaP: Annotations for Safe Parallelism in Clang. Alexandros Tzannes, Vikram Adve, Michael Han, Richard Latham

ASaP: Annotations for Safe Parallelism in Clang. Alexandros Tzannes, Vikram Adve, Michael Han, Richard Latham ASaP: Annotations for Safe Parallelism in Clang Alexandros Tzannes, Vikram Adve, Michael Han, Richard Latham Motivation Debugging parallel code is hard!! Many bugs are hard to reason about & reproduce

More information

DISCUSSING ASPECTS OF AOP

DISCUSSING ASPECTS OF AOP a DISCUSSING ASPECTS OF AOP How would you define AOP? Gregor Kiczales: Aspect-oriented programming is a new evolution in the line of technology for separation of concerns technology that allows design

More information

FJMIP: a calculus for a modular object initialization

FJMIP: a calculus for a modular object initialization FJMIP: a calculus for a modular object initialization Viviana Bono 1 and Jaros law D. M. Kuśmierek 2 1 Torino University, Dept. of Computer Science 2 Warsaw University, Institute of Informatics Abstract.

More information

Programming AspectJ with Eclipse and AJDT, By Example. Chien-Tsun Chen Sep. 21, 2003

Programming AspectJ with Eclipse and AJDT, By Example. Chien-Tsun Chen Sep. 21, 2003 Programming AspectJ with Eclipse and AJDT, By Example Chien-Tsun Chen Sep. 21, 2003 ctchen@ctchen.idv.tw References R. Laddad, I want my AOP!, Part 1-Part3, JavaWorld, 2002. R. Laddad, AspectJ in Action,

More information

Softwaretechnik. Lecture 03: Types and Type Soundness. Peter Thiemann. University of Freiburg, Germany SS 2008

Softwaretechnik. Lecture 03: Types and Type Soundness. Peter Thiemann. University of Freiburg, Germany SS 2008 Softwaretechnik Lecture 03: Types and Type Soundness Peter Thiemann University of Freiburg, Germany SS 2008 Peter Thiemann (Univ. Freiburg) Softwaretechnik SWT 1 / 35 Table of Contents Types and Type correctness

More information

Static Type Analysis of Pattern Matching by Abstract Interpretation

Static Type Analysis of Pattern Matching by Abstract Interpretation Static Type Analysis of Pattern Matching by Abstract Interpretation Pietro Ferrara ETH Zurich, Switzerland pietro.ferrara@inf.ethz.ch Abstract. Pattern matching is one of the most attractive features of

More information

Processes as Types: A Generic Framework of Behavioral Type Systems for Concurrent Processes

Processes as Types: A Generic Framework of Behavioral Type Systems for Concurrent Processes Processes as Types: A Generic Framework of Behavioral Type Systems for Concurrent Processes Atsushi Igarashi (Kyoto Univ.) based on joint work [POPL2001, TCS2003] with Naoki Kobayashi (Tohoku Univ.) Programming

More information

Open Modules: A Proposal for Modular Reasoning in Aspect-Oriented Programming

Open Modules: A Proposal for Modular Reasoning in Aspect-Oriented Programming Open Modules: A Proposal for Modular Reasoning in Aspect-Oriented Programming Jonathan Aldrich Institute for Software Research, International Carnegie Mellon University 5000 Forbes Avenue Pittsburgh, PA

More information

Representation Independence, Confinement and Access Control

Representation Independence, Confinement and Access Control Representation Independence, Confinement and Access Control Anindya Banerjee and David Naumann ab@cis.ksu.edu and naumann@cs.stevens-tech.edu Kansas State University and Stevens Institute of Technology,

More information

Typed Scheme From Scripts to Programs. Sam Tobin-Hochstadt Northeastern University

Typed Scheme From Scripts to Programs. Sam Tobin-Hochstadt Northeastern University Typed Scheme From Scripts to Programs Sam Tobin-Hochstadt Northeastern University 1 The PL Renaissance 2 The PL Renaissance 3 The PL Renaissance 4 What s good These languages are interactive designed for

More information

arxiv: v1 [cs.pl] 29 Mar 2016

arxiv: v1 [cs.pl] 29 Mar 2016 arxiv:1603.08648v1 [cs.pl] 29 Mar 2016 A Comparison of NOOP to Structural Domain-Theoretic Models of Object-Oriented Programming Moez A. AbdelGawad moez@cs.rice.edu College of Mathematics and Econometrics,

More information

UML Aspect Specification Using Role Models

UML Aspect Specification Using Role Models UML Aspect Specification Using Role Models Geri Georg Agilent Laboratories, Agilent Technologies, Fort Collins, USA geri_georg@agilent.com Robert France Department of Computer Science, Colorado State University

More information

Simply-Typed Lambda Calculus

Simply-Typed Lambda Calculus #1 Simply-Typed Lambda Calculus #2 Back to School What is operational semantics? When would you use contextual (small-step) semantics? What is denotational semantics? What is axiomatic semantics? What

More information

Typed Compilation Against Non-Manifest Base Classes

Typed Compilation Against Non-Manifest Base Classes Typed Compilation Against Non-Manifest Base Classes Christopher League Long Island University christopher.league@liu.edu Stefan Monnier Université de Montréal monnier@iro.umontreal.ca FTfJP workshop 26

More information

Data Structures, ADTs, and PDAs. Lists and Procedural Data Abstractions. COMP 210: Object-Oriented Programming Lecture Notes 7

Data Structures, ADTs, and PDAs. Lists and Procedural Data Abstractions. COMP 210: Object-Oriented Programming Lecture Notes 7 COMP 210: Object-Oriented Programming Lecture Notes 7 Data Structures, ADTs, and PDAs Based on notes by Logan Mayfield In these notes we explore the paradigm of designing Procedural Data Abstractionsand

More information

McJava A Design and Implementation of Java with Mixin-Types

McJava A Design and Implementation of Java with Mixin-Types McJava A Design and Implementation of Java with Mixin-Types Tetsuo Kamina and Tetsuo Tamai University of Tokyo 3-8-1, Komaba, Meguro-ku, Tokyo, 153-8902, Japan {kamina,tamai}@graco.c.u-tokyo.ac.jp Abstract.

More information

15-819M: Data, Code, Decisions

15-819M: Data, Code, Decisions 15-819M: Data, Code, Decisions 08: First-Order Logic André Platzer aplatzer@cs.cmu.edu Carnegie Mellon University, Pittsburgh, PA André Platzer (CMU) 15-819M/08: Data, Code, Decisions 1 / 40 Outline 1

More information

Open Modules: Modular Reasoning about Advice

Open Modules: Modular Reasoning about Advice Open Modules: Modular Reasoning about Advice Jonathan Aldrich December 2004 CMU-ISRI-04-141 Institute for Software Research International School of Computer Science Carnegie Mellon University 5000 Forbes

More information

Dynamic Weaving for Building Reconfigurable Software Systems

Dynamic Weaving for Building Reconfigurable Software Systems Dynamic Weaving for Building Reconfigurable Software Systems JAGDISH LAKHANI lakhjag@iitedu Computer Science Dept Illinois Institute of Technology Chicago, IL 60616 FAISAL AKKAWI akkawif@iitedu Computer

More information

xtc Robert Grimm Making C Safely Extensible New York University

xtc Robert Grimm Making C Safely Extensible New York University xtc Making C Safely Extensible Robert Grimm New York University The Problem Complexity of modern systems is staggering Increasingly, a seamless, global computing environment System builders continue to

More information

Ph.D. Thesis Proposal: Programming Language Support For Separation Of Concerns

Ph.D. Thesis Proposal: Programming Language Support For Separation Of Concerns Ph.D. Thesis Proposal: Programming Language Support For Separation Of Concerns Doug Orleans April 19, 2002 Abstract Separation of concerns is a useful problem-solving technique. Ideally, each program module

More information

Extensible Java Pre-processor

Extensible Java Pre-processor Extensible Java Pre-processor National Institute of Advanced Industrial Science and Technology(AIST) Yuuji Ichisugi http://staff.aist.go.jp/y-ichisugi/ 2002/12/17 1 What is EPP? Language extension framework

More information

A Distributed Dynamic Aspect Machine for Scientific Software Development

A Distributed Dynamic Aspect Machine for Scientific Software Development A Distributed Dynamic Aspect Machine for Scientific Software Development Chanwit Kaewkasi Centre for Novel Computing School of Computer Science University of Manchester John R. Gurd Centre for Novel Computing

More information

A Gentle Introduction to Program Analysis

A Gentle Introduction to Program Analysis A Gentle Introduction to Program Analysis Işıl Dillig University of Texas, Austin January 21, 2014 Programming Languages Mentoring Workshop 1 / 24 What is Program Analysis? Very broad topic, but generally

More information

ERC 4th Workshop KAIST. Sukyoung Ryu KAIST. August 26, 2010

ERC 4th Workshop KAIST. Sukyoung Ryu KAIST. August 26, 2010 ERC 4th Workshop Sukyoung Ryu August 26, 2010 : Members Coq Mechanization of Basic Core Fortress for Type Soundness Adding Pattern Matching to Existing Object- Oriented Languages FortressCheck: Automatic

More information

CS 565: Programming Languages. Spring 2008 Tu, Th: 16:30-17:45 Room LWSN 1106

CS 565: Programming Languages. Spring 2008 Tu, Th: 16:30-17:45 Room LWSN 1106 CS 565: Programming Languages Spring 2008 Tu, Th: 16:30-17:45 Room LWSN 1106 Administrivia Who am I? Course web page http://www.cs.purdue.edu/homes/peugster/cs565spring08/ Office hours By appointment Main

More information

A Calculus for Constraint-Based Flow Typing

A Calculus for Constraint-Based Flow Typing A Calculus for Constraint-Based Flow Typing David J. Pearce School of Engineering and Computer Science,Victoria University of Wellington, New Zealand djp@ecs.vuw.ac.nz Abstract Flow typing offers an alternative

More information

Static Program Analysis

Static Program Analysis Static Program Analysis Lecture 1: Introduction to Program Analysis Thomas Noll Lehrstuhl für Informatik 2 (Software Modeling and Verification) noll@cs.rwth-aachen.de http://moves.rwth-aachen.de/teaching/ws-1415/spa/

More information

Idioms for Building Software Frameworks in AspectJ

Idioms for Building Software Frameworks in AspectJ Idioms for Building Software Frameworks in AspectJ Stefan Hanenberg 1 and Arno Schmidmeier 2 1 Institute for Computer Science University of Essen, 45117 Essen, Germany shanenbe@cs.uni-essen.de 2 AspectSoft,

More information

Constrained Types and their Expressiveness

Constrained Types and their Expressiveness Constrained Types and their Expressiveness JENS PALSBERG Massachusetts Institute of Technology and SCOTT SMITH Johns Hopkins University A constrained type consists of both a standard type and a constraint

More information

Formal AOP: Opportunity Abounds

Formal AOP: Opportunity Abounds Formal AOP: Opportunity Abounds James Riely http://www.depaul.edu/ jriely DePaul CTI, Chicago, USA Much of this talk reports on joint work with Glen Bruns Radha Jagadeesan Alan Jeffrey FOAL 04 p.1/68 Thanks

More information

Design by Contract: An Overview

Design by Contract: An Overview : An Overview CSCI 5828 Michael M. Vitousek University of Colorado at Boulder michael.vitousek@colorado.edu March 21, 2012 1 / 35 Outline 1 Introduction Motivation and Introduction Simple Example Contract

More information

Enforcing Resource Usage Protocols via Scoped Methods

Enforcing Resource Usage Protocols via Scoped Methods Enforcing Resource Usage Protocols via Scoped Methods Gang Tan Xinming Ou David Walker Princeton University {gtan, xou, dpw@cs.princeton.edu Abstract Traditional modularity mechanisms such as Java s classes

More information

Implementing Software Connectors through First-Class Methods

Implementing Software Connectors through First-Class Methods Implementing Software Connectors through First-Class Methods Cheoljoo Jeong and Sangduck Lee Computer & Software Technology Laboratory Electronics and Telecommunications Research Institute Taejon, 305-350,

More information

Substructural Typestates

Substructural Typestates Programming Languages meets Program Verification 2014 Substructural Typestates Filipe Militão (CMU & UNL) Jonathan Aldrich (CMU) Luís Caires (UNL) Motivation! File file = new File( out.txt );! file.write(

More information

Improving Scala's Safe Type-Level Abstraction

Improving Scala's Safe Type-Level Abstraction Seminar: Program Analysis and Transformation University of Applied Sciences Rapperswil Improving Scala's Safe Type-Level Abstraction Stefan Oberholzer, soberhol@hsr.ch Dez 2010 Abstract Scala cannot nd

More information

Lecture Outline. COOL operational semantics. Operational Semantics of Cool. Motivation. Lecture 13. Notation. The rules. Evaluation Rules So Far

Lecture Outline. COOL operational semantics. Operational Semantics of Cool. Motivation. Lecture 13. Notation. The rules. Evaluation Rules So Far Lecture Outline Operational Semantics of Cool Lecture 13 COOL operational semantics Motivation Notation The rules Prof. Aiken CS 143 Lecture 13 1 Prof. Aiken CS 143 Lecture 13 2 Motivation We must specify

More information

Lecture Outline. COOL operational semantics. Operational Semantics of Cool. Motivation. Notation. The rules. Evaluation Rules So Far.

Lecture Outline. COOL operational semantics. Operational Semantics of Cool. Motivation. Notation. The rules. Evaluation Rules So Far. Lecture Outline Operational Semantics of Cool COOL operational semantics Motivation Adapted from Lectures by Profs. Alex Aiken and George Necula (UCB) Notation The rules CS781(Prasad) L24CG 1 CS781(Prasad)

More information

Aspect Design Pattern for Non Functional Requirements

Aspect Design Pattern for Non Functional Requirements Aspect Design Pattern for Non Functional Requirements FAZAL-E-AMIN¹, ANSAR SIDDIQ², HAFIZ FAROOQ AHMAD³ ¹ ²International Islamic University Islamabad, Pakistan ³NUST Institute of Information Technology,

More information