Extensibility and Modularity in Programming Languages
In this seminar, we study questions of extensibility and modularity in programming languages, as well as proposed solutions, by reading research papers on the topic.
Many programming languages offer features which allow to extend the program in a safe way and without modifying existing code. For starters, there are two dimensions of extensibility to be considered: adding new variants, and adding new operations. The so-called Expression Problem[1] asks how to achieve both in the same language while preserving the (type) safety and no-modification properties (and possibly others). Programming languages are often biased towards one of the two extensibility dimensions in that their constructs offer a straightforward way to either add new variants or new operations, but not both. Nevertheless, even for those languages there are encodings which, via sticking to a certain programming discipline/pattern, allow the programmer to independently add variants and operations. Such encodings usually come with limitations, e.g. in the specific form of variants or operations supported, and/or costs, e.g. in the form of the complexity of the necessary language constructs. A lot of research on the Expression Problem is about such trade-offs.
This is all part of a larger research effort on how to best group a program into modules, which can be considered and worked on independently of each other (e.g., using separate compilation) and which only communicate via well-defined interfaces, and how to design and/or use programming languages and their module systems accordingly.
More details will be announced through this page.
Instructors
Julian Jabs
AlumniJulian Jabs (Office: Room B221)
Prof. Klaus Ostermann
HeadKlaus Ostermann
Structure of course
This seminar will be conducted as a paper reading group with weekly meetings.
Each week one of the students is the discussion leader, who familiarizes herself/himself with the paper’s content in greater depth. The other participants should also read the paper and prepare questions for the discussion leader. During the session, the discussion leader will summarize the main points of each section, be ready to answer the other participants’ questions, keep the discussion on track, and point out additional insights gained by her/his in-depth preparation.
At the end of the semester, each participant will write a term paper on the topic he prepared as discussion leader. It is also possible to accompany this with some artefact, e.g. a mini software project, that showcases some of the extensibility or modularity aspects discussed in the term paper.
Other info
Language: English
Credits: 3 LP (new PO), 4 LP (old PO)
LSF entry
Weekly meeting: 12:45-14:15 Room A302
Contact email: julian (dot) jabs (at) uni-tuebingen (dot) de
(Instructor’s note: I’m a native speaker of German, so you can write me in German if you want to.)
Kick-off meeting
17.10.2017 16:15-18:00, Room A302. Introduction slides
Seminar schedule
Please send me and the discussion leader a short summary and questions/what you want to discuss, until 2 days before the meeting.
26.10.2017
On the Criteria to be Used in Decomposing Systems into Modules, Communications of the ACM.
Discussion leader: Julian.
2.11.2017
Modules for Standard ML, Symposium on LISP and functional programming.
Discussion leader: Jonas L.
9.11.2017
Object-Oriented Programming Versus Abstract Data Types, Symposium of the REX Project (Research and Education in Concurrent Systems).
Discussion leader: Jonas B.
16.11.2017
The Essence of the Visitor Pattern, Computer Software and Applications Conference, download link
Discussion leader: Roman.
23.11.2017
Cancelled.
30.11.2017
Data Types à la Carte, Journal of Functional Programming
Discussion leader: Lukas.
7.12.2017
Extensible Algebraic Datatypes with Defaults, International Conference on Functional Programming
Discussion leader: Roman.
14.12.2017
Information on how to write your term paper. Slides on academic writing
After that meeting: Time for you to write the term paper.
11.1.2018
Extensibility for the Masses: Practical Extensibility with Object Algebras, European Conference on Object-Oriented Programming, download link
Discussion leader: Jonas B.
From here the list is preliminary and might be subject to change (for instance, due to unplanned absence of me).
18.1.2018
The Expression Problem, Trivially!, International Conference on Modularity
Discussion leader: Jonas L.
Literature
This is an (incomplete) list of papers to choose from, plus other relevant literature.
- D. Parnas, On the Criteria to be Used in Decomposing Systems into Modules, CACM 1972 (Bibliographic data/official version)
- D. MacQueen, Modules for Standard ML, LFP 1984 (Bibliographic data/official version)
- W. Cook, Object-Oriented Programming Versus Abstract Data Types, REX 1990 (Bibliographic data/official version)
- P. Wadler, The Expression Problem, note to Java-genericity mailing list 1998 (Author’s archived version)
- Palsberg & Jay, The Essence of the Visitor Pattern, COMPSAC 1998 (Bibliographic data/official version)
- Zenger & Odersky, Extensible Algebraic Datatypes with Defaults, ICFP 2001 (Bibliographic data/official version)
- W. Swierstra, Data Types à la Carte, JFP 2008 (Bibliographic data/official version)
- Oliveira & Cook, Extensibility for the Masses: Practical Extensibility with Object Algebras, ECOOP 2012 (Bibliographic data/official version)
Information on how to read papers
- P.W.L. Fong: How to read a CS research paper?
- S. Keshav: How to read a paper
References
-
P. Wadler, The Expression Problem, note to Java-genericity mailing list (Author’s archived version) ↩