Here are some random snippets and comments on a really large essay by Richard P. Gabriel & Ron Goldman.
It’s not so much that your favorite programming language is slow— rather, that lame hardware we have to run on is optimized for Fortran:
“Early computing practices evolved under the assumption that the only uses for computers were military, scientific, and engineering computation-along with a small need for building tools to support such activities. We can characterize these computational loads as numeric, and the resulting computational requirements as Fortran-like. Early attempts to expand the realm of computing-such as John McCarthy’s valiant attempt with Lisp and artificial intelligence, Kristen Nygaard’s similarly pioneering attempt with Simula, Doug Englebart’s intriguing attempt to expand our usage options, Alan Kay’s later attempt with Smalltalk, and Alain Colmerauer’s attempt with Prolog-were rebuked.”
The way we write code, we might as well be writing in assembly:
“Programming languages have hardly shown one scintilla of difference from the designs made in the first few years of computing. All significant programming languages are expressively, conceptually, and aesthetically equivalent to Fortran and assembly language.”
The only thing worse than a lack of modularity is any attempt to actually reuse the component parts:
“The real problem with modular parts is that we took a good idea-modularity-and mixed it up with reuse. Modularity is about separation: When we worry about a small set of related things, we locate them in the same place. This is how thousands of programmers can work on the same source code and make progress. We get in trouble when we try to use that small set of related things in lots of places without preparing or repairing them.”
The “Popular Culture” that Kay has complained about is not the thing that killed the next revolutionary computer language– Atari and Infocom aren’t responsible for the retardation of computer science. It’s was the commoditization of programmers and the subsequent elimination of a common and accessible source code that set us back a decade or more:
“When software became merchandise, the opportunity vanished of teaching software development as a craft and as artistry. The literature became frozen. It’s extremely rare today to stumble across someone who is familiar with the same source code as you are. If all remnants of literature disappeared, you’d expect that eventually all respect for it-as an art form, as a craft, as an activity worthy of human attention-would disappear. And so we’ve seen with software: The focus is on architecture, specifications, design documents, and graphical design languages. Code as code is looked down on: The lowest rank in the software development chain is “coder”-right alongside QA drone and doc writer.”
The fact that the masses had home computers and did goofy things is not what caused the setback. It was the demand that those users brought to the table that made change the dynamics of the hacker cultures of the day: teams of programmers all over the world were suddenly in competition with each other. Community ceased to exist, and software development culture shifted to something modeled more on dark age alchemists than modern mathematicians or scientists.
I didn’t know the history of the Oxford English Dictionary:
“Over a period of 70 years, many hundreds of people sent in over 6 million slips with words and their interesting occurrences in thousands of books. This resulted in the Oxford English Dictionary, the ultimate authority on English, with 300,000 words, about 2.5 million citations, 8.3 citations per entry, and in 20 volumes.”
Of course, in spite of OED’s influence, the decisions of its editors were still of the sort to routinely gall a philologist like Tolkien. Nevertheless, the point is taken: in a similar situation, Wikipedia has managed to take down Brittanica as the standard Encyclopedia. (Where else can you get insanely detailed articles on important stuff like the Star Wars Holiday Special….)
Many people have bitterly shot back at Lisp weenies that the Blub paradox applies equally to them as well. This is one of the rare articles that attempts to articulate a vision as to what the next step will be. It sounds sort of like a combination of reddit, Wikipedia, and SVN… heavily commented code modules and snippets that somehow are able to rely on each other in spite of constant change and development. The whole concept of interface evolution sounds crazy, though. How can little software “bots” know which methods to call when the interfaces are changing over time? Weird.