1st Edition

Introduction to Programming Languages

By Arvind Kumar Bansal Copyright 2014
    624 Pages 157 B/W Illustrations
    by Chapman & Hall

    624 Pages
    by Chapman & Hall

    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