A good programming language should, like oil paint, make it easy to change your mind.
...
Paintings usually begin with a sketch. Gradually the details get filled in. But it is not merely a process of filling in. Sometimes the original plans turn out to be mistaken. Countless paintings, when you look at them in x-rays, turn out to have limbs that have been moved or facial features that have been readjusted.
...
So the test of a language is not simply how clean the finished program looks in it, but how clean the path to the finished program was.
...
What made oil paint so exciting, when it first became popular in the fifteenth century, was that you could make the finished work from the prototype. You could make a preliminary drawing if you wanted to, but you weren't held to it; you could work out all the details, and even make major changes as you finished the painting. You can do this with software too. A prototype doesn't have to be just a model; you can refine it into the finished product....it's good for morale.
...
Building something by gradually refining a prototype is good for morale because it keeps you engaged. In software, my rule is: always have working code. If you're writing something you'll be able to test in an hour, you have the prospect of an immediate reward to motivate you.
-- Paul Graham, "Hackers and Painters"
Database Dated : 7/17/2025 6:02:35 PM