Programming Languages Test #1

Created by Phillip Hyams

Imperative Languages
Languages designed around state changes and statement sequences that directly reflect the underlying von Neumann computer architecture[cite: 4]

1/72

TermDefinition
Imperative Languages
Languages designed around state changes and statement sequences that directly reflect the underlying von Neumann computer architecture[cite: 4]
Functional Languages
Languages structured around expression evaluation and mathematical functions without relying on state mutation or assignment statements[cite: 4]
Logic Languages
Languages based on formal symbolic logic where computation is expressed as declarative rules and relationships rather than sequential algorithms[cite: 4]
Scripting Languages
Languages originally designed for automating tasks gluing existing applications together or manipulating dynamic environments[cite: 4]
Von Neumann Architecture
The foundational computer architecture featuring memory cells and a fetch-decode-execute cycle that heavily influenced imperative language design[cite: 4]
Structured Design
A software design methodology that manages complexity by decomposing large programs into smaller independently callable subprograms[cite: 4]
Object-Oriented Design
A design methodology that bundles data and behavior together into objects and supports features like inheritance and polymorphism[cite: 4]
Compilation
An implementation method where high-level source code is fully translated into native machine code before execution for maximum runtime speed[cite: 4]
Interpretation
An implementation method where source code is parsed and executed line-by-line without an ahead-of-time binary build step[cite: 4]
Hybrid Implementation
An implementation method where source code is compiled into intermediate bytecode and then executed by a virtual machine[cite: 4]
Readability
A language evaluation criterion measuring how easily programs can be read and understood by developers[cite: 4]
Writability
A language evaluation criterion measuring how easily a language can be used to write programs for a specific domain[cite: 4]
Reliability
A language evaluation criterion measuring whether a program performs according to its specification without failing[cite: 4]
Cost
A language evaluation criterion considering overall financial and resource expenses including development execution and compilation time[cite: 4]
Simplicity
A language characteristic affecting readability and writability by avoiding excessive feature counts or multiple ways to perform the same task[cite: 4]
Orthogonality
A design characteristic where a small set of primitive constructs can combine consistently without unexpected special cases[cite: 4]
Expressivity
A language characteristic that provides powerful concise constructs allowing complex tasks to be written in fewer lines[cite: 4]
Lexemes
The smallest syntactic units or tokens in a grammar such as identifiers operators or literals[cite: 3]
Tokens
Classes or categories of lexemes such as identifier additive_operator or int_literal[cite: 3]
Language Generator
A formal syntax mechanism that takes a grammar and produces all possible legal sentences in the language[cite: 3]
Language Recognizer
A tool like a compiler parser that takes a sentence and determines whether it is syntactically legal[cite: 3]
Chomsky Hierarchy
A classification of formal grammars into four types ranging from unrestricted type 0 to context free type 2 and regular type 3[cite: 3]
BNF
Backus-Naur Form a context-free metalanguage used to formally describe programming language syntax using rules and terminals[cite: 3]
Terminal Symbols
The actual literal characters or keywords in a BNF grammar that cannot be further expanded[cite: 3]
Non-Terminal Symbols
Variables or rule names in a BNF grammar that expand into combinations of terminals and non-terminals[cite: 3]
Ambiguous Grammar
A grammar that can generate two or more distinct parse trees for the exact same sentence[cite: 3]
Operator Precedence
A static semantic rule enforced in BNF by placing higher priority operators lower down in the rule hierarchy[cite: 3]
Operator Associativity
The evaluation order of operators of equal precedence determined by whether a BNF rule is left-recursive or right-recursive[cite: 3]
Left-Recursive Rule
A BNF rule where the left-hand non-terminal appears on the far left of the right-hand side enforcing left-associativity[cite: 3]
Static Semantics
Language rules and meaning enforced at compile time that cannot easily be specified using context-free BNF rules[cite: 3]
Attribute Grammars
BNF grammars augmented with attributes and semantic functions to enforce static semantic rules like type matching[cite: 3]
Synthesized Attributes
Attributes in an attribute grammar passed upward in a parse tree from child nodes to parent nodes[cite: 3]
Inherited Attributes
Attributes in an attribute grammar passed downward or across in a parse tree from parent or sibling nodes[cite: 3]
Lexical Analysis
The compiler phase that uses regular expressions to process raw character streams into a stream of tokens[cite: 3]
Parsing
The compiler phase that checks a token stream against context-free BNF rules to build a valid parse tree[cite: 3]
Variable Attributes
The six fundamental characteristics that define a variable: name address value type lifetime and scope[cite: 2]
Static Binding
A binding that first occurs before runtime begins and remains unchanged throughout program execution[cite: 2]
Dynamic Binding
A binding that first occurs during runtime or can change during the course of program execution[cite: 2]
Reserved Words
Special words in a language that can only be used for one specific built-in purpose and cannot be redefined[cite: 2]
Keywords
Special words that are parsed and interpreted based on context rather than being globally restricted[cite: 2]
Functional Side Effect
An unexpected state change outside a function caused by modifying an aliased parameter or reference[cite: 2]
Explicit Declaration
A statement that explicitly lists variable names and specifies their data type before use[cite: 2]
Implicit Declaration
A mechanism that binds a variable to a type automatically by default rules or initial assignment without formal declaration[cite: 2]
Declaration Elaboration
The runtime process of binding memory cells and attributes to stack-dynamic variables when execution enters their block[cite: 2]
Static Variables
Variables bound to memory before runtime that retain their value across function calls and prevent recursion support[cite: 2]
Stack-Dynamic Variables
Variables bound to storage on the program stack during declaration elaboration when execution reaches their block[cite: 2]
Explicit Heap-Dynamic Allocation
Heap storage allocated at runtime by explicit programmer commands like new or malloc[cite: 2]
Implicit Heap-Dynamic Allocation
Heap storage allocated automatically when a variable is assigned a value without explicit memory commands[cite: 2]
Static Scoping
Visibility of variables determined at compile time based on the physical spatial nesting structure of the program text[cite: 2]
Dynamic Scoping
Visibility of variables determined at runtime based on the dynamic call sequence of subprograms[cite: 2]
Referencing Environment
The complete collection of all variables visible to a program statement at a specific point in execution time[cite: 2]
Variable Lifetime
The duration of execution time during which a variable remains bound to a specific memory location[cite: 2]
Variable Scope
The range of program statements in which a variable is accessible and visible[cite: 2]
Data Type
A collection of valid data values and a set of predefined operations on those values[cite: 1]
Type Descriptor
A formal memory structure representing variable attributes like element type bounds and array size[cite: 1]
Primitive Data Types
Data types in a language that are not defined in terms of other data types such as int float or boolean[cite: 1]
BCD
Binary Coded Decimal an encoding that stores two decimal digits per byte used for exact financial accuracy without float errors[cite: 1]
Enumeration Types
User-defined discrete scalar types consisting of an ordered list of named constants[cite: 1]
Name Type Equivalence
A rule where two variables have equivalent types only if declared in the same statement or with the exact same type name[cite: 1]
Structure Type Equivalence
A rule where two variables have equivalent types if their internal memory layouts and component structures match[cite: 1]
Row-Major Order
A multi-dimensional array memory layout where consecutive elements of each row are stored adjacent in memory[cite: 1]
Column-Major Order
A multi-dimensional array memory layout where consecutive elements of each column are stored adjacent in memory[cite: 1]
Static Array
An array whose subscript ranges and memory allocation are statically bound before runtime[cite: 1]
Fixed Stack-Dynamic Array
An array whose subscript ranges are statically bound but whose storage is allocated on the stack at elaboration[cite: 1]
Fixed Heap-Dynamic Array
An array whose subscript ranges and heap storage allocation are bound at runtime upon explicit request[cite: 1]
Heap-Dynamic Array
An array whose subscript ranges are dynamic and can grow or shrink continuously during program execution[cite: 1]
Associative Array
An unordered collection of data elements indexed by key values rather than numeric positions also called a hash or dict[cite: 1]
Tuple
An ordered collection of elements that is immutable once created in languages like Python[cite: 1]
Record
A collection of non-homogeneous elements usually referenced by distinct field names[cite: 1]
Dangling Pointer
A pointer holding the memory address of a dynamic storage location that has already been deallocated[cite: 1]
Memory Leak
A condition where allocated heap dynamic variables lose all pointer references and can no longer be accessed or freed[cite: 1]
Strong Type Checking
A language design quality where all type errors are reliably caught either statically at compile time or dynamically at runtime[cite: 1]