This book introduces the concepts of diverse programming languages for students who have already mastered basic programming in at least one language. It is suitable for use in an undergraduate course for computer science and computer engineering majors. It treats all the knowledge units in the area of programming languages that appear in the ACM’s Computer Science Curriculum 2008, and introduces the core units thoroughly. It gives programming exercises in three different language paradigms. Philosophically, it is in complete agreement with the ACM report.
This book has two distinct kinds of chapters: practical and theoretical. The practical chapters are self-contained primers in three very different programming languages—ML, Java, and Prolog—at least two of which will be new languages for almost all students at this level. Students receive a quick introduction to the linguistically unique parts of each language and enough simple programming exercises to develop a feel for the programming paradigm of the language. The theoretical chapters present the underlying principles of programming languages. They are interleaved with the practical chapters in an order that allows ideas to be illustrated using examples in the newly learned languages and allows theoretical topics to be covered when their relevance to programming practice will be most evident. For example, Chapter 23 deals with formal semantics by starting with simple interpreters written in Prolog. These interpreters lead naturally to language definitions using big-step operational semantics. That is why formal semantics occurs so late in the book: only at the end of the Prolog tutorial are students ready to be led from Prolog exercises to this related, abstract topic.
Table of Contents:
1. Programming Languages
2. Defining Program Syntax
3. Where Syntax Meets Semantics
4. Language Systems
5. A First Look at ML
6. Types
7. A Second Look at ML
8. Polymorphism
9. A Third Look at ML
10. Scope
11. A Fourth Look at ML
12. Memory Locations for Variables
13. A First Look at Java
14. Memory Management
15. A Second Look at Java
16. Object Orientation
17. A Third Look at Java
18. Parameters
19. A First Look at Prolog
20. A Second Look at Prolog
21. Cost Models
22. A Third Look at Prolog
23. Formal Semantics
24. The History of Programming Languages