This introduction lecture sets the scene for the course. We introduce the notions of software languages and language software from a bigger, interdisciplinary picture.
We start with a linguistic discussion of language, its properties, and the study of language in philosophy and linguistics. We then investigate natural languages, controlled languages, and artificial languages to emphasise the human ability to control and construct languages. At the end of the first part of the lecture, we arrive at the notion of software languages as means to communicate software between people.
In the second part of the lecture, we extend the notion of software languages as means to realise processes on machines. We give an overview of language software, starting from interpreters and compilers. We then introduce various language processors as basic building blocks of compilers. We continue with a comparison of traditional compilers and modern compilers in IDEs. Finally, we introduce traditional compiler compilers and modern language workbenches as tools to construct compilers.
Edward Sapir (1921). Introductory: Language Defined. In Language. An Introduction to the Study of Speech.
This chapter provides a definition of language and explains properties of language.
This is a comprehensive reference work cataloging all of the world’s known living languages. The corresponding blog features an interesting piece on language identification.
Andrew W. Appel and Jens Palsberg (2002). MiniJava Language Reference Manual. In Modern Compiler Implementation in Java, 2nd edition. Cambridge University Press.
In its appendix, the textbook for this course provides a short explanation of MiniJava.
Lennart C. L. Kats and Eelco Visser (2010). The Spoofax Language Workbench. Rules for Declarative Specification of Languages and IDEs. OOPSLA 2010.
This award-winning paper describes the Spoofax Language Workbench. It misses recent additions to Spoofax, but still gives a good summary of its capabilities.
Sebastian Erdweg et al. (2013). The State of the Art in Language Workbenches. Conclusions from the Language Workbench Challenge. SLE 2013.
This paper presents the state of the art of language workbenches as observed in the previous editions of the Language Workbench Challenge. In particular, the paper captures the design space of language workbenches in a feature model and shows where in this design space the participants of the 2013 Language Workbench Challenge reside.