The Beauty of Lisp
- Programming languages are about turning your ideas into a form a computer can understand.
- The ideas must be mathematically defined, but beyond that they can be arbitrary (Turing equivalence).
- Most good ideas need to be reused.
- Programming involves defining ideas and reducing them to "words", and then referencing those words whenever the idea needs to be reused.
- In this way, programs can be built in layers, one on top of the other, where each layer is abstracted away to make room for the next one.
- A good language has semantics that let you easily label common patterns of ideas (such as functions, data types, and object classes).
- A compiler turns source code from that language into machine code.
- Some ideas can't be reduced down to a single word in certain languages, because they don't follow the patterns the language designers anticipated, even though the ideas themselves are mathematically defined.
- As a result, the programmer has to "preprocess" his ideas into source code a mechanical task but one necessitated by the lack of expressiveness of the language. In essence, the programmer is doing the work of the compiler.
- Therefore, what's needed is the ability to define arbitrary patterns of ideas, not just arbitrary ideas.
- The only way to do this, is to be able to define the patterns in the programming language itself to write programs which can manipulate programs.
11/21/2006 11:37 pm
Comments