Published in IT World
A hardware/software inflection point
In the beginning there was the digital machine and it was good. Very good. So good in fact that people flocked from far and near to gaze upon its wonders and ask that most challenging of questions, namely "Now that it exists, how can we program this thing without our heads exploding?"
And thus began a journey on a long and winding road. The screwdriver gave way to the patch panel. The patch panel gave way to punched cards. Punched cards gave way to keyboard. Binary codes gave way to mnemonic codes known as assembly languages. Assembly languages gave way to higher level languages like Fortran, Cobol, PL/1...
Today the road stretches out before us, appearing to be even longer and with bigger bends (and roundabouts) than we ever envisaged. A seemingly endless expanse of programming languages, operating systems and data formats.
At various points along the road, the creators of these wonderful machines -- the hardware engineers - catch up with the merry band of software travelers and watch their activities from a safe vantage point. "This is interesting", they say, "many of the languages/operating systems use XYZ concept. By implementing that in hardware, we can make the software that these people build go faster and be more reliable."
And thus it comes to pass the successive generations of these amazing digital machines provide more and more cool stuff for the software people to use. Cool stuff which, in the first instance, was created in software and then slowly migrated into hardware. A circular flow is thus established. Hardware begets software developers who beget interesting ideas that are then converted into hardware which begets yet more software developers...
Looking back down the long and winding road we have traveled, I am struck by an interesting reversal that appears to be happening at the moment. For as long as I can remember, the software people have been the ones exploring the way forward with the hardware people coming up behind them from time to time. Software leads, then hardware follows. Software leads, then hardware follows.
In recent times however, it seems to me that the hardware people are no longer just watching and waiting. They are forging ahead. In fact, they are on the verge of disappearing around the next bend altogether.
Meanwhile, behind them, the software people are looking back down the road, expecting a visit from the hardware people as per usual...
Only the visit will not come.
It will not come because the hardware people are way ahead of the software people now. Further down the road. They are looking back and beckoning to the software people to hurry up.
Software people need to realize this new reality and go visit with the hardware people.
The processor will stop doubling in speed and halving in cost. Instead, you will find more and more processors shipping in each computer.
This is the future because the hardware people are creating it that way. The software people need to realize that fact and start figuring out how to use all the processors. This future does not just involve just re-compiling your software. It involves turning it on its head in most cases.
Things are different now.