Tuesday 18 December 2012

Progress - why you HAVE to buy a new computer every so often...

Do you remember the HOVIS advert?  Que the brass band...

"'Ee were a great computer, my Mainframe!  He could run t'payroll, t'stock system, and t'online transactions, print bloody great reports that consumed reams of green & white paper, and do all that in 512k of memory.  Kids these days - don't know they're born..."  etc, etc....

You may laugh, but this is all true - I know, I was that child.   In 1983, I started my first job - a computer mainframe operator for a large seed grower in East Anglia, and the mainframe I operated was an ICL ME29, with 256k of memory, that did all of the above.  My friend at the time (hi Tony) used a Dragon 32 computer at home - state of the art.

Fast forward to 1991 - I was still operating mainframes (although I was now a Shift Leader, in charge of other operators, as well as doing some COBOL development) and I was operating ICL VME based systems (3960).  At home, I was using a ATARI 512k STFM - a great little machine that had a graphical interface, ran great games, and let me create a newsletter for a club I was with.  In short, a brilliant little all-rounder, that had twice as much memory as my old mainframe...

...1996 - my Atari was a fond memory in the attic, and my main machine was a 486 based PC running Windows 3.11, with a mahoosive 4Mb memory...

...and now, I'm writing this on a Dual-Core PC, with 8Gb memory (that's 32 times as much memory as my PC in '96 - 16 years ago).

Am I doing work that significantly different to what I was doing 16 years ago?  No.  Do I perform my work any quicker?  No.  Is my computer any quicker?  No.  So the question needs to be asked - why, when technology has developed, am I no more efficient than I was 30 years ago?  I'm using more computing power now, than the Apollo Space Program / Shuttle Program had at it's disposal, so why am I STILL screaming at my computer to "GO FASTER DAMMIT!"?

The answer my friends, is one simple word, and that word is...

LAZINESS.

You see, back in the old days, in the Eighties and earlier, much software was written at very low level, often hand coded & optimised to suit the hardware available.  Try any of the computers created during this "golden" age, and you'll find that they seems to run just as fast as anything now - yes, their graphics might be a bit blocky, and their floppy access is SLOW, but you can run a game on an Atari STE now, and it'll seem just as snappy and responsive as a modern game.  This is because of optimisation.

In the late eighties, a programming paradigm became popular - that of code libraries.  The idea is simple - say you write a piece of code that opens a text file.  You'd like to use that code again in another program, so you create a library - a repository of common code that you can use, again and again.  Libraries are a great idea, but they do have a drawback - they promote "library sprawl", a condition where the number of libraries you use grows out of control.  This sprawl, is most noticeable in situations where a program needs features added quickly, and where is the worst offender of library sprawl?  Yup, it's our old friend Microsoft Windows - again...  :(

As an example, I was recently looking into moving the data from a user's PC to another, and I did a quick check to see how much disk space he was using.  Windows itself, was taking nearly 14Gb - compared to my system in 1996, that's nearly 1000 times the size that Windows 3.11 took up on my machine in 1996.  Reliance on existing code, gives faster development turn rounds, but leads to mahoosive computer systems, that require massive amounts of processing power, just to process these libraries.

To be fair, most commercial operating systems have the same problem, this includes OSX and Linux.  Some would say that software grows to fit hardware, but over the years, I come to the conclusion that this is not true.  We HAVE to upgrade our systems because the developers of new software are under tremendous pressure to deliver quickly, which means they HAVE to rely on existing libraries - they have no choice.  It's a sad, but true fact - our software is LAZY, which means we have to throw more computing power at it to get the speed / results we expect.

Think of it in these terms.  A fat man can't run the 100 meters, but instead of losing weight, he gets a bike, but still eats what he likes.  Two years later, he can't ride the bike any more, because he's too fat, but still needs to do the 100 meters, so he gets a motor bike, but yup, he's still tucking into those doughnuts!  Two years further on, he's now so fat, that he can't keep his balance on the bike any more, so he gets a Ferrari-powered dumper truck to do the 100 meters in - stopping on the way, to get a super sized McHeartbreaker Burger with thick shake...

Lazy - oh yes...

IN the 

 


No comments: