Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Programming languages: principles and paradigms (2nd ed.)
Gabbrielli M., Martini S., Springer International Publishing, Cham, Switzerland, 2023. 562 pp. Type: Book (9783031341434)
Date Reviewed: Aug 28 2024

Once students are proficient in a programming language and start to learn another one, they often identify familiar concepts in new syntactic forms. This may lead to wondering about the fundamental building blocks of programming languages. This second edition addresses exactly this question, presenting the basic “principles and paradigms” of programming languages in an elementary (and mostly language-independent) way. The target audience is students and professionals who already know a language or two and would like to deepen their knowledge of the mechanisms behind this language and/or smoothen their transition to new languages.

The book’s 16 chapters can be classified into three categories. Chapters 1 through 3 discuss the foundations of describing and implementing programming languages by interpretation or compilation on top of lower-level languages (abstract machines); this part also describes some fundamentals of computability theory that are important to understand the limits of computation. Chapters 4 through 9 present basic principles of programming languages: names and environments, memory management, control structure and control abstraction, data types and data abstraction.

Chapters 10 through 15 describe the paradigms of object-oriented programming (with concepts exemplified in Java and C++), functional programming (presenting examples in a machine-learning-like language, and also introducing the basics of the lambda calculus), and logic programming (Prolog; the theory of unification and SLD resolution). This list is extended in the second edition with the paradigms of constraint programming (outlining the constraint modeling language MiniZinc), concurrent programming (shared memory and message passing models), and service-oriented programming (including a brief exposition of the Jolie language for describing services and the BPEL family of languages for orchestrating services). Chapter 16 concludes with a short historical perspective on the development of computers and programming languages.

The outstanding feature of this text is that it attempts to address a wide audience. Therefore it assumes little technical/theoretical prior knowledge, but instead tries to build up its presentation from scratch. Somewhat more in-depth background material is delegated to separate text boxes that may help to improve understanding but can be safely skipped on a first read. Numerous illustrations and small examples (code snippets) contribute to the accessibility of the presentation. Each chapter concludes with a brief summary of the main take-home messages, bibliographic notes, and a list of short exercises (mainly intended to foster self-reflection). All of this makes the book an ideal companion for introductory (undergraduate) courses on language design and implementation, as well as on fundamental programming paradigms. Unfortunately, there is no complementary website with supplementary electronic references and lecturing materials, so instructors will have to build corresponding presentations on their own. Since this 2023 edition has thoroughly revised and extended the original 2005 version, clarified subtle points, and updated the technological aspects (newer languages such as Python are also discussed), it can be considered a reliable and up-to-date course text.

However, due to its elementary nature, this book alone cannot carry more in-depth courses, for example, those that cover compiler construction, theory of programming, or specific programming languages and programming paradigms; that being said, in such contexts, it may well accompany first introductory lectures on these topics before switching to more in-depth texts on the respective fields.

Reviewer:  Wolfgang Schreiner Review #: CR147809
Bookmark and Share
  Featured Reviewer  
 
Programming Languages (D.3 )
 
 
Programming Languages And Software (I.2.5 )
 
 
Programming Techniques (D.1 )
 
Would you recommend this review?
yes
no
Other reviews under "Programming Languages": Date
Pocket PC development in the enterprise: mobile solutions with Visual Basic and .NET
Forsberg C., Sjöström A., Addison-Wesley Longman Publishing Co., Inc., Boston, MA, 2002.  432, Type: Book (9780201750799)
May 12 2004
Optimizing indirect branch prediction accuracy in virtual machine interpreters
Ertl M., Gregg D. ACM SIGPLAN Notices 38(5): 278-288, 2003. Type: Article
Nov 7 2003
C++ common knowledge: Essential Intermediate Programming
Dewhurst S., Addison-Wesley Professional, 2005. Type: Book (9780321321923)
May 20 2005
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy