One of the many misapprehensions about our industry is that everything happens at breakneck speed. That may be true in the world of research, but the gap between research and production can be as long as in any other industry – installed bases in the hundreds of millions impose huge inertia, while the sheer complexity of systems also induces viscosity, a conservative aversion to change among engineers and programmers alike. One good example is parallel processing, which I spent most of the 1980s writing about, but is only arriving on the desktop – in the shape of multicore CPUs – now it suits Intel and AMD.
Another striking example is the graphical programming interface. I’ve always been a great fan of environments that let you construct applications by wiring together objects on the screen rather than by writing code, but until recently it seemed like an idea that had died. (Visual Basic is only a halfway house, because although it lets you drag objects you still have to join them up with code.) Now it seems the penny has finally dropped in Redmond, and Microsoft has announced Popfly, a visual wire-’em-up environment for combining the output from different websites into a single new application. I know it’s trendy to call these “mash-ups”, but that sounds too much like tempting fate (the old programmer’s word “mung” came from army slang meaning “Mash Until No Good”).
Another recent example came via an old friend who writes serious real-time software. He dropped by with the latest Lego robot-building kit he’d just bought “for his grandchildren”, and it’s certainly a lot of fun. Most intriguingly, it has built into the controller a scripting “language” called NXT, which you use by wiring together prefabricated devices on its tiny LCD screen.
I first encountered this wiring-up metaphor in an experimental application written in Smalltalk at Xerox PARC back in the mid-1980s, but the first commercial example I came across was a Windows app written by the UK firm Working Title in 1993. Called CleanSheet, it performed the functions of a spreadsheet but using graphical blocks representing mathematical functions that you dragged onto a blank sheet (hence the name) and then wired together. It was fun to use and effective, although I suspect it looked too alarming to appeal to many accountants.
Great ingenuity had been applied to make CleanSheet work effectively: the graphical “wires” you dragged to join one block to another carried multidimensional arrays of data objects – of type Integer, Real, String, Boolean, Date, Time, Complex Number, Equation, Error or Null – which simplified things hugely, since every operation returned just a single value, but that value might be a six-dimensional array. You could therefore pass a whole conventional spreadsheet-like 2D table as a single object. There were around 60 kinds of block, including 13 for data input, 11 for displaying data, 30+ for data-processing operations, and a few control objects such as switches, junctions and lookup tables that acted as the glue. CleanSheet failed to set the world on fire, with Google revealing almost no trace of it.
I still have one wire-up application on my PC, a little shareware sound synthesizer called WaveCraft (from Last Unicorn and, perhaps significantly, also written in the mid-1990s). It simulates a Moog-style polyphonic, multitimbral, modular analog synthesizer. You get to define a new waveform by dragging oscillators, sinewave generators, mixers, clocks, filters and modulators onto a blank sheet and wiring them together, then it outputs a WAV file of the resulting hideous screech.