… and all remnants of literature disappeared…

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.


2 Responses to “… and all remnants of literature disappeared…”

  1. Mark Miller Says:

    I thought it was interesting that Gabriel and Goldman also complained that programming languages were being treated as re-usable “universals”–all of which have been some variant of Fortran and assembly language. A corollary to this is the cop-out that “All languages are basically the same because they’re all Turing Complete”. This is its own self-fulfilling prophecy. To most programmers all languages appear to have the same basic root, because the ones that don’t fit are rejected.

    My take on the computing “pop culture”, which you referred to, is just that. It has more in common with this statement by Gabriel and Goldman: “Open-source projects tend to be convergent: Each project is aimed at a particular artifact in the end.” This is how commercial software is, too. There’s an emphasis on features rather than the whole computing experience.

    Alan Kay had his own take, which had more in common with the article’s criticism of the web, saying it’s a mediocre technology that became popular because it was accessible. The authors took this one step further than Kay, saying that people from outside the computing field turned it into something beautiful, despite its shortcomings.

    Kay has been concerned with the current perception and practice of programming, but he’s also been concerned with system design. My article on “pop culture” was more in this vein.

    I think Gabriel and Goldman make an interesting point in saying that progress in computer science was frozen when the “literature of software” was killed by commercialization. They said the closed-source nature of commercial software is what did in CS. I think it’s plausible it contributed to the freezing, or even the retrogression of CS, but it’s not a strong argument, IMO. One of the things Alan Kay complained about when Smalltalk became commercialized was that it became frozen. Here’s the thing though. The literature was all there for developers to find and use. Smalltalk has an inherent open source nature about it. Secondly, Kay has complained that there’s been plenty of groundbreaking research that was done in the 1960s that was published, but has been completely ignored by the programming culture. Instead they’ve been content to reinvent the wheel, but they haven’t done as good a job at it.

    Commercial implementations of Smalltalk closed off some of the VM code, but a lot of the code was there for the reading. Secondly, the Xerox team published the “Blue Book” on Smalltalk, which had a complete description of the language, and a complete description, with source code, of the VM. The development community that grew up around Smalltalk chose by and large to ignore the literature. The programming culture treated Smalltalk like it was a communication protocol, like TCP/IP. It was treated like a standard. It evolved in some ways over time. The Smalltalk community created innovations that are in mainstream use today in developer tools and methodologies (though the mainstream VMs and languages still fall short), but they failed to recognized Alan Kay’s vision for Smalltalk, which was a system for bootstrapping other, better systems. Instead, Smalltalk-80 (created in 1980) did not change in fundamental system design for about 20 years.

    Squeak is the first version of Smalltalk to begin this process anew. For example, Alan Kay and some fellow researchers created Croquet using Squeak. It was in effect a project bootstrapped from Squeak. Croquet has similar qualities to it, but it’s a 3D user interaction/simulation system that promotes group collaboration, similar to Second Life, whereas Squeak/Smalltalk was single-user/P2P-oriented. Scratch, and some commercial software have been bootstrapped from it as well. I think what’s different now is a different culture was built up around Squeak. Alan Kay has had more of a say in its development as well.

    The way the Squeak community is organized is similar to the way Gabriel and Goldman describe mob software. It is focused on the user, making it cater to them, not just professional developers. There’s no fixed organization, and no standard. There’s a lot of forking going on in it. A lot of Smalltalkers complain about this, but it’s what Kay wanted.

    I’ll get to some of your other points later, I think. Interesting post.

  2. Mark Miller Says:

    Okay. I thought of some more stuff.

    Re: Changing interfaces

    I think you might’ve missed the point there. What they were talking about was developing systems that are similar to the way databases are structured. A database is an indexing system with some metadata used to keep track of the schemata. When you create tables, indexes, etc. you are creating a schema on top of the database. In turn, what they were advocating was that systems be developed such that programmers can create schemata to modify them. So they’re not going in and modifying the base system the way software is modified now by directly and fundamentally changing it. Instead you change it in effect by taking advantage of an abstraction layer the system provides. It’s like Lisp with macros. You’re not fundamentally changing how Lisp operates, but from your POV, you are changing it.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: