Programming-Languages-Q&A
Category: Software Development
The following is a list of questions (and answers) that should help as a refresher about topics related to programming languages in general; and to compilation, code execution, programming language internals, run-time program management, in particular.
- What is the difference between machine language and assembly language?
- What is generally considered the first high-level programming language?
- In what way are high-level languages an improvement on assembly language?
- Under what circumstances does it still make sense to program in assembler?
- What makes a programming language successful?
- Why are there so many programming languages?
- What distinguishes declarative languages from imperative languages?
- Name three languages in each of the following categories: von Neumann, functional, object-orianted; Name two logic languages, and two concurrent languages.
- Explain the distinction between interpretation and compilation (advantages and disadvantages)
- Is Java compiled or interpreted (or both)? How do you know?
- What is the difference between a compiler and a preprocessor?
- What is P-code?
- What is bootstrapping?
- What is a just-in-time compiler?
- Name two languages in which a program can write pieces of itself "on the fly"
- Describe three unconventional compilers - compilers whose job is not to prepare a high-level program for execution on a microprocessor
- List six kinds of tools that commonly support the work of a compiler within a larger programming environment
- Explain how an IDE is different than a collection of command-line tools
- List the principal phases of compilation; describe the work performed by each
- Describe the form in which a program is passed from the scanner to the parser; from parser to semantic analyzer; from semantic analyzer to the intermediate code generator
- What distinguishes the front-end of a compiler from the back-end?
- What is the difference between a phase and a pass of compilation? Under what circumstances does it make sense for a compiler to have multiple passes?
- What is the purpose of a compiler's symbol table?
- What is the difference between static and dynamic semantics?
- On modern machines do assembly language programmers still tend to write better code than a good compiler can? Why or why not?
- What is binding time?
- What are the advantages/disadvantages of early binding vs. late binding?
- What determines whether an object is allocated statically, on the stack, or dynamically on the heap?
- What is a stack pointer?
- What is a frame pointer?
- What is a calling sequence?
- What are internal and external fragmentation?
- What is garbage collection?
- What is a dangling reference?
- What is the difference between lifetime and visibility of a name-to-object binding?
- What is meant by "scope" of a name-to-object binding?
- What is the difference between a declaration and a definition (and why is it important)?
- What are forward references?
- What is the purpose of a scope resolution operator?
- What is the "closest nested scope rule"?
- What is a referencing environment?
- What is the difference between static and dynamic scoping?

