Cycles?
In the old days of computing, there were basically two pieces of software that one bought with a computer: the operating system (OS); and the compiler(s). Indeed, up until the days of Control Data, one bought a package deal. The OS and compiler(s) came with the computer.
One may quibble a bit about the utilities that came with the computer, all written by the computer manufacturer’s staff to enhance the desirability of the computer, but since these were tied to an OS and a computer, they were not really distinguishable. There was some software available for sale from vendors or for low fee from academic repositories, but in the main, if you wanted software, you wrote your own.
Initially, this was in the days of the venerable punch card, the IBM 5081 being the epitome. Those who were computer literate could be discerned by either the boxes or rubber band engirthed bundles of computer cards, or the tapes containing card images that they carried with them. Even without these fasces of their office, they could be discerned by the aroma of baby powder – carried to assure cards did not bind – and an unnaturally rumpled look – for the still starched era – that revealed that they had slept, or at least, napped, in their clothes at the computer center. And yes, in those days, computers were kept in air conditioned, insulated, vibration isolated temples, which probably indicates why so many of these old time computer literati have such strange religious beliefs and practices today.
Unlike the modern Abraham-like computer users who on occasion offer up their children as sacrifices to ameliorate the “blue screen of death.”
When we moved into the microcomputer age, the outward signs changed, but the habits still prevailed for a while. The computer literate were still those who wrote programs because other than the OS, one didn’t just buy software. As the environment developed however, this paradigm increasingly became irrelevant as more and more software was available for either fee or free. The computer user was born and rapidly became the demographic majority, once more relegating the truly literate, those who could read and write program code, to something between nerddom and geekdom.
In recent years this has progressed to where it is possible to find individuals with science or engineering graduate degrees who are unable to write code. Indeed, I am aware of several small companies and government organizations whose overzealous Information Security components have forbidden code writing by anyone outside of their own sub organization and thereby reduced the whole organization to impotence, bankruptcy, and litigation.
The primacy of the illiterate user may be coming full cycle however, or at least, the computer literate may again have a bit of ascendancy. [Link] The transition of central processor manufacture from improving single processor performance to integrating multiple processors on a single chip is manifestly changing the information landscape. In days almost past, the increase in processor speed allowed for bigger, slower programs (more instruction intensive) to stay perceptibly fast enough to satisfy the short attention span of the user and the greed of the organization.
With the shift to multicore processors however, continuing to build programs the old way will only result in slower execution with disappointed users and organizations. The problem is that the programs have to be broken down into pieces that can run simultaneously on different processors and be synchronized. This problem assails the current wisdom of both OS and compilers, and makes many current software programs dinosaurs. That’s not to say that they can’t stay around but they can’t get bigger and they may be toppled by new programs that take advantage of real multiprocessing.
The problem is that current OS are not able to make use of multiple processors and more compilers aren’t any better. There are multiprocessor compilers and OS out there but most of the latter are nerd oriented and most of the former are FORTRAN based and depend on programmer tweaking to produce efficient programs. Oh, and if you want to really frustrate a programmer, tell him/her to write a word processing program in FORTRAN. There was one such once and it was a dismal failure.