In programming courses, using the different syntax of multiple languages, such as C++, Java, PHP, and Python, for the same abstraction often confuses students new to computer science. Introduction to Programming Languages separates programming language concepts from the restraints of multiple language syntax by discussing the concepts at an abstract level.
Designed for a one-semester undergraduate course, this classroom-tested book teaches the principles of programming language design and implementation. It presents:
- Common features of programming languages at an abstract level rather than a comparative level
- The implementation model and behavior of programming paradigms at abstract levels so that students understand the power and limitations of programming paradigms
- Language constructs at a paradigm level
- A holistic view of programming language design and behavior
To make the book self-contained, the author introduces the necessary concepts of data structures and discrete structures from the perspective of programming language theory. The text covers classical topics, such as syntax and semantics, imperative programming, program structures, information exchange between subprograms, object-oriented programming, logic programming, and functional programming. It also explores newer topics, including dependency analysis, communicating sequential processes, concurrent programming constructs, web and multimedia programming, event-based programming, agent-based programming, synchronous languages, high-productivity programming on massive parallel computers, models for mobile computing, and much more. Along with problems and further reading in each chapter, the book includes in-depth examples and case studies using various languages that help students understand syntax in practical contexts.
Introduction
MULTITUDE OF PROBLEM DOMAINS
MOTIVATION
LEARNING OUTCOMES
PROGRAM AND COMPONENTS
INTEROPERABILI TY OF PROGRAMMING LANGUAGES
SOFTWARE DEVELOPMENT CYCLE
CRITERIA FOR A GOOD PROGRAMMING LANGUAGE
HISTORY OF PROGRAMMING PARADIGMS AND LANGUAGES
CLASSIFICATION OF LANGUAGES
Background and Fundamental Concepts
VON NEUMANN MACHINE
DISCRETE STRUCTURES CONCEPTS
DATA STRUCTURE CONCEPTS
ABSTRACT CONCEPTS IN COMPUTATION
Syntax and Semantics
INTRODUCTION TO SYNTAX AND SEMANTICS
GRAMMARS
SYNTAX DIAGRAMS
VALIDATING SENTENCE STRUCTURE
SEMANTICS
Abstractions in Programs and Information Exchange
DATA ABSTRACTIONS
CONTROL ABSTRACTIONS
INFORMATION EXCHANGE
PARAMETER PASSING
SIDE EFFECTS
EXCEPTION HANDLING
NONDETERMINISTIC COMPUTATION
PROGRAMS AS DATA
SOFTWARE REUSE
CASE STUDY
Implementation Models for Imperative Languages
ABSTRACT COMPUTING MACHINE
TRANSLATING CONTROL ABSTRACTIONS
STATIC ALLOCATION
HYBRID ALLOCATION
IMPLEMENTING PARAMETER PASSING
L OW-LEVEL BEHAVIOR OF RECURSIVE PROCEDURES
IMPLEMENTING EXCEPTION HANDLER
Dynamic Memory Management
HEAP ORGANIZATION
ALLOCATION OF DYNAMIC DATA OBJECTS
DEALLOCATION OF DYNAMIC DATA OBJECTS
FRAGMENTATION
GARBAGE COLLECTION—RECYCLING HEAP MEMORY
START-AND-STOP GARBAGE COLLECTION
INCREMENTAL GARBAGE COLLECTION
CONTINUOUS REFE RENCE-COUNT GARBAGE COLLECTION
CONCURRENT GARBAGE COLLECTION
ISSUES IN GARBAGE COLLE CTION
Type Theory
A DVANTAGE S OF TYPE DECLARATION
NOTION OF TYPE
SET OPERATIONS AND STRUCTURED TYPES
LIMITATIONS OF TYPE THEORY
POLYMORPHISM
TYPE SYSTEM IN MODERN PROGRAMMING LANGUAGES
TYPE EQUIVALENCE
I MPLEMENTATION OF TYPES
CASE STUDY
Concurrent Programming Paradigm
CONCURRENT EXECUTION AND ABSTRACTIONS
PROGRAM DEPENDENCY AND AUTOMATIC PARALLELIZATION
TASK AND DATA PARALLELISM
DISTRIBUTED COMPUTING
COMMUNICATING SEQUENTIAL PROCESSES
MEMORY MODELS FOR CONCURRENCY
CONCURRENT PROGRAMMING CONSTRUCTS
CASE STUDY
Functional Programming Paradigm
EXPRESSIONS
EVALUATION OF λ-EXPRESSIONS
FPS—FUNCTIONAL PROGRAMMING SYSTEMS
A BSTRACTIONS AND PROGRAMMING
IMPLEMENTATION MODELS FOR FUNCTIONAL LANGUAGES
INTEGRATION WITH OTHER PROGRAMMING PARADIGMS
Logic Programming Paradigm
LOGIC PROGRAMMING FUNDAMENTAL S
ABSTRACT IMPLEMENTATION MODEL
PROGRAMMING USING PROLOG
EXTENDING LOGIC PROGRAMMING PARADIGM
INTEGRATION WITH OTHER PARADIGMS
Object-Oriented Programming Paradigm
CLASSES AND OBJECTS
CLASS HIERARCHY AND INHERITANCE
VISIBILI TY AND INFORMATION EXCHANGE
POLYMORPHISM AND TYPE CONVERSION
CASE STUDIES
IMPLEMENTATION OF OBJECT-ORIENTED LANGUAGES
DISTRIBUTED OBJECT-ORIENTED MODELS
Web and Multimedia Programming Paradigms
CODE AND DATA MOBILITY
WEB-BASED PROGRAMMING
VIRTUAL MACHINES AND RUN-TIME INTERFACE
COMPONENTS OF MULTIMEDIA SYSTEMS
MULTIMEDIA PROGRAMMING CONSTRUCTS
CASE STUDY
Other Programming Paradigms
EVENT-BASED PROGRAMMING
AGENT-BASED PROGRAMMING
HIGH PRODUCTIVITY MASSIVE PARALLEL PROGRAMMING
SYNCHRONOUS LANGUAGES
Scripting Languages
COMPONENTS OF SCRIPTING LANGUAGES
ABSTRACTIONS IN SCRIPTING LANGUAGES
CASE STUDY
Conclusion and Future of Programming Languages
EVOLUTION OF PROGRAMMING PARADIGMS AND LANGUAGES
EVOLUTION OF IMPLEMENTATION MODELS AND COMPILERS
CONSTRUCT DESIGN AND COMPREHENSION
FUTURE DEVELOPMENT OF PROGRAMMING LANGUAGES
Appendices
Bibliography
Index
A Summary, Assessment, and Further Reading appear at the end of each chapter.
Biography
Arvind Bansal is a professor of computer science at Kent State University. A member of IEEE and ACM, he is an area editor of Tools with Artificial Intelligence . His research interests include the areas of concurrent logic programming, fault-tolerant agent-based systems, knowledge bases, program analysis, XML-based multimedia languages and systems, bioinformatics, biological computing, and proteomics. He received a PhD in computer science from Case Western Reserve University.
"… a great introductory text, providing essential knowledge in the field and enabling students to place in the appropriate context the programming concepts they learned in their introductory courses. … The author has cleverly placed an introduction to data structures commonly used by programming languages in the second chapter, minimizing prerequisites and enabling the book’s usage at the sophomore level. Theory has been kept to levels suitable for a general undergraduate population and is supported by a wealth of concise, well-illustrated examples. … Recommended."
—CHOICE, August 2014