Week1 (1.3) Flashcards
How were the first computers in the 1940s programmed?
Using machine language, consisting of sequences of 0s and 1s.
What was the first step towards more people-friendly programming languages?
The development of mnemonic assembly languages in the early 1950s.
What are macro instructions in assembly languages?
Parameterized shorthands for frequently used sequences of machine instructions.
What were the first higher-level programming languages developed in the 1950s?
Fortran, Cobol, and Lisp.
How are programming languages classified by generation?
1st-generation: Machine languages, 2nd-generation: Assembly languages, 3rd-generation: Higher-level languages, 4th-generation: Domain-specific languages, 5th-generation: Logic- and constraint-based languages.
What is an imperative programming language?
A language where the program specifies how a computation is performed, with a notion of state and state changes.
What is a declarative programming language?
A language where the program specifies what computation is to be done, without detailing how to perform it.
What is a von Neumann language?
A language based on the von Neumann computer architecture, such as Fortran and C.
What is object-oriented programming?
A style where a program consists of a collection of objects interacting with one another.
Name some early and modern object-oriented programming languages.
Simula 67 and Smalltalk (early), C++, Java, and Ruby (modern).
What are scripting languages?
Interpreted languages with high-level operators for gluing computations, e.g., Python, JavaScript, Perl.
How did advances in programming languages impact compiler writers?
They had to create algorithms and representations to support new features and leverage new hardware capabilities.
Why are compilers critical for high-level languages?
They minimize execution overhead and enable high-performance architectures.
What makes compiler writing challenging?
Compilers are large, complex programs that handle many source languages and target machines.
What is undecidable in compiler design?
Generating the optimal target code for all possible source programs.
What is the purpose of studying compiler design?
To learn fundamental methodologies and ideas for creating compilers.