Friday, May 29, 2009
Earlier this week, I had occasion to attend the Google I/O conference. This blog post is more reflective than a factual report on the event. (For factual reports, e.g., see Google: The browser is the computer, Google Wave: A new kind of mega-application).
In the beginning, e.g., with the ENIAC, people programmed in 1s and 0s. The initial tedium was avoided by the invention of assembly language programming. The primitives that the programmers dealt with included registers, memory and i/o in the form of tapes and disks.
Subsequently, there were several high level programming languages invented, stack machines supported block structured languages. For a very long time, the stack machine seemed sufficient, and even the concept of classes were implemented on top of the stack machines. The primary commercial successes in this arena are C/C++ and Java and their variants.
In this conference, the primary message appears to be that the communication content, in Google Wave, is modeled as hosted XML documents, and the primitives that a programmer uses within a browser are the ones that manipulate the document object model (DOM); and, there are several new primitives, i.e., tags like canvas, video, audio, etc., built natively into HTML 5. (A good introduction to the model methods is available at HTML DOM Primitives and XML DOM Primitives). Thus, while the stack machine continues its reign, additional functionality is being expected of the platform in terms of the DOMs.
To promote concurrency in applications, the concept of Web Workers is available in HTML 5.
What happened in the last 50 or so years? Now, the basic computational platform (within a browser) is one that supports very granular manipulation of pieces of communication that is relevant among human beings (and computers), rather than registers, stack, etc. This is good; it is easy to see progress.