June 7th, 2012
In 1971, Intel launched the microcomputer revolution by releasing the Intel 4004, the first microprocessor on a chip. This was truly a revolutionary development: large scale integration (LSI), the technology behind all integrated circuit chips, had been advancing quickly but the 4004 required a big leap in the technology. The 4004 was pretty lame by modern standards: its data bus was only 4 bits wide and its instruction set included only 46 instructions. Nevertheless, this was a breakthrough product. The 4004 was used in a number of products, including a business calculator.
Intel quickly followed with an eight-bit processor, the 8008, which became the foundation for the hobbyist microcomputer movement, which in turn got the whole microcomputer revolution off the ground. The 8008 was not based on the 4004, but it shared a number of design features with it. Getting those little chips to produce decent performance took every trick in the books, plus quite a few that the Intel designers created themselves.
Intel was not alone in its efforts; others were also working on microprocessors. The most significant one, for this story, is the Motorola 6800, released in 1974. The designers of the 6800 worked under a completely different design philosophy. The Intel designs were driven by the desire to squeeze maximum performance out of LSI technology. The Motorola designers, by contrast, wanted a chip with a clean, elegant design, so that it would be easier to write software for. They based their fundamental instruction set design on the DEC PDP-11 minicomputer, which was quite popular at the time.
Elegance Versus Inelegance
Elegance in design is a difficult concept to appreciate until you’ve actually worked with both elegant and inelegant designs. An inelegant design has a pile of features thrown together in a chaotic mess; an elegant design establishes an overarching conceptual structure that allows all the features to fit together naturally. Elegant designs are easier to use because, once you learn the overarching principles, you can apply those principles to features you’ve never used before, and those features will work exactly as you expect. Each feature in an inelegant design has its own custom way of operating, and so must be learned individually.
An example of the difference between elegance and inelegance is provided by a comparison of the Blackberry smartphone with the iPhone. The Blackberry is loaded with features, but most of those features are accessed via the keyboard; you have to type in the right textual command to get what you want, and if you don’t remember that command, you’re stuck. The iPhone, by contrast, relies on a graphical user interface in which you tap on things you see on the screen. It’s easier to figure out how to access what you want to access, because everything is presented visually. Yes, some memorization of technique is still required, but much less than with the Blackberry.
A good example of inelegant design comes from the television remote controls we struggle with. My system has just three components: a television set, a cable interface box with hard drive storage, and a DVD player. Each device has its own controller. The television controller has 41 buttons; the cable box controller has 58; and the DVD player has 51. That’s 150 different buttons I have to figure out. Many have cryptic labels such as “day”, “page up”, “A”, “B”, “C”, “D”, “CD Mode”, “FL Display”, and many more. The buttons are so small that you have to be careful when using them; accidentally pressing the wrong button can get you into a mode from which it can be difficult to exit. I refuse to learn how to use all 150 features of those controllers. For all I know, my system could have a feature that allows me to watch movies BEFORE they’re released to the theaters – but I’ll never find it. TV remote controllers are an inelegant mess that few people bother to learn. Who wants to read a 100-page manual just to use their TV?
By way of contrast, I present here images of three different battery chargers for AA rechargeable batteries:
The first one offers four buttons, four LEDs, and a numeric LCD display.The second one offers seven buttons, four LEDs and four LCD numeric displays. You never thought that recharging a battery was such a complicated operation, did you? The manual for the first is a full-size brochure that’s eight pages long. The manual for the second is an undersize brochure 43 pages long. The manual for the third is four small pages long. The instructions can be summarized as follows: “Put the batteries into the charger. Plug the charger in. The LED on top will be red while they’re still charging, then green when they’re fulling charged. Hours later it will turn off.”
Can you see the difference between the elegant design and the inelegant designs?
Meanwhile, back in 1974
Also in 1974, Intel released its next generation of CPUs, the 8080. It was based on the 8008 and had an expanded instruction set and ran faster.
Thus, by 1975, there were two major competitors for the microprocessor market: the Intel 8080, boasting the fastest performance, and the Motorola 6800, touting its cleaner instruction set that was easier to work with. This was the beginning of the war between the 6’s and the 8’s. The people who preferred the Motorola chip were later dubbed “the 6’s”, while the Intel aficionados were called “the 8’s”. The significance of this will be become clearer as the story develops.
In 1974 a number of designers of the 6800 left Motorola for MOS Technologies, where they designed a new chip, the 6502. The 6502 incorporated the same basic design philosophy that underpinned the 6800: clean and elegant. They also sought to reduce the price of CPU chips. They introduced the 6502 at a price of just $24 when Motorola and Intel were charging over $300 for their products. This forced Motorola and Intel to drop their prices and opened up the market to hobbyists. Within a year the hobbyist movement was well underway.
The advent of home computers
By 1979, a great deal of dust had settled and the battle lines were clearly drawn. On one side were the 8’s, armed with the 8080 with its powerful but messy instruction set. On the other side were the 6’s, wielding the 6502 with its clean, fast instruction set. The foot soldiers of the 8’s movement were the hardcore microcomputer people, the kind of guys who were good with a soldering iron, built a lot of their own equipment, and didn’t mind the complexities of the 8080; in fact, they enjoyed figuring out the best ways to get the fastest code to solve a problem. The 6’s, by contrast, weren’t so hardcore; they tended to be newcomers to the microcomputer revolution.
I was one of those 6’s. After carefully researching the various products available, I settled on the KIM-1, a single board computer system sold by MOS Technologies as a demonstration unit for its 6502 processor. That got me started. Another pair of newcomers used the 6502 to design a complete computer system that could even send video output to a television set: the Apple I. They later improved the design and released it as the Apple II. Meanwhile, others were jumping onto the 6’s bandwagon. Atari used the 6502 for its Video Computer System and later for its 800 home computer system. Commodore released the Pet using the 6502.
The 8’s were at this point suffering from a problem that has dogged them right up to this day: legacy limitations. The 8’s had been busy all through the late 70s creating new technologies to expand the utility of the 8080. There was the S-100 bus, a standard system allowing lots of computer boards to be connected to an 8080 CPU board. They had all sorts of great stuff: monitor boards, memory boards, printer boards, and so forth. But all this stuff also held them back: it was difficult to sell something new if it didn’t work well with the older technologies. And the lack of standards made the 8’s scene wildly chaotic. Things were so bad that when Intel introduced its new and improved 8086 chip in 1978, the 8’s were slow to incorporate it into their designs.
By 1981, the 6’s were in the ascendant: the Apple, Atari, and Commodore computers were dominating the home computer market, and the 8’s were confined to the obsolete S-100 systems using the 8080. But then came a new earthquake: IBM entered the marketplace with its personal computer in 1981. The IBM PC was based on the 8088 CPU, a sibling of the 8086. The tables were quickly turned; the marketing power of IBM gave its PC a huge advantage, and it didn’t take long for the PC to establish an installed base larger than any of the 6’s computers.
As programmers gravitated towards one system or another, an interesting divergence became apparent. The 6’s attracted people for whom the computer was a means to an end, while the 8’s attracted programmers who loved to make computers do wonderful things. It was rather like the difference between car owners who liked to work on their cars (the 8’s) and car owners who just wanted a reliable car (the 6’s). The 8’s were technology geeks through and through. They loved the intricacies of the Intel designs. If you spent years learning those devices, you could build up the expertise to do things that beginners would never understand.
Programmers for the 6’s weren’t in it for the technology; they had goals that they wanted to attain. They liked the ease of use of the 6502 instruction set, the fact that you could learn the basic principles of programming it in a few weeks and completely master the instruction set in a matter of months, not years. Compiler writers (the people who build programming languages for use on a computer) greatly preferred the 6502, because its instruction set was easy to work with.
The 16-bit revolution
Meanwhile, neither Intel were Motorola were resting on their laurels. Motorola introduced the 68000 in 1979 (although it wasn’t really ready for prime time until 1980), and Intel released its 80286 in 1982. The 8088 used in the IBM PC and the 6502 used in other products were both 8-bit processors; the 80286 and the 68000 were both 16-bit processors, much more powerful than their 8-bit predecessors. But again, the design philosophies were entirely different.
Intel now had a serious legacy issue to deal with. Lots of software had been written for the 8088 in the IBM PC. If the 80286 were not compatible with the 8088, then none of that software would work on machines using the 80286. This would ruin one of the biggest marketing points for the IBM PC: the large supply of software available for it. Therefore, Intel had to make the 80286 directly compatible with the 8088. They had to preserve the same instruction set used in the 8088, and expand it with additional instructions. Thus, the instruction set for the 80286 was huge and quite messy. All the 8’s programmers were delighted with this development: it meant that all their old programming skills were still useful, but now they could expand their expertise even further.
But the 6’s had to start all over with the 68000. For simplicity, I’ll confine my story to the Macintosh, which was the most important computer to use the 68000. Since the 68000 had no legacy to worry about, it used a completely new and very elegant instruction set. I still remember my excitement in studying the 68000’s capabilities; for me, this was a dream machine: clean, simple, elegant, and powerful. The 80286 was like a 1950s car with a souped-up engine, a custom camshaft, enhanced cooling system, a more powerful oil pump, turbochargers, new ignition systems, and all sorts of other nifty technology bolted on. The 68000 was like a car from the future.
By now the design philosophies of the 6’s and 8’s were percolating into the software designs. Nowhere was this more apparent than in the battle between Macintosh and MS-DOS.
MS-DOS was the “Microsoft Disk Operating System”. It was a command-line interface system: you typed obtuse acronyms into the computer to make it do things. Here’s an example of a command format in MS-DOS:
As you can see, this isn’t what anybody would call the most user-friendly design on the planet. There were nearly 200 of these commands in MS-DOS, and you just had to memorize them all to get things done quickly with a PC. Most people would learn the most common few dozen commands and leave it at that.
The 8’s loved MS-DOS. It was fast, it was powerful, and it was fascinatingly complex. The fact that civilians couldn’t cope with it was their own problem; in the minds of the 8’s, using a computer was an avocation demanding effort. People too lazy to expend that effort didn’t deserve to use a computer.
The Macintosh was the software embodiment of the 6’s design philosophy. It was simple, clean, and elegant. It was easy to use and required little memorization. The 6’s loved it and swarmed all over it.
The 8’s derided the Macintosh as a toy because it had cute icons instead of serious, complicated textual input requirements. Being easy to use meant, to them, “dumbed down”. And so the battle raged all through the 1980s. Eventually, Microsoft caved in and developed an operating system using a graphical user interface like that in Macintosh. Most of the 8’s gnashed their teeth at Microsoft’s loss of grit.
Microsoft and Intel continued to struggle with legacy problems. In order to preserve the utility of ancient software, they improved their designs – CPUs and operating systems – by preserving everything from the old version and simply adding more power on top of the existing design. The CPUs and operating systems became bigger, more bloated, clumsier, and harder to work with.
Meanwhile, the Macintosh was moving from the 68000 to the 68020, the 68030, and the 68040 with no problems. The clean elegant design of the 68000 series made it easy to improve the design without wreaking havoc with legacy software.
The Transformer computer
But the real feat came in 1994 when the Macintosh jumped to a completely different CPU: the PowerPC 601, a new type of CPU using what was called RISC (reduced instruction set computing) technology. I was flabbergasted when I learned that Apple was jumping from the 68040 to the PowerPC 601. The new CPU had a completely different instruction set; old software could not possibly run on the new system. This was rather like changing the engines on a passenger plane from propellors to jet engines – in flight, and without spilling the passengers’ drinks.
Apple assured everybody that there would be no problem: the 601 was so fast that it could run a 68040 emulator with no performance hit. I and most other programmers were skeptical, but in fact, it worked! Apple’s operating system was so clean, so elegant, that it could easily handle a radical change like this. In ensuing years, Apple steadily converted its operating system to work natively with the 601, so that everything ran even faster.
Apple pulled off this stunt twice more. First it jumped to OS X in 2002. This was not an evolutionary step forward: OS X represented a complete break with the past. Yet Apple didn’t obsolete any software by jumping to a new operating system; the elegant, clean design philosophy that underlay their software designs made the transition easy to manage. Then in 2006 Apple changed CPUs again, jumping to the newest Intel CPUs – again without any disturbance to the existing software library.
To give you an idea of just how smooth Apple’s transitions were, in 2004 I decided to execute a harsh compatibility test. I pulled out the original production disk of Balance of the Planet, which I programmed in 1984 on the very first generation of Macs, and ran it on an OS X machine. It worked. It was fragile, but it still worked – twenty years after it had been built!
Meanwhile, things weren’t going so smoothly in the 8’s camp. Every time Microsoft wanted to improve its operating system, it had to contend with literally thousands of compatibility issues. It had to make thousands of compromises to cope, and write hundreds of thousands of lines of code to work around all the constraints. Nowadays, Windows is a bloated monstrosity, requiring humongous amounts of memory. Worse, it’s such a mess that hackers are regularly finding new chinks in the OS that they exploit to introduce malware into Windows machines.
The Mac, of course, is not immune to hackers: a number of flaws have been identified. But such discoveries are rare and are easily corrected once found.
A corporate culture built on elegance
Apple Computer started off as a pair of 6’s making a hobbyist computer. But as Apple evolved, elegance seeped into every pore of its corporate culture. The essence of the Macintosh has always been elegance of software design. Sometime around the turn of the century, Apple shifted from being a computer company to being an elegant design company. The iPod, the iPhone, and the iPad are all distinctive not as computers but as tours de force in elegant design. Right now, nobody does elegance like Apple. Microsoft limps along behind Apple, but because Microsoft just doesn’t “get” elegant design, it’s efforts look like a drunken sot trying to mimic a ballerina.
This tale provides us with two lessons. The first concerns the importance of elegance in good design. Elegant design is not merely something that you strive for as a matter of personal pride – elegance confers robustness. The ability of the Macintosh to undergo profound internal changes without suffering legacy problems is a tribute to the elegance of the design of the Macintosh operating system. Conversely, the lack of elegance in Microsoft products has made the history of Microsoft software a tale of chaos, bugs, vulnerabilities to hackers, and incessant bug fixes. Microsoft is running as fast as it can just keeping their operating system from collapsing. It is difficult to imagine Windows surviving another twenty years without undergoing some massive and disruptive redesign.
The second lesson is a warning against letting the techies run the show. Techies build toys for techies: complicated, bloated, stuffed with so many features as to be almost impossible to learn to use. Techies love exploring complicated techie toys. They don’t know how to design products for non-techies. Yet all too often management gives techies a free rein to impose their twisted fantasies upon the civilians. The result is always a monstrosity that gets great reviews in the specialist magazines and leaves normal people feeling frustrated and stupid.