Presentation is loading. Please wait.

Presentation is loading. Please wait.

Getting Started in PL Design Research Stephanie Weirich University of Pennsylvania.

Similar presentations


Presentation on theme: "Getting Started in PL Design Research Stephanie Weirich University of Pennsylvania."— Presentation transcript:

1 Getting Started in PL Design Research Stephanie Weirich University of Pennsylvania

2 About Stephanie Weirich Texan by birth grew up in Dallas, attended Rice University Pennsylvanian by marriage Met Steve Zdancewic at grad school (Cornell) Both PL faculty members at Penn since 2002 Mother of 1.5 girls Eleanor Jane Weirich Zdancewic, Jan 2005 ?????, Aug 2007 Research interests type systems functional programming

3 My research How can we make statically-typed programming languages more expressive? Type-directed Programming: Programs that depend on types Reflect type information structure into data Express generic algorithms that work for many different data structures AspectML, RepLib in Haskell, Type-directed Java Dependent Types: Types that depend on programs Use types to statically verify program invariants “Programmable” type systems (conditional relationships) New language/type system design: PIE Type inference Making it easier to use advanced type systems Extensions to the Haskell programming language

4 Where to begin? Start by building background and experience Read, Read, Read Learn by doing: write programs, do proofs Study textbooks: e.g. Pierce, TAPL Learn how to evaluate design work Identify important problems Work on something that seems cool, even if you don’t know what the contribution will be Staring at a blank piece of paper will not produce a POPL submission.

5 Where to look for publications Conferences & Workshops POPL & ICFP PLDI, OOPSLA, ESOP, LICS, PPDP Journals JFP and TOPLAS Seminars, web pages Once you’ve identified the active participants for your problem

6 Play with languages Play around with many different languages Mature FPLs: Haskell (GHC) ML (O'Caml, Standard ML) Scheme (PLT Scheme) Research FPLs: Scala, Omega, ATS, GHC extensions Why? Learn by doing Might find new uses for old types Might discover connections between features

7 Learn about constructive logic Logical foundation for formal models of languages Books/Lecture notes: Barendregt: Lambda Calculi with Types Pfenning: Computation and Deduction Sorenson, Urzyczyn: Lectures on the Curry/Howard Isomorphism Proof assistants for constructive logic Twelf Coq Coq Tutorial at POPL 08 (tentative)

8 Expressiveness Build a small interpreter/write small programs Build a larger implementation/write larger programs Port existing programs to new language Example: Cyclone Extend existing language with active user community Example: GHC

9 Consistency Does the design make sense? Can it be implemented? Can we prove properties about a formal model of it? Type soundness Decidable type checking Algorithmic complexity

10 Aesthetics Does the design follow general design principles? Simplicity Orthogonality Mathematical insight Does the design include a foundational building block for future languages? Add to our mathematical vocabulary?

11 Relevance/Significance Is there a need for this design? Example: Concurrency, motivated by new hardware Does this design teach us about programming and program structure? Example: Monads

12 What to work on? What are people talking about now? What will they be talking about in the next few years? What are the important questions? Another perspective: Pierce, LICS 2003 invited talk. Types and Programming Languages: The Next Generation

13 Expressive type systems How do we show that there are no bugs in linux device drivers/garbage collectors/embedded systems/etc? Types for modeling memory management, state invariants, and running time, eliminating race conditions, deadlock

14 Dependent type systems How can we stop designing all these special purpose type systems? Can we make the type system programmable? How can the user cope with such complicated types? Indexed types, GADTs, full-spectrum dependency, PADS, etc.

15 Program equivalence How do we show that two programs are the same? How can we show that program abstractions are preserved? Even in a multi-lingual system? Can the design of the language help? Bisimulation techniques, type abstraction, logical relations, encryption, security-type systems

16 Concurrency What is the right programming model for concurrent architectures? Software Transactions? Deterministic concurrency? Message-passing? How do we reason about concurrent programs? Does purity help?

17 How to evaluate language designs? Need to know to do good work Need to know to present that work effectively Difficult (and sometimes controversial) question Different axes: Novelty Expressiveness Consistency Aesthetics Relevance


Download ppt "Getting Started in PL Design Research Stephanie Weirich University of Pennsylvania."

Similar presentations


Ads by Google