On the XO Laptop

XO-Python: Where Are the Software Engineers of Tomorrow?

leave a comment »

Courtesy of the Slashdot post Professors Slam Java As “Damaging” To Students, , I just came across the article Computer Science Education: Where Are the Software Engineers of Tomorrow? by Professors Robert Dewar and Ed Schonberg, two of my colleagues from my days at NYU/CIMS.

I have known both for over thirty years. I first met Robert when Ed and I made a visit to Champaign-Urbana to review Plato, as described in my post On Education, Innovation, OLPC, And Open-Source. I also worked with Robert on several implementations of Spitbol; see for example Computer History Museum: Preserving Snobol and Spitbol Artifacts. I worked with both Ed and Robert on the SETL and NYU Ada/ED projects.

The abstract is as follows:

It is our view that Computer Science (CS) education is neglecting basic skills, in particular in the areas of programming and formal methods. We consider that the general adoption of Java as a first programming language is in part responsible for this decline. We examine briefly the set of programming skills that should be part of every software professional’s repertoire.

I strongly recommend that anyone interested in the teaching of computer science and programming read this article closely.

Though I am known in part for my work with Philippe Charles (another former colleague of Ed and Robert on SETL and Ada/Ed project) on the Jikes Java compiler, Java has never have been my choice as a first programming language. This view applies especially today now that Java is so laden with enterprise-level cruft. While Java is a good demonstration of the power of a virtual machine and as a demonstration of object-oriented programming, a much better choice is a higher-level language such as Python.

As a long-time programmer myself I am especially sympathetic to their concern that the study of numerical and floating-point computation seems be a lost art. I had among my professors such recognized experts in this area as John Todd, Don Knuth, Herb Keller, Paul Garabedian, and Eugene Isaacson. I started my studies at CIMS over four decades ago; then and now it was the world’s best place to study applied mathematics. I was initially turned off to the merits of the Pascal programming language when I discovered an error in the floating point conversion procedures for the CDC 6600 implementation. I gained further appreciation that numerical computation was a vanishing art when Philippe and I had to provide our own long integer arithmetic support due to errors in the runtime for Microsoft’s product C++ compiler.

I agree with the importance of learning a “functional” programming language such as ML, and especially endorse the use of OCAML for that purpose. ML-style languages are very expressive, and OCAML is a a very efficient implementation, especially in its handling of strings. I used OCAML for almost a year as a member of a five-person project that developed a prototype to translate SQL stored procedures. I was struck by the lack of need for a debugger. Though it could take some time to figure out how to write down an algorithm, once I had done so it ran correctly. Indeed, the writing was the debugging, and every programmer should spend time using a language such as this to appreciate how this can be so.

Though they make no mention of assembly language programming, I fear that this is also a lost art, and wonder how many of today’s programmers have done a substantial amount of programming at the machine level. For example, I spent some time mastering the skill of writing “in-stack” loops for the CDC 6600, a skill needed to achieve maximal performance. It’s also worth noting that the first time-sharing system for the CDC 6600 was created at NYU, and this was only possible because Jack Schwartz discovered a unique hack that permitted saving the machine state. (There was only one instruction that alters memory without altering the registers, the subroutine call, and Jack realized that a series of such calls combined with appropriate test instructions, could be used to recover the contents of one of the index registers. Once you had that, the rest of the save was obvious.) I also recall incorporating many of the clever algorithms for processing strings created by Prof. Paul Abrahams in his work writing a PL/I compiler, and incorporated many of them in the CDC 6600 implementation of Macro Spitbol. It’s also worth noting that doing the port of Macro Spitbol to the X8086 architecture of the IBM PC was challenging in that, as Robert pointed out, no two registers have the same semantics.

Robert and Ed make mention of C, C++ and LISP. I would add Python to the list of essential programming languages. Among the widely-used programming languages today Python is the closest in spirit to that of the SETL language on which we all worked; indeed, Python is a descendant of SETL, as noted in the Wikipedia’s SETL entry:

Python’s predecessor, ABC, was inspired by SETL — Lambert Meertens spent a year with the SETL group at NYU before coming up with the final ABC design! [1]

They conclude by noting that programming languages are not the whole story. That is one of the reasons I find the new XO Laptop so compelling. Since all the source code is available, one could instruct a basic curriculum on computer science based in large part on the code used to power the XO. Use Linux for the operating systems course; Python and other languages for the compiler course; the GNU tool-chain for compilers and software engineering; the hardware design of the XO as an example of computer architecture; and so forth.


1. [Python-Dev] SETL (was: Lukewarm about range literals)


Written by daveshields

January 8, 2008 at 6:24 pm

Posted in xo-laptop

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 )

Twitter picture

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

Facebook photo

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

Google+ photo

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

Connecting to %s

%d bloggers like this: