by Paul Graham, Prentice Hall, 1996, 0-13-370875-6
[p2] Programming languages teach you not to want what they cannot
provide. You have to think in a language to write programs in it,
and it's hard to want something you can't describe.
[p4] In the old model, bugs are not supposed to happen. Thorough
specifications, painstakingly worked out in advance, are supposed to
ensure that programs work perfectly. Sounds good in theory.
Unfortuantely, the specifications are both written and implementated
by humans. The result, in practice, is that the plan-and-implement
method does not work very well.
[p5] This is just what the new model of programming does assume.
Instead of hoping that people won't make mistakes, it tries to make
the cost of mistakes very low. The cost of a mistake is the time
required to correct it. With powerful languages and good programming
environments, this cost can be greatly reduced. Programming style
can then depend less on planning and more on exploration.
Planning is a necessary evil. It is a response to risk: the more
dangerous an undertaking, the more important it is to plan ahead.
Powerful tools decrease risk, and so decrease the need for planning.
THe design of your program can then benefit from what is probably the
most useful source of information available: the experience of
implementating it.
[p5] Lisp style has evolved this way because it yields results.
Strange as it sounds, less planning can mean better design. THe
history of technology is full of parallel cases. A similar change
took place in painting during the fifteenth century. Before oil
paint became popular, painters used a medium, called tempera,
that cannot be blended or overpainted. THe cost of mistakes was
hight, and this tended to make painters conservative. Then came oil
pant, and with it a great change in style. Oil "allows for second
thoughts." This proved a decisive advantage in dealing with difficult
subjects like the human figure.
[p6] More powerful tools are taking the risk out of exploration.
That's good news for programmers, because it means we will be able to
undertake more ambitious projects. The use of oil paint certainly
had this effect. The period immediately following its adoption was a
golden age of painting. There are signs already that something
similar is happening in programming.
[p405] 112 The most horrible Lisp bugs may be those involving
dynamic scope. Such errors almost never occur in Common Lisp, which
has lexical scope by default.