We've been criticized for designing Arc as a language for
good programmers. Good design, the argument goes, means
understanding the needs of your users, and most programmers
are not good programmers.
So let's consider two cars: the 1973 Cadillac Coupe de Ville
and the 1973 Porsche 911. The Cadillac was carefully designed
to appeal to the average driver. The 911 was designed for
performance. Which one is better design?
|1973 Cadillac Coupe de Ville|
|1973 Porsche 911E|
I chose images from 1973 deliberately. It's easier to tell
good design from bad when you're not looking at current
fashions. (Try looking at the haircuts in an old high school
Good design is timeless, and if you want something timeless
you can't pander to the limitations of some hypothetical
"average" user. It's too vague a target. It's also a
moving target: the average
user might not be as stupid as you think.
Look what happened with the 911. It's
so obviously superior to the Cadillac that a child could
tell it's better. And so,
by the 1980s, even the
drug dealers that the
Cadillac was designed for wanted
The same thing happens in languages. The great languages
have been the ones that good programmers designed for
their own use-- C, Smalltalk, Lisp. The languages that were consciously designed for "average"
programmers (Cobol, Pascal, Ada) have tended to be
evolutionary dead ends.
The only reliable plan is to design for performance. Performance
doesn't mean speed; that's taking the metaphor too literally.
Speed counts, but a programming language is first of all a tool
for thinking in. We want thinking in Arc to feel like driving a 911.
(I'm not claiming it will, just that that's the target.)