Introduction | |||
Programming Language | Special Purpose Programming Language | Imperative Languages | |
Declarative Languages | Compilation | Interpretation | |
Preprocessing | Macro | Library | |
Intermediate Code | Phase of Compilation | ||
Lexical and Syntax Analyses | |||
Scanner | Lexical Analysis | Token | |
Regular expression | Syntax Analysis | Parser | |
Scripting/Perl | |||
Scripting Language | Scalar type | Hash/Dictionary | |
List | Context | Regular Expression Matching | |
dynamic scope | |||
Binding, Scope and Storage Allocation | |||
Naming | Control Abstraction | Data Abstraction | |
Binding | Binding Time | Object Lifetime | |
Static Allocation | Stack-based Allocation | Heap-based Allocation | |
Internal Fragmentation | External Fragmentation | Overloading | |
Scope | Static Scope | Nested Scope | |
Dynamic Scope | Symbol Table | ||
Functional Programming/ML | |||
von Neumann Style Language | Functional Language | Currying | |
Applicative Order | Normal Order | Eager Evaluation | |
Lazy Evaluation | Strict Function | Nonstrict Function | |
Derived Type | Polymorphic Type | Higher-Order Function | |
Type Variable | Pattern Matching | ... | |
Data Types | |||
Data Type | Type System | Type Checking | |
Strongly Typed Language | Statically Typed Language | Weakly Typed Language | |
Enumeration Type | Subrange Type | Structural Equivalence | |
Nominal Equivalence | Type Compatibility | Type Conversion | |
Converting Cast | Non-converting Cast | Type Inference | |
Record | Variant Record | Unicode | |
Control Abstraction | |||
Formal Parameter | Actual Parameter | Subroutine Frame | |
Activation Record | Pass-by-value | Pass-by-result | |
Pass-by-value-result | Pass-by-reference | Pass-by-name | |
Thunk | Exception | Exception Handler | |
Dynamic Chain | Shallow Binding | Deep Binding |
Control Flow | ||
Control Flow | Operator | Precedence |
Associativity | Side Effect | Expression |
Statement | Value Model | Reference Model |
Orthogonality | Short-circuit Evaluation | Enumeration-controlled Loop |
Logically-controlled Loop | Iterator | Nondeterminacy |
Logic Programming/Prolog | ||
Horn Clause | Logic Program | Resolution |
Unification | Database of Clauses | Cut |
Principle of Resolution | Unification Rules | Forward Chaining |
Backward Chaining | Infinite Regression | Closed world Assumption |
Relations | ||
Data Abstraction and Object Orientation | ||
Data Abstraction | Encapsulation | Attribute |
Message | Inheritance | Polymorphism |
Method Binding | Module-as-type | Module-as-manager |
Constructor | Destructor | Garbage Collection |
Memory Leak | Dangling Reference | Reference Counting |
Mark-and-sweep Collection | Pointer Reversal | Store-and-Copy Collection |
Static Method Binding | Dynamic Method Binding | Virtual Method Table |
Building a Runnable Program | ||
Front-end | Back-end | Control Flow Graph |
Intermediate Code Generation | Compilation Pass | Intermediate Form |
Stack-based Language | Just-in-time Compiler | Adaptive Compiler |
Native Method | Monolithic Object Representation | Splitted Object Representation |
Relocatable Object Code | External Symbol | Executable Code |
Linker | Dynamic Link Library | |
Code Optimization | ||
Optimization Rules | Local Optimization | Global Optimization |
Strength Reduction | Common Subexpression Elimination | Code Motion |
Loop Unrolling | Peephole Optimization | Constant Folding |
Constant Propagation | Copy Propagation | In-line Expansion |
Virtual Register | Value Numbering | |
Concurrent Programming | ||
Concurrent Program | Thread | Thread Lifetime |
Co-begin/Co-end | Parallel Loop | Data Dependency |
Fork/Join | Process | Coroutine |
Scheduler | Non-preemptive Multithreading | Preemptive Multithreading |
Communication | Synchronization | Semaphore |
Message Passing | ||
Case Study: C# and .NET | ||
.NET | Common Language Run-time System | Common Language Interface |
Property | Delegate | |
Semantic Analysis | ||
Semantic Analysis | Attribute Grammar | Attribute Flow |
Synthetic Attribute | Inherited Attribute | S-Attributed Grammar |
Action Routine | Dynamic Semantics |