Remember the Computer Science Past Or Be Condemned To Repeat It?
theodp writes "In the movie Groundhog Day, a weatherman finds himself living the same day over and over again. It's a tale to which software-designers-of-a-certain-age can relate. Like Philip Greenspun, who wrote in 1999, 'One of the most painful things in our culture is to watch other people repeat earlier mistakes. We're not fond of Bill Gates, but it still hurts to see Microsoft struggle with problems that IBM solved in the 1960s.' Or Dave Winer, who recently observed, 'We marvel that the runtime environment of the web browser can do things that we had working 25 years ago on the Mac.' And then there's Scott Locklin, who argues in a new essay that one of the problems with modern computer technology is that programmers don't learn from the great masters. 'There is such a thing as a Beethoven or Mozart of software design,' Locklin writes. 'Modern programmers seem more familiar with Lady Gaga. It's not just a matter of taste and an appreciation for genius. It's a matter of forgetting important things.' Hey, maybe it's hard to learn from computer history when people don't acknowledge the existence of someone old enough to have lived it, as panelists reportedly did at an event held by Mark Zuckerberg's FWD.us last Friday!"
You chuckle, but hidden variants of LISP keep coming back every 20 years like a slow-motion herpes infection. Anyone familiar with LISP knows that it was used because it was easy to parse using a stack, but it was horribly prone to errors in coding. Good LISP programs are short, but nearly impossible to write.
Another example is Python - basically a repackaged CBASIC script interpreter. Runtime VB6, VBA and Python share a lot in common (Python of course has some bells and whistles, such as partial object support).
Anyway, it gives me somewhat of a sign of relief to see C, C++ and Java/C# be stable in the face of this recurring tide of fad languages, as there is some genuine progress in making programmer easier (ie. not more clever, not making it an infinite jack knife). On the negative side, C++0x and C# have both seen all sorts of non-C++ feature creep from the fad languages of today.
Part of the problem maybe. Things really started going downhill when BASIC came out. We have countless engineers today who honestly think that nothing happened before the microcomputer, and many who think nothing happened before the PC, and many of those who think nothing happened on the PC even until Windows. So much was reinvented from scratch from the hobbyist side of things, and it shows.
One issue I see also is that many professionals are basically 9 to 5ers. They deal with computers as their boring and tedious day job, and have zero interest in them outside of that. History of computers is irrelevant to them. Knowing how to do better code is irrelevant to them as long as they don't get fired. Knowing how hardware works is of no interest to them. When they were in school they would whine loudly about how theory was useless and that it was a waste of their time.