I spent quite a bit of time thinking about this. What's happening, I think, is that the various tools promote barriers to entry.
The higher, red line, is the "good program" level. If a programmer is working below the red line, they'll never produce something good. The red line is at a very shallow slope for a simple reason: The things that make a good program--critical thinking and analysis, memory, good planning, deep grasp of the problem and effective use of approaches to solving it--are largely independent of programming language or style. If your thinking is muddled, you won't do a good job, irrespective of language, tools, design approach, or whatever.
The key, and the reason the "best" programmers seemed to be working in the hardest language, is that assembler provides such a high barrier to getting anything working at all that most of the muddled thinkers can't ever get anything that even looks like it's working. There's not much space between the red and blue lines when you're working in assembler. The lower level languages allow more programmers to look like they're producing something useful, while not actually doing much. 90% of the productive work is done by the 5 or 10% that are above the red line.
Up until about 1990, a programmer's ability to work in assembler was a pretty good calibration of their overall competence. A good assembler programmer working in a higher level language would simply be more productive. But after that time, astonishingly few professional programmers really understood the machine. By 1997, it was rare to find a entry level candidate for an operating systems team that had more than a smattering of assembly experience. And the higher level languages allow a lot more muddled thinkers into the process. In the 70s and 80s, we couldn't tolerate much muddled code into the final product--there was some, but memory and disk space was too precious. Nowadays, nobody seems to care. The muddled thinking--and remember that with today's very high level languages, which functionally consist of gluing libraries together, that's an extremely high percentage--becomes a very high percentage of the shipping project. One consequence of this is that you must download and install 700MB to update your telephone. If all the programmers involved were working above the red line, it would probably be about 20MB.
No comments:
Post a Comment