Programming Languages: Principles and Paradigms by Allen Tucker
Programming Languages: Principles and Paradigms by Allen Tucker and Robert Noonan provides balanced coverage of both the principles of language design and the different programming paradigms.
The principles of language design are covered using a formal model and a hands-on laboratory suite that uses a Java interpreter to implement the formal model. This approach gives students an excellent grasp of language design theory and its relationship to practice. It also lays the foundation for the paradigms that are presented in the second half of the book.
The text presents and contrasts six major programming paradigms: imperitave, object-oriented, functional, logic, concurrent, and event-driven programming. Through the use of one language for each paradigm, students gain a deep understanding of the paradigm without being distracted by a profusion of languages.