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.