Principals of Programming Language
Programming languages
Programming languages
Programming languages
Expressions and Assignment Statements
Subprograms
Abstract data types and concurrency
Exception Handling and Event Handling
Logic Programming Languages
- Abstract Machines
- The Interpreter
- Low-level and High-level languages
- Example of an Abstract Machine
- Describe a Programming Language
- Grammar and Syntax
- Principles of language design
- Programming paradigm
- History of programming languages
- Language design
- Design goals of programming languages
- Compilers
- Virtual machines and interpreters
- Elementary data types
- Integer operations
- Overflow operation
- Enumeration types
- Character type
- Boolean type
- Subtypes
- Derived types
- Expressions
- Assignment statements
- Introduction to syntax and semantics
- Problem of Describing Syntax
- Methods of Describing Syntax
- Extended BNF
- Attribute Grammars
- Attribute Grammars Defined
- Examples of Attribute Grammars
- Computing Attribute Values
- Dynamic Semantics
- Axiomatic Semantics
- Chomsky Hierarchy
- Introduction to lexical and semantic analysis
- Lexical Analysis
- Parsing Problem
- Top-Down parsing
- Bottom-Up Parsing
- Complexity of Parsing
- LL Grammar Class
- Parsing Problem for Bottom-Up Parsers
- Shift-Reduce Algorithms
- LR Parsers
- Data type
- Primitive Data Types
- Character String Types
- Implementation of Character String Types
- Array Types
- Array Categories
- Slices
- Implementation of Array Types
- Associative Arrays
- Record Types
- Tuple Types
- List Types
- Union Types
- Pointer and Reference Types
- Pointer Problems
- Pointers in C and C++
- Reference Types
- Implementation of Pointer and Reference Types
- Heap Management
- Type Checking
- Strong Typing
- Expressions
- Arithmetic Expressions
- Operator Evaluation Order
- Associativity
- Parentheses
- Operand Evaluation Order
- Referential Transparency
- Overloaded Operators
- Type Conversions
- Coercion in Expressions
- Explicit Type Conversion
- Relational and Boolean Expressions
- Short-Circuit Evaluation
- Assignment statements
- Fundamentals of Subprograms
- Procedures and Functions in subprograms
- Design Issues for Subprograms
- Local Referencing Environments
- Parameter-Passing Methods
- Implementating Models of Parameter Passing
- Implementing Parameter-Passing Methods
- Type Checking Parameters
- Parameters That Are Subprograms
- Calling Subprograms Indirectly
- Overloaded Subprograms
- Generic Subprograms
- Generic Functions in C++
- Generic Methods in Java 5.0
- Design Issues for Functions
- User-Defined Overloaded Operators
- Closures
- Coroutines
- The Concept of Abstraction
- Data Abstraction
- Design Issues for Abstract Data Types
- Abstract Data Types in Ada
- Abstract Data Types in C++
- Abstract Data Types in C#
- Parameterized Abstract Data Types
- Parameterized Abstract Data Types in C++
- Encapsulation in C
- Encapsulation in C++
- Concurrency
- Categories of Concurrency
- Subprogram-Level Concurrency
- Flow diagram of task states
- Semaphores
- Cooperation Synchronization
- Competition Synchronization
- Monitors
- Message Passing
- Ada Support for Concurrency
- Java Threads
- High-Performance Fortran