Good programmers make up a very small percentage of all the programmers, and they’re already very efficient, so making them slightly more efficent will have negligable effect on the world.
Average programmers, though, are everywhere. Make them 5% more efficient, or make them create 5% better programs, and you’ve made a huge difference. That’s why Basic (and the whole suite of Microsoft tools like Access) are so great. (Not “great” as in “good programs”, “great” as in “good for the world”.)
The fundamental argument seems to be that because good programmers are statistically insignificant, helping them doesn't do the world much (if any) good.
I think this argument is flawed because it neglects the kind of work being done by good programmers versus average programmers. Most programmers (average, good, and bad) probably spend most of their time working on problems that have already been solved.
However, I suspect that the percentage of good programmers is much higher among those trying to solve new problems and come up with new ways to use computers. If I am correct (and I'm not sure how to prove or disprove it), then that means that helping good programmers helps us all by increasing the rate and quality of invention.
8 comments:
I agree. Now, what do we do about this?
I suppose that the most obvious thing to do is to make languages focused on helping good programmers, like Paul Graham is doing with Arc.
What do you think about [1] and [2]?
[1]http://blogs.tedneward.com/2008/02/18/Modular+Toolchains.aspx
[2]http://plpatterns.blogspot.com/2007/12/greatest-contribution-to-programming.html
I'm not particularly optimistic about the idea of having the "real" representation of a program be some internal tree structure. It seems to be an idea that comes up again and again, and it comes with some beautiful promises, but giving up all of the ways we have for manipulating text, and giving up the fundamental portability of text, seem like high prices to me.
What is XML, but a tree structure?
Have you ever thought about how keeping everything plaintext, and how the tools for manipulating plaintext, might be inherently limiting? Put another way, where do you see the next breakthrough? You mention Arc, which is based on Lisp, which treats code as data, which goes right back to an "internal tree structure".
I have no idea where the next breakthrough will be, and I tend to be very lousy at spotting breakthroughs.
One of the disadvantages of being an amateur historian is that I have a tendency to look at things and say "That's a good idea, but nobody went for it the last couple times around, so I'm not going to get excited until it actually takes off."
I might also lean towards plain text because I tend to be more of a "language maven" in the IDE Divide.
Hello,
I am author of [2] (which has moved to plpatterns.com). All this time since your first post I have been subscribed to your blog; why have you stopped posting?
Great observation. And interesting link about the IDE Divide.
I would say that the power of your "tools" are limited by your language, so I would also side with the "language mavens".
However, it's all well and good when the language is brand new and you're doing nothing but writing new code. But once projects have been around and you have to start maintaining them, you have to start refactoring. And this is where the "tools" are essential. Code transformations in pure text are extremely error-prone.
My point is that both language features and tool features have their place, and it's just a matter of time before they evolve together, à la Subtext.
As for why Lisp hasn't taken off in the past, I think one of the biggest reasons is that average programmers simply don't get the idea that code is data. Because once you do, almost everything else Lisp follows. And everything that doesn't embrace the concept — lacking.
I keep meaning to post more. I have a directory full of .txt files about things I find interesting and might blog about, but I just got distracted with other stuff.
Knowing that I still have a subscriber after all this dead time is encouraging. Thanks for the comment and I'll see what I can come up with.
Post a Comment