While the performance of computer hardware has been accelerating nicely according to Moore’s Law, many have observed that software has been compensating by growing more and more sluggish. Apparently the hardware trend will run its course somewhere between 2020 and 2030. Long before then we shall begin using new architectures, like multi-core units and perhaps even whole new paradigms for computation. This might prolong the trend for another ten years.
However, at some point before the middle of this century, matters will reach a head and it will become either impossible or prohibitively expensive to buy faster hardware. Unless the “change” comes before then, our software performance will be about the same as today. See, I think that the amazing advances in hardware is holding back the development of software. But once we reach the end of the line, things will have to change. Global economies are driven by a wave of hardware advances. There are other factors too, of course. But I think that without the added momentum of hardware development, the world will need a new driving force.
Perhaps — I hope — that new driver will be the birth of a true science of software. Software Science comprises two parts: theoretical computer science (“how do we solve problem X?”) and software engineering (“how do we combine solutions for X, Y, Z to produce big software?”). It is probably clear to everyone that we still do not know much about software engineering. At least we do not know exactly how to organize software development well. But perhaps it seems inconceivable now that many new avenues will open up in theoretical computer science. I believe that dramatic advances are possible and necessary in both TCS and SE. For example, both Unix and Windows have many weaknesses. I do not think anybody can claim that Window is a wonderful operating system, and Linux does not outperform Windows wildly. The idea of developing a new OS is a daunting prospect — the cost would probably prevent any serious professional software developers from undertaking such a challenge today. Moreover, the underlying technology is old old old. Most of the research in microkernels of the 1980′s and 90′s is completely ignored. We have little of the SE and only some of the TCS knowledge to make it work.
Software Science will be pursued, wil have to be pursued to continue the momentum. Perhaps other things will give out, but I hope not. I would like to see, at the end of my academic life, how this knowledge develops.