TY - BOOK AU - Bansal,Arvind Kumar TI - Introduction to programming languages SN - 9781466565142 U1 - 005.1 PY - 2014/// CY - Boca Raton PB - CRC press KW - Programming Languages (Electronic computers) KW - Computer Programming KW - Programmierparadigma KW - Programmiersprache N1 - "Chapman & Hall book."; Includes bibliographical references (pages 557-566) and index; Chapter 1 ■ Introduction 1.1 MULTITUDE OF PROBLEM DOMAINS 1.2 MOTIVATION 1.3 LEARNING OUTCOMES 1.4 PROGRAM AND COMPONENTS 1.4.1 Abstractions in Programs 1.4.2 Program Comprehension and Jumps 1.4.3 Execution of Programs 1.5 INTEROPERABILITY OF PROGRAMMING LANGUAGES 1.6 SOFTWARE DEVELOPMENT CYCLE 1.7 CRITERIA FOR A GOOD PROGRAMMING LANGUAGE 1.8 HISTORY OF PROGRAMMING PARADIGMS AND LANGUAGES 1.8.1 Imperative Programming Paradigm 1.8.2 Declarative Programming Paradigm 1.8.3 Object-Oriented Programming Paradigm 1.8.4 Concurrent Programming Paradigm 1.8.5 Visual Programming Paradigm 1.8.6 Multimedia Programming Paradigm 1.8.7 Web-Based Programming Paradigm 1.8.8 Event-Based Programming Paradigm 1.8.9 Integration of Programming Paradigms 1.9 CLASSIFICATION OF LANGUAGES 1.9.1 Programming Paradigms-Based Classification 1.9.2 Implementation-Based Classification 1.9.3 Other Classifications 1.10 SUMMARY 1.11 ASSESSMENT 1.11.1 Concepts and Definitions 1.11.2 Problem Solving 1.11.3 Extended Response FURTHER READING Chapter 2 ■ Background and Fundamental Concepts 2.1 VON NEUMANN MACHINE 2.1.1 Address Mechanisms 2.2 DISCRETE STRUCTURES CONCEPTS 2.2.1 Set Operations 2.2.2 Boolean Logic and Predicate Calculus 2.2.3 Recursion 2.2.4 Finite State Machines 2.3 DATA STRUCTURE CONCEPTS 2.3.1 Sequences 2.3.2 Stacks and Queues 2.3.3 Reference Mechanisms 2.3.4 Recursive Data Structures 2.3.5 Trees 2.3.6 Graphs 2.3.7 Exhaustive Search 2.3.8 Mapping Data Structures in Linear Memory 2.3.9 Hash Tables 2.4 ABSTRACT CONCEPTS IN COMPUTATION 2.4.1 Mutable versus Immutable Variables 2.4.2 Bindings and Scope Rules 2.4.3 Types of Variables 2.4.4 Environment and Store 2.4.5 Functions and Procedures 2.4.6 Abstracting the Program Execution 2.4.7 Processes and Threads 2.4.8 Buffers 2.5 SUMMARY 2.6 ASSESSMENT 2.6.1 Concepts and Definitions 2.6.2 Problem Solving 2.6.3 Extended Response FURTHER READING Chapter 3 ■ Syntax and Semantics 3.1 INTRODUCTION TO SYNTAX AND SEMANTICS 3.2 GRAMMARS 3.2.1 Types of Grammars 3.2.2 Representing Grammar Using Backus-Naur Form 3.2.3 Extended Backus-Naur Form (EBNF) 3.2.4 Attribute Grammar 3.2.5 Hyper-Rules and Meta-Definitions 3.2.6 Abstract Syntax 3.3 SYNTAX DIAGRAMS 3.3.1 Translating Syntax Rules to Syntax Diagrams 3.3.2 Translating Syntax Diagrams to Syntax Rules 3.4 VALIDATING SENTENCE STRUCTURE 3.4.1 Lexical Analysis 3.4.2 Parsing 3.4.3 Handling Grammar Ambiguities 3.4.4 Abstract Syntax Tree 3.4.5 Automated Parsing 3.5 SEMANTICS 3.5.1 Operational Semantics 3.5.2 Axiomatic Semantics 3.5.3 Denotational Semantics 3.5.4 Action Semantics 3.5.5 Other Models of Semantics 3.6 SUMMARY 115 3.7 ASSESSMENT 3.7.1 Concepts and Definitions 3.7.2 Problem Solving 3.7.3 Extended Response FURTHER READING Chapter 4 ■ Abstractions in Programs and Information Exchange 4.1 DATA ABSTRACTIONS 4.1.1 Single Data Entities 4.1.2 Composite Data Entities 4.1.3 Collection of Data Entities 4.1.4 Extensible Data Entities 4.1.5 Ordering and Accessing Data Entities 4.1.6 Interconnected Data Entities 4.1.7 Persistence 4.1.8 Declarations and Environment Change 4.2 CONTROL ABSTRACTIONS 4.2.1 Assignment and Command Sequence 4.2.2 Conditional Statements 4.2.3 Iterative Constructs and Iterators 4.2.4 Block Structure 4.2.5 Program Units and Invocations 4.2.6 Modules 4.2.7 Objects and Classes 4.3 INFORMATION EXCHANGE 4.3.1 Mechanisms of Information Exchange 4.4 PARAMETER PASSING 4.4.1 Call-by-Value and Variations 4.4.2 Call-by-Reference and Variations 4.4.3 Call-by-Result 4.4.4 Call-by-Value-Result 4.4.5 Call-by-Name 4.4.6 Call-by-Need 4.4.7 Passing Subprograms as Parameters 4.4.8 Parameter Passing for Distributed Computing 4.5 SIDE EFFECTS 4.5.1 Aliasing and Side Effects 4.5.2 Regulating Side Effects 4.5.3 A Comprehensive Example 4.6 EXCEPTION HANDLING 4.7 NONDETERMINISTIC COMPUTATION 4.7.1 Guarded Commands 4.7.2 Stepwise Program Construction 4.8 PROGRAMS AS DATA 4.8.1 Functions as First-Class Objects 4.8.2 Meta-Programming and Reflexivity 4.9 SOFTWARE REUSE 4.9.1 Interoperability Revisited 4.10 CASE STUDY 4.10.1 Data Abstraction in Programming Languages 4.10.2 Control Abstractions in Programming Languages 4.10.3 Information Exchange in Programming Languages 4.11 SUMMARY 4.12 ASSESSMENT 4.12.1 Concepts and Definitions 4.12.2 Problem Solving 4.12.3 Extended Response FURTHER READING Chapter 5 ■ Implementation Models for Imperative Languages 5?i ABSTRACT COMPUTING MACHINE 5.2 TRANSLATING CONTROL ABSTRACTIONS 5.2.1 Translating Expressions 5.2.2 Translating Assignment Statement 5.2.3 Translating If-Then-Else Construct 5.2.4 Translating Case Statement 5.2.5 Translating Iterative Constructs 5.3 STATIC ALLOCATION 5.4 HYBRID ALLOCATION 5.4.1 Roles of Various Pointers 5.4.2 Calling Subprograms 5.4.3 Generating Data and Code Areas 5.5 IMPLEMENTING PARAMETER PASSING 5.5.1 Implementing Call-by-Value 5.5.2 Implementing Call-by-Reference 5.5.3 Implementing Call-by-Value-Result 5.6 LOW-LEVEL BEHAVIOR OF RECURSIVE PROCEDURES 5.7 IMPLEMENTING EXCEPTION HANDLER 5.8 SUMMARY 5.9 ASSESSMENT 5.9.1 Concepts and Definitions 5.9.2 Problem Solving 5.9.3 Extended Response FURTHER READING Chapter 6 ■ Dynamic Memory Management 6.1 HEAP ORGANIZATION 6.2 ALLOCATION OF DYNAMIC DATA OBJECTS 6.3 DEALLOCATION OF DYNAMIC DATA OBJECTS 6.4 FRAGMENTATION 6.5 GARBAGE COLLECTION—RECYCLING HEAP MEMORY 6.5.1 Garbage Collection Approaches 6.6 START-AND-STOP GARBAGE COLLECTION 6.6.1 Mark-and-Scan Algorithm 6.6.2 Copying Garbage Collection 6.6.3 Cheney's Modified Copying Garbage Collection 6.6.4 Generational Garbage Collection 6.7 INCREMENTAL GARBAGE COLLECTION 6.7.1 Baker's Algorithm 6.8 CONTINUOUS REFERENCE-COUNT GARBAGE COLLECTION 6.9 CONCURRENT GARBAGE COLLECTION 6.9.1 Concurrent Copying Garbage Collection 6.9.2 Concurrent Real-Time Garbage Collection 6.10 ISSUES IN GARBAGE COLLECTION 6.11 SUMMARY 6.12 ASSESSMENT 6.12.1 Concepts and Definitions 6.12.2 Problem Solving 6.12.3 Conceptual Type FURTHER READING Chapter 7 ■ Type Theory 7.1 ADVANTAGES OF TYPE DECLARATION 7.2 NOTION OF TYPE 7.2.1 Basic Data Types 7.3 SET OPERATIONS AND STRUCTURED TYPES 7.3.1 Ordinal Types 7.3.2 Cartesian Product and Tuples 7.3.3 Finite Mapping and Arrays 7.3.4 Pov^er Set and Set Constructs 7.3.5 Disjoint Union and Variant Record 7.3.6 Set Operations for Recursive Data Types 7.4 LIMITATIONS OF TYPE THEORY 7.5 POLYMORPHISM 7.5.1 Parametric Polymorphism 7.5.2 Inclusion Polymorphism and Subtypes 7.5.3 Overloading 7.5.4 Coercion 7.6 TYPE SYSTEM IN MODERN PROGRAMMING LANGUAGES 7.6.1 Universal Reference Type 7.7 TYPE EQUIVALENCE 7.7.1 Structure versus Name Equivalence 7.8 IMPLEMENTATION OF TYPES 7.8.1 Type Inference and Checking 7.8.2 Implementing Polymorphic Type Languages 7.9 CASE STUDY 7.9.1 Type System in Ada 7.9.2 Type System in C++ 7.9.3 Type System in Modula-3 7.10 SUMMARY 7.11 ASSESSMENT 7.11.1 Concepts and Definitions 7.11.2 Problem Solving 7.11.3 Extended Response FURTHER READING Chapter 8 ■ Concurrent Programming Paradigm 8.1 CONCURRENT EXECUTION AND ABSTRACTIONS 8.1.1 Race Conditions 8.1.2 Threads and Dependencies 8.1.3 Synchronization and Mutual Exclusion 8.1.4 Sequential Consistency 8.2 PROGRAM DEPENDENCY AND AUTOMATIC PARALLELIZATION 8.2.1 Control Dependency 8.2.2 Data Dependency 8.2.3 Program-Dependency Graph 8.2.4 Parallelization Techniques 8.2.5 Granularity and Execution Efficiency 8.2.6 Program Slicing 8.3 TASK AND DATA PARALLELISM 8.3.1 Task Parallelism 8.3.2 Data Parallelism 8.3.3 Integrating Task and Data Parallelism 8.4 DISTRIBUTED COMPUTING 8.4.1 Executing Remote Procedures 8.4.2 Parameter Passing in Remote Procedure Calls 8.5 COMMUNICATING SEQUENTIAL PROCESSES 8.5.1 CSP Algebra 8.5.2 Communicating Sequential Process Language 8.6 MEMORY MODELS FOR CONCURRENCY 8.6.1 Memory Model of C-H-l- • 8.7 CONCURRENT PROGRAMMING CONSTRUCTS 8.7.1 Coroutines 8.7.2 Cobegin-Coend 8.7.3 Fork-and-Join 8.7.4 Monitors 8.8 CASE STUDY 8.8.1 Concurrent Programming in Ada 8.8.2 Concurrent Programming in Java 8.8.3 Distributed Computing in Emerald 8.9 SUMMARY 8.10 ASSESSMENT 8.10.1 Concepts and Definitions 8.10.2 Problem Solving 8.10.3 Extended Response FURTHER READING Chapter 9 ■ Functional Programming Paradigm 9.1 EXPRESSIONS 9.2 EVALUATION OF X-EXPRESSIONS 9.2.1 Applicative-Order versus Normal-Order Reductions 9.3 FPS—FUNCTIONAL PROGRAMMING SYSTEMS 9.3.1 Kernel Functions 9.3.2 Functional-Forms for Constructing Complex Functions 9.3.3 Programming in FPS 9.3.4 Comparing X-Expressions and FPS 9.4 ABSTRACTIONS AND PROGRAMMING 9.4.1 Abstractions in Functional Programming Languages 9.4.2 Abstractions and Programming in the Lisp Family 9.4.3 Abstractions and Programming in Hope 9.4.4 Abstractions and Programming in Haskell 9.4.5 Abstractions and Functional Programming in Scala 9.4.6 Abstractions and Functional Programming in Ruby 9.5 IMPLEMENTATION MODELS FOR FUNCTIONAL LANGUAGES 9.5.1 SECD Machine and Eager Evaluation 9.5.2 Graph-Reduction Strategies 9.5.3 Implementing Lazy Evaluation 9.6 INTEGRATION WITH OTHER PROGRAMMING PARADIGMS 9.6.1 Concurrency in Functional Languages 9.7 SUMMARY 9.8 ASSESSMENT 9.8.1 Concepts and Definitions 9.8.2 Problem Solving 9.8.3 Conceptual Type FURTHER READING Chapter 10 ■ Logic Programming Paradigm 10.1 LOGIC PROGRAMMING FUNDAMENTALS 10.1.1 Facts and Rules 10.1.2 Forward and Backward Reasoning Systems 10.1.3 Data Representation 10.1.4 Unification—Bidirectional Information Flow 10.1.5 Representing Logic Programs 10.1.6 Properties of Logic Programs 10.2 ABSTRACT IMPLEMENTATION MODEL 10.2.1 Query Reduction 10.2.2 Mapping Query Reduction to AND-OR Tree 10.2.3 Backtracking 10.2.4 Warren Abstract Machine 10.2.5 Program Analysis 10.3 PROGRAMMING USING PROLOG 10.3.1 Cuts—Programmer-Directed Efficiency 10.3.2 Programming with Sets 10.3.3 Nondeterministic Programming 10.3.4 Abstractions and Meta-Programming 10.3.5 Limitations of Prolog 10.4 EXTENDING LOGIC PROGRAMMING PARADIGM 10.4.1 Temporal Logic Programming 10.4.2 Constraint Logic Programming 10.4.3 Inductive Logic Programming 10.4.4 Higher-Order Logic Programming 10.5 INTEGRATION WITH OTHER PARADIGMS 10.5.1 Integration with Functional Programming 10.5.2 Integration with Object-Oriented Programming 10.5.3 Concurrent Logic Programming 10.6 SUMMARY 10.7 ASSESSMENT 10.7.1 Concepts and Definitions 10.7.2 Problem Solving 10.7.3 Extended Response FURTHER READING Chapter 11 ■ Object-Oriented Programming Paradigm 11.1 CLASSES AND OBJECTS 11.1.1 Object—An Instance of a Class 11.2 CLASS-HIERARCHY AND INHERITANCE 11.2.1 Subclasses 11.2.2 Virtual Methods 11.2.3 Multiple-Inheritance 11.3 VISIBILITY AND INFORMATION EXCHANGE 11.3.1 Visibility of Member Entities 11.3.2 Encapsulation 11.3.3 Information Exchange 11.4 POLYMORPHISM AND TYPE CONVERSION 11.4.1 Parametric Polymorphism and Generic Templates 11.4.2 Casting 11.4.3 Subclass versus Subtyping 11.5 CASE STUDIES 11.5.1 Abstractions and Programming in C-j-P 11.5.2 Abstractions and Programming in Java 11.5.3 Abstractions and Programming in Scala 11.5.4 Abstractions and Programming in Ruby 11.6 IMPLEMENTATION OF OBJECT-ORIENTED LANGUAGES 11.6.1 Storage Allocation and Deallocation 11.6.2 Implementing Casting 11.6.3 Implementing Multiple-Inheritance 11.6.4 Implementing Virtual Entities and Methods 11.6.5 Overhead Issues and Optimizations 11.6.6 Run-Time Behavior 11.7 DISTRIBUTED OBJECT-ORIENTED MODELS 11.7.1 Distributed Objects in Emerald 11.7.2 Distributed Objects in Java 11.7.3 Remote Method Invocation 11.7.4 RMI-Based Programming 11.8 SUMMARY 11.9 ASSESSMENT 11.9.1 Concepts and Definitions 11.9.2 Problem-Solving 11.9.3 Extended Response FURTHER READING Chapter 12 ■ Web and Multimedia Programming Paradigms 12.1 CODE AND DATA MOBILITY 12.1.1 Issues in Mobile Computing 12.2 WEB-BASED PROGRAMMING 12.2.1 HTML 12.2.2 XML as Middleware Interface Language 12.2.3 Web Scripting 12.2.4 Applets 12.2.5 Security in Web Programming 12.3 VIRTUAL MACHINES AND RUN-TIME INTERFACE 12.3.1 Java Virtual Machine 12.3.2 Just-in-Time Compilation 12.4 COMPONENTS OF MULTIMEDIA SYSTEMS 12.4.1 Representation and Transmission 12.4.2 Perceptual Distortion 12.4.3 Synchronization in Multimedia 12.5 MULTIMEDIA PROGRAMMING CONSTRUCTS 12.5.1 Synchronization Constructs 12.6 CASE STUDY 12.6.1 Abstractions and Programming in Alice 12.6.2 Abstractions and Programming in SMIL 12.6.3 Abstractions and Web Programming in Javascript 12.6.4 Abstractions and Web Programming in C# 12.7 SUMMARY 12.8 ASSESSMENT 12.8.1 Concepts and Definitions 12.8.2 Problem Solving 12.8.3 Extended Response FURTHER READING Chapter 13 ■ Other Programming Paradigms 13.1 EVENT-BASED PROGRAMMING 13.1.1 Event Model 13.1.2 Developing an Event-Based Program 13.2 AGENT-BASED PROGRAMMING 13.2.1 Components of an Agent-Based System 13.2.2 Agent Security 13.2.3 Fault Tolerance in Multi-Agent Systems 13.3 HIGH PRODUCTIVITY MASSIVE PARALLEL PROGRAMMING 13.3.1 Partitioned Global Address Space 13.3.2 Constructs for High-Productivity Computing 13.4 SYNCHRONOUS LANGUAGES 13.4.1 Synchronous Constructs in Estrel 13.5 SUMMARY 13.6 ASSESSMENT 13.6.1 Concepts and Definitions 13.6.2 Problem Solving 13.6.3 Extended Response FURTHER READING Chapter 14 ■ Scripting Languages 14.1 COMPONENTS OF SCRIPTING LANGUAGES 14.1.1 Shell-Based Programming 14.1.2 Data-Driven Programming 14.1.3 Command Scripts 14.1.4 Text and String Processing 14.2 ABSTRACTIONS IN SCRIPTING LANGUAGES 14.2.1 Control and Data Abstractions 14.2.2 Shell Variables 14.2.3 Type Conversions 14.2.4 Regular Expressions and Pattern Matching 14.2.5 Programming Example 14.3 CASE STUDY 14.3.1 Abstractions and Programming in Perl 14.3.2 Abstractions in PHP 14.3.3 Abstractions and Programming in Python 14.3.4 Script Programming in Prolog 14.3.5 Script Programming in Ruby 14.3.6 Other Scripting Languages 14.4 SUMMARY 14.5 ASSESSMENT 14.5.1 Concepts and Definitions 14.5.2 Problem Solving 14.5.3 Extended Response FURTHER READING Chapter 15 ■ Conclusion and Future of Programming Languages 15.1 EVOLUTION OF PROGRAMMING PARADIGMS AND LANGUAGES 15.2 EVOLUTION OF IMPLEMENTATION MODELS AND COMPILERS 15.3 CONSTRUCT DESIGN AND COMPREHENSION 15.4 FUTURE DEVELOPMENT OF PROGRAMMING LANGUAGES FURTHER READING ER -