As we race forward in technology, clamoring to be the first person to discover the next big innovation with all the chaos and enthusiasm of the great land rush of the American West, it is good to occasionally take a break from the race and check our bearings by looking back at our past.
Today is a very special day in the history of computer science. Not for the birthdays we are celebrating today (Happy Birthday Ed!) but for the memorial of one who passed away on this day in 2002. Today I write in honor of the Dutch computer scientist Edsger W. Dijkstra and his influence on this field of science.
Edsger Wybe Dijkstra (May 11, 1930 – August 6, 2002) made numerous important contributions to computer science. You can get a good feel for his impact in the Wikipedia article about him. As you read, search through the bibliography and you can find details of his original works that apply to software development even today. Even Google probably would not exist without Dijkstra’s insights. There is one topic that had a particularly profound impact on me. It all revolves around the Goto statement.
In 1968 this article by Dijkstra was published in the Communications of the ACM (Association for Computing Machinery).
In his letter, Dijkstra calls for the abolishment of the Goto statement from high level programming languages because it promotes bad programming practices that make for unmanageable code. The debate went on for awhile before subsiding. But then in 1987 a new article was published in the Communications of the ACM titled “Goto considered harmful, considered harmful”. This article debated the merits of the original article of 1968. That stirred the debate once again and over the next few months letters to the editor dominated the magazine. Then after several months of debate, there was one letter to the editor that was particularly detailed and scientific which poked holes in the arguments of both sides of the debate, first pointing out the incorrect syntax used in the arguments, like the use of upper case vs. lower case variables, then it ripped apart the content of the arguments. In the end, the author stated his disappointment that after 20 years, we had made no real progress on this position. The letter was signed by Dijkstra himself.
I find it fascinating to have been actively involved in that debate with the computer science legend himself in those days. Since that time, the topic has occasionally surfaced again in one form or another, though never with the energy and passion of the programmers and computer scientists (called developers now) in those first two waves of debate. And yet, even today, 44 years later, we still see the results of programmers who continue to fail to heed the real message Dijkstra was sending: the concept of structured programming. Corrupted data, security vulnerabilities, software crashes and incompatibilities are the result. While object-oriented languages make it easier to follow structured programming, they do not guarantee it. Learning to write a program (now we call them “apps”) is easy. There is an endless supply of self-taught developers. The challenge is getting the world to use the best practice concepts that Dijkstra was championing.
It might seem like 44 years is a surprisingly long time for such bad practices to persist. But, depending on what you consider the starting point, computer science is only about 60 to 80 years old. If you compare Computer Science to Medical Science, we are at the medical science equivalent of using leeches and witch doctors. With the explosion of information, it is no longer likely that any one person will accomplish the brilliant feats like DaVinci, Edison, or Einstein did, but hopefully our collective intelligence will make it possible to accelerate the maturing process of computer science that we can quickly realize the goals of Edsger Dijkstra in his pursuit of better software. So what do you think? Should the Goto statement be considered harmful?
The good news: I still have never had a computer get infected with an email virus while using Lotus Notes. That 18-year run is still going.
The bad news: My laptop got a virus through a random act of browsing. It happened thanks to a touch pad strategically located between the palms of the hands where it can occasionally cause the mouse to move or misread a mouse click. It has happened many times in the past. I’m typing away when suddenly the cursor jumps to somewhere else on the screen and my typing starts appearing in the wrong place. This time it went to the browser window and who knows what input it took before I stopped typing. It’s the first time being a fast typist was a liability for me. I just know that suddenly I started getting a chain of popups.
I closed everything and it didn’t look like anything evil happened, but since then my computer started crashing randomly and would never come out of hibernation properly. A full virus scan revealed a problem, but it needed the help of a Norton Anti-virus bootable CD. OK, I created the bootable CD from another computer and ran the repair tool. After that the PC quit booting altogether. This was a case where the cure was worse than the illness. No, it won’t even restore to a previous recovery point. Sure, I could resort to a system image recovery that I made some time ago, but there are no guarantees of recovery at that point. Who knows what devilry is at work with the Norton tool and virus.
I put in a call to Norton support and pretty quickly the guy at the other end decided to escalate this one to the next level. They actually scheduled a time the support guy would call back. This is going to be a true test of Norton’s support service. I’ll keep you posted. Meanwhile, the blog will continue to be quiet thanks to this new time-sucking event.