We present an entire potpourri of ideas from the past decades of Computer Science and
Computer Technology. The quick rise of the subject was largely the result of such great
ideas. Thus we became used to expect more of them to appear with ever increasing frequency
and brilliance. Expectations were cultivated with great vigor, and new ideas were
promised that would even revolutionize the technology and with it the world. But not
all promises and claims must be taken literally in these times of flashy advertisement.
On hand of a number of examples, we would like to show, that sometimes caution is wiser
than exuberance.
Widely acclaimed at their time, many grand ideas have lost their splendor and brilliance
under today's critical scrutiny. We try to find reasons. Some of these ideas are almost
forgotten. But we believe that they are worth recalling, not the least because one must
try to learn from the past, be it for the sake of progress, intellectual stimulation,
or fun.
The ideas discussed here stem from various branches of computing. Some concern the subject
of Computer Architecture, where new ideas flourished in the years between 1960 and 1980.
In recent years, however and alas, the urge for innovation has given way to the acceptance
of a single standard, in spite of its — to say the least — mediocrity. Here, we discuss
the early invention of the stack for evaluating expressions, critically analyze solutions
for implementing subroutine calls, relativize the usefulness of virtual addressing,
and — on a more general level — investigate the once popular drive for complex instruction
sets, which has survived although it is widely known to be a bad idea.
Programming Languages turn out to be a rich source of ideas that were praised as great,
but which on closer inspection — or rather during practical use — turned out to be less
than spectacular. Once again, the times of the flourishing ideas, of the avant garde,
were the years 1960—80. We notice a similar trend as in computer architecture towards
a standard, towards industrial products, that once again leave very much to be desired.
Here we may find a surprising number of flaws, if not even blunders. First come some
ugly aberrations in the realm of notation and syntax. They are followed by examples
borrowed from Algol 60, the language that created and stimulated a whole field of
research, but never found wide acceptance outside academic circles. We pick the topics
of the for statements, the concept of own variables, and the intriguing name parameter
for procedures. These topics were among those which kept discussions among language
designers lively and sometimes emotional for many years.
The next example of a "good idea" stems from the category of Implementation Techniques.
It is the so-called display for speeding up the addressing of variables in
block-structured languages. Here, the reason why the clever idea turned out to be
less than successful was the technological change in computer architecture. This is
a phenomenon often encountered with "optimization" measures. It is a typical example,
where ingenious techniques of software were devised on order to overcome the
inadequacies of the available hardware.
The last category of problem cases are Programming Paradigms. Almost every time the
discipline of programming was believed to be in insurmountable difficulties, promptly
a new paradigm appeared on the stage, which was widely acclaimed to be the panacea
for all illnesses and grievances. In hindsight we acknowledge that every presented
paradigm has some appeal and some qualities, but we must also confess that none has
held the hopes high for a long time. We briefly use our critical looking glass for
inspecting Functional, Logic, and Object-oriented Programming.
In the end, we cannot avoid asking ourselves the question: Which are today's Great
Ideas? Will they also turn out rather mediocre in the future?