Skip to main content
  • Textbook
  • © 2018

Software Languages

Syntax, Semantics, and Metaprogramming

Authors:

  • The first textbook on software language engineering, with a strong focus on application areas such as domain-specific languages, software composition, and software reverse engineering

  • Covers a wide range of languages, from functional languages like Haskell to mainstream programming languages like Java and modeling languages like UML

  • Complemented by a website providing additional teaching material such as lecture slides, software artifacts, and videos

Buy it now

Buying options

eBook USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book USD 84.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Other ways to access

This is a preview of subscription content, log in via an institution to check for access.

Table of contents (12 chapters)

  1. Front Matter

    Pages i-xxx
  2. The Notion of a Software Language

    • Ralf Lämmel
    Pages 1-49
  3. A Story of a Domain-Specific Language

    • Ralf Lämmel
    Pages 51-86
  4. A Suite of Metaprogramming Scenarios

    • Ralf Lämmel
    Pages 135-175
  5. Foundations of Textual Concrete Syntax

    • Ralf Lämmel
    Pages 177-200
  6. Implementation of Textual Concrete Syntax

    • Ralf Lämmel
    Pages 201-240
  7. A Primer on Operational Semantics

    • Ralf Lämmel
    Pages 241-270
  8. A Primer on Type Systems

    • Ralf Lämmel
    Pages 271-288
  9. An Excursion into the Lambda Calculus

    • Ralf Lämmel
    Pages 289-318
  10. An Ode to Compositionality

    • Ralf Lämmel
    Pages 319-334
  11. A Suite of Metaprogramming Techniques

    • Ralf Lämmel
    Pages 335-397
  12. Back Matter

    Pages 399-424

About this book

This book identifies, defines and illustrates the fundamental concepts and engineering techniques relevant to applications of software languages in software development. It presents software languages primarily from a software engineering perspective, i.e., it addresses how to parse, analyze, transform, generate, format, and otherwise process software artifacts in different software languages, as they appear in software development. To this end, it covers a wide range of software languages – most notably programming languages, domain-specific languages, modeling languages, exchange formats, and specifically also language definition languages. Further, different languages are leveraged to illustrate software language engineering concepts and techniques. The functional programming language Haskell dominates the book, while the mainstream programming languages Python and Java are additionally used for illustration.


By doing this, the book collects and organizes scattered knowledge from software language engineering, focusing on application areas such as software analysis (software reverse engineering), software transformation (software re-engineering), software composition (modularity), and domain-specific languages. It is designed as a textbook for independent study as well as for bachelor’s (advanced level) or master’s university courses in Computer Science. An additional website provides complementary material, for example, lecture slides and videos.


This book is a valuable resource for anyone wanting to understand the fundamental concepts and important engineering principles underlying software languages, allowing them to acquire much of the operational intelligence needed for dealing with software languages in software development practice. This is an important skill set for software engineers, as languages are increasingly permeating software development.

Reviews

Selected by Choice magazine as an Outstanding Academic Title for 2019 

“The book’s 12 chapters cover a wealth of information by adopting a formal point of view that supplies the rigor needed for such an extensive treatment while offering plenty of self-learning opportunities through exercises and additional references. … This book is also useful as the first step in a more in-depth exploration of specific topics, such as metaprogramming, as it provides the references needed for a comprehensive literature review. … Summing Up: Highly recommended. Advanced undergraduates through faculty and professionals.” (L. Benedicenti, Choice, Vol. 56 (9), May, 2019)

Authors and Affiliations

  • Computer Science Department, Universität Koblenz-Landau, Koblenz, Germany

    Ralf Lämmel

About the author

​Ralf Lämmel is Software Engineer at Facebook since 2018 and Professor of Computer Science (currently on leave of absence) at the University of Koblenz-Landau in Germany since 2007. In the past, he had held positions at the University of l'Aquila, Microsoft, the Free University of Amsterdam, CWI (Dutch Center for Mathematics and Computer Science), and the University of Rostock, Germany. His research and teaching interests include software language engineering, software reverse engineering, software re-engineering, mining software repositories, functional programming, grammar-based and model-based techniques, and, more recently, megamodeling. He is one of the founding fathers of the international summer school series on Generative and Transformational Techniques on Software Engineering (GTTSE) and the international conference on Software Language Engineering (SLE).

Bibliographic Information

  • Book Title: Software Languages

  • Book Subtitle: Syntax, Semantics, and Metaprogramming

  • Authors: Ralf Lämmel

  • DOI: https://doi.org/10.1007/978-3-319-90800-7

  • Publisher: Springer Cham

  • eBook Packages: Computer Science, Computer Science (R0)

  • Copyright Information: Springer Nature Switzerland AG 2018

  • Hardcover ISBN: 978-3-319-90798-7Published: 28 May 2018

  • Softcover ISBN: 978-3-030-08104-1Published: 22 December 2018

  • eBook ISBN: 978-3-319-90800-7Published: 17 May 2018

  • Edition Number: 1

  • Number of Pages: XXX, 424

  • Number of Illustrations: 17 b/w illustrations, 32 illustrations in colour

  • Topics: Software Engineering

Buy it now

Buying options

eBook USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book USD 84.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Other ways to access