archives

The programming languages behind "the mother of all demos"

On December 9, 1968, Dr. Douglas C. Engelbart and the Augmentation Research Center (ARC) at Stanford Research Institute staged a 90-minute public multimedia demonstration at the Fall Joint Computer Conference in San Francisco. It was the world debut of personal and interactive computing: for the first time, the public saw a computer mouse, which controlled a networked computer system to demonstrate hypertext linking, real-time text editing, multiple windows with flexible view control, cathode display tubes, and shared-screen teleconferencing.

To commemorate this famous event, commonly known as the mother of all demos, SRI held a 40th anniversary celebration at Stanford today. As a small tribute to the innovative ideas that made up the demo, it is befitting to mention some of the programming languages that were used by Engelbart's team. A few were mentioned in passing in the event today, making me realize that they are not that widely known.

The Tree Meta Language was used for describing translators, which were produced by the Tree Meta compiler-compiler. MOL940 ("Machine Oriented Language" for the SDS 940) was an Algol-like high level language for system programming which allowed the programmer to switch to machine-level coding where necessary. Alas (and ironically), I have not found the primary documents about these languages online. Section IV of Engelbart's Study for the development of Human Augmentation Techniques gives an account of the language and tools that were used in the project, and includes an example giving the metalanguage description for part of the Control Language. Figure 8 in in this document is a useful overview of the system and the compilers and compiler compilers used to build it. The tech report Development of a Multidisplay, Time-Shared Computer Facility and Computer-Augmented Management-System Research (only the abstract of which is online) also mentions "four Special-Purpose Languages (SPL's), for high-level specification of user control functions" which sound intriguing. The tech report specifying MOL 940 is also apparently not available online.

If I understood what Andries van Dam said, the Language for Systems Development (LSD) developed at Brown, which targeted OS/360 and was based on PL/I, was influenced by the work of Engelbart's team. They were also claiming to have built the first (or one of the first) cross-compiler.

When asked about prior work that influenced them, SNOBOL was mentioned as an important influence. The influence the demo had on programming languages was manifested by having Alan Kay's talk conclude the event (he did not mention Smalltalk once in his talk, by the way, but it was mentioned a couple of times earlier in the day).

Self Taught Computer Science

Having looked around the net for programming resources etc I eventually landed here. This happened more than once and from different directions so thats normally a sign to me that I've found a good resource.

I started studying with the Open University several years ago but their computing type courses are move vocational based so I switched to mathematics. The only way I can see to improve my comp sci education is to self teach myself. So for the last few weeks I've been looking around the net for free on line resources that might aid me. I 'm particular interesting in learning a FPL with a mind to implementing a programming language in one. I'm not expecting to invent anything new or popular I'm more interested in the education.

I'm intending to write up what I do for anyone else on line to use so my main requirements are that the resources are freely available. So far the best source I've found is SICP and I have been working through it. Are there any other resources that I could use. I am also interested in subjects that are not purely PLT specific. Advice, thoughts or pointers most welcome.

NOTE: I am not adverse to purchasing books, I bought SICP because I have a long commute, so if there are any introductory classics in this area please recommend them.

How to load/interpret STATIC libraries at runtime.

I have always been wondering how a language interpreter would run code that requires that a static library be linked. There must be a way of doing it - all the neccessary information is in the library. Thus there must be a way of doing this in pure code.

Can anyone help on this issue? I have searched the internet many times over the course of a few years and have found nothing.