Tue Nov 21, 2006

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.
      • That is what Lisp is.


11/21/2006 11:37 pm | Comments (0) | #

« Prev Page

Next Page »