We've reached the 30th anniversary of the IBM PC.
I know doesn't time fly when you are enjoying yourself.
As a result of the celebrations in its honour people have been thinking about where we are and questioning the PC's worth in a world that is often described as post-PC and that's post Personal Computer not post Politically Correct.
Some are commenting on the hardware. Some are commenting on the changing use. What really matters however is none of these slight cosmetic shifts but what we are using and targeting as a development platform. Yes it's programmers all the way down.
Mark Dean, IBM's CTO involved with design the first PC, has a blog post saying the the days of the PC are gone and now it's the smart phone and other mobile devices that make the difference. Others have responded that they think that the PC has a long life ahead of it and the role of mobile computing is really just an add-on.
So where are we?
And more importantly, how does it affect the programming we will be doing in the next few years?
The first thing to say is that the IBM PC was important. It was important that it was the IBM PC and not some fly-by-night start-up like Apple or any other fruit you can think of. It was Big Blue's PC and that signalled a change in perception. It was built like a tank with a metal case, long persistence green phosphor monitor and a keyboard you could stand on. Where other "PCs" were plastic, cheap and basically toys the IBM version of the desktop machine looked as if it had just escaped the air conditioned computer room.
However the biggest change for programmers was that it was a standard platform we could start to work with to create and commercialize serious software - after all a serious machine needed serious software. PC-DOS was an operating system that would clearly rule for the next 10,000 years and we could forget the horrors of CP/M.
Actually PC-DOS was almost as bad as CP/M but we had so much more memory, well in theory at least. It is important to realize that while the IBM PC defined a hardware platform programmers were targeting PC-DOS and didn't really care much about what it actually ran on. Of course IBM tried to keep control of the hardware and PC-DOS but they made two big mistakes and it is a good that they did.
The first was that they used off-the-shelf components that could be obtained by other hardware manufacturers - none of the chips in the IBM PC were custom IBM chips and they could have been. The only part of the entire hardware that IBM did have control over was the BIOS and this was rapidly reverse engineered and PCs from other manufacturers soon followed.
The second mistake was allowing Microsoft to produce its own version of PC-DOS which they called MS-DOS with the implication that the two were different in some way - they were not. This allowed programmers to write code for PC/MS-DOS and have it run on IBM machines or any machine that worked with a copy of MS-DOS.
So the important things about the IBM PC were that it provided a widely supported platform that we could create applications for. What followed is proof that if you have a big enough platform the world will code for it - Lotus 1-2-3, SuperCalc, WordStar, dBase and so on. Of course there always were other platforms; Linux and the Mac both eventually threatened to dissolve the neat hegemony that the PC had created.
Over time PC-DOS/MS-DOS evolved into Windows and the underlying hardware evolved from 16-bit to 32-bit and now we have an uneasy mix of 32- and 64-bit. So far it has all been evolution and so we can see unbroken line from the first PC through all of the models, variations and operating systems to the machine that sits on your desktop or to your laptop today. When we talk about a post-PC era we need to ask the question of whether or not mobile devices like the iPhone and Android and even Windows Phone 7 are evolutions or revolutions?
Click for details of evolving Android T-Shirt
Clearly these mobile devices are complete breaks with the PC past and it is in this sense we are in a post-PC era. When you write code for Android you make use of a new framework and you certainly don't expect the same application to run on a PC - given that there are emulators for most of the devices it is difficult to know why we don't expect them to run on a PC but this seems to be the way we think.
What the mobile device has done is to break the stranglehold the PC has. "Does it run Windows?" isn't really the question any more. However, another way of looking at this is that mobile devices have just destroyed the wonderful gift the PC gave us - a single big market for our creations. Now you have to figure out which of the platforms to target and maintain multiple versions of each. It's no fun...
cartoon from xkcd
Yes it is true an HTML app running in a browser makes all machines look the same, including smart phones and tablets. So perhaps it isn't so much the introduction of the iPhone that killed the PC but the first web page introduced over 20 years ago. Bill Gates saw this day coming and introduced all sorts of technology - ActiveX, Active desktop and Internet Explorer - to try and shift the emphasis from the browser back to the operating system but only succeeded in slowing down the inevitable.
Yes it is a slow death but the post-PC era is slowly assembling itself around the diverse environment that the new mobiles have created. The web finally wins because it is the only way we can manage to unify this mess into a single programming platform and restore the gift that the PC gave us - a single market.
IBM PC - history and architecture
If you would like to be informed about new articles on I Programmer you can either follow us on Twitter or Facebook or you can subscribe to our weekly newsletter.