4 Metalinguistic Abstraction
- Expert programmers build up abstractions from simpler concepts to higher-level ones, and preserve modularity by adopting appropriate large-scale views of system structure.
- However, with increasingly complex problems we will find that Lisp, or any programming language, is not sufficient.
Highlights
We must constantly turn to new languages in order to express our ideas more effectively. Establishing new languages is a powerful strategy for controlling complexity in engineering design; we can often enhance our ability to deal with a complex problem by adopting a new language that enables us to describe (and hence to think about) the problem in a different way, using [terms] that are particularly well suited to the problem at hand. (Chapter 4)
- Metalinguistic abstraction means establishing new languages.
- An evaluator (or interpreter) is a procedure that implements a programming language.
Highlights
It is no exaggeration to regard this as the most fundamental idea in programming: The evaluator, which determines the meaning of expressions in a programming language, is just another program. (Chapter 4)
- Lisp is particularly well suited to metalinguistic abstraction.