Dijkstra's Manuscripts Available Online
Bodrius writes "Salon has a short but interesting article called GOTO considered joyful, about E. W. Dijkstra's manuscripts, as published by the University of Texas, and their bloggish nature.
I'm not sure if the blog analogy is that accurate, but the articles are a must read for computer scientists and geeks in general." (Annoying but free click-through system for non-subscribers.)
GOTO considered joyful
... use of such titles has remained as a persistent minor in-joke (the 'considered silly' found at various places in this lexicon is related).
On his proto-blog archive, the words and spirit of the late computer scientist Edsger Dijkstra live on, inspiring new generations of geeks.
- - - - - - - - - - - -
By Rachel Chalmers
July 9, 2003 | considered harmful: adj. [very common] Edsger W. Dijkstra's note in the March 1968 "Communications of the ACM," "Goto Statement Considered Harmful," fired the first salvo in the structured programming wars
That entry in Eric Raymond's edition of the Hacker's Dictionary was my first encounter with pioneering computer scientist Edsger Wybe Dijkstra, but thanks to the dedicated work of volunteers at the University of Texas at Austin, it was very far from my last. These volunteers maintain the massive and growing EWD archive. It's a tremendous and erudite proto-blog, the extraordinary record of an exemplary life, and it's one of my favorite places on the Web. A year after his death, a computer scientist who devoted himself to teaching people how to think is still on the podium, delivering gem after gem of insight.
Born in the Netherlands in 1930, Dijkstra was a witty and thoroughly engaging writer in his nonnative English ("I have learned to be very suspicious of ideas I cannot express well in both Dutch and English," he noted, late in life. "As nice as it is to have the union at one's disposal, it is wise to confine oneself to the intersection.")
Over a 40-year period that began in the early 1960s, Dijkstra wrote prolifically on timely and compelling topics: from his experience of the evolution of universities on both sides of the Atlantic from the post-WWII era to the beginning of the 21st century; to meditations on the science and art of teaching; to incredibly rich and detailed accounts of his own intellectual methods (don't miss EWD 666: "A problem solved in my head," which contains the endearing aperçu: "Goldbach's Conjecture -- I had never thought that I would ever use that!")
Like entries in a modern weblog, many of the informal pieces collected in the EWD archive were never published in any traditional sense. Instead they were copied (and later photocopied), numbered sequentially from EWD 0 (sadly lost to history) to EWD 1317 ("From van IJzeren's correspondence to my aunt & uncle," written a few months before his death in August 2002) and circulated from the greedy hands of one computer scientist to another like Eastern European samizdat or fourth-generation copies of the Lions books.
For years I have been dipping into this priceless archive (or at least its English language subset; is there a great Dutch-English translator out there who would do the world the incalculable favor of translating the rest?) and I have yet to scratch the surface of its treasures. But I continue to follow the trail; the archive is redolent of the spoor of Dijkstra's intellectual evolution, the physical evidence of a great mind thinking aloud. A fine, clear light shines through it all, the light of intelligence unmarred by any particular arrogance or egotism -- the set of personal qualities I tend to think of as integrity.
Dijkstra is at his iconoclastic best on, for example, academic hypocrisy:
"Today's mathematical culture suffers from a style of publication, in which the results and the reasoning justifying them are published quite explicitly but in which all the pondering is rigorously suppressed, as if the need to ponder were a vulgar infirmity about which we don't talk in civilized company."
Or the relationship between programming and mathematics:
"Programming is one of the most difficult branches of applied mathematics; the poorer mathematicians had better remain pure mathematicians."
Or the truth itself, however unpalatable:
"French science is poisoned by politics."
One particularly apposite piece (EWD 696) is titled "Written in
"Men lie."
"Yeah, about sleeping with other women, but never about bioluminescent plankton."
-Dan Brown
Here is a brief bio on Edsger Dijkstra.
Unique signatures are rare.
You could change the expiration on the temporary cookie they give you to get perminent access. Of course, this would be illegal.
Does anyone know if he routinely let people know what type of pen he was using when he wrote that particular document? Here's one of the ones I found.
Why did he do this? For his own personal notes on which pens were good (I guess important if you are frequently writing things).
Why did he use pens and not electronic formats? For a CS person that surprises me.
The article states that Dijskstra has said:
"Programming is one of the most difficult branches of applied mathematics; the poorer mathematicians had better remain pure mathematicians."
I do not agree with this. I mean, in pure mathematics there are not much to think about besides mathematics. Programming includes many other aspects, for example creativity. So if you are a poor mathematican but have other qualities that are needed for programming, you would have an easier time doing programming than pure mathemtaics I think.
It's not accurate, because that would make the material self-important, tedious, badly written nonsense.
His teachings are not language specific.
Dijkstra was the 1972 recipient of the ACM Turing Award, often viewed as the Nobel Prize for computing. He was a member of the Netherlands Royal Academy of Arts and Sciences, a member of the American Academy of Arts and Sciences, and a Distinguished Fellow of the British Computer Society. He received the 1974 AFIPS Harry Goode Award, the 1982 IEEE Computer Pioneer Award, and the 1989 ACM SIGCSE Award for Outstanding Contributions to Computer Science Education. Athens University of Economics awarded him an honorary doctorate in 2001. In 2002, the C&C Foundation of Japan recognized Dijkstra "for his pioneering contributions to the establishment of the scientific basis for computer software through creative research in basic software theory, algorithm theory, structured programming, and semaphores". From: http://www.cs.utexas.edu/home/news/articles/index2 002/ewdobit.html
I can't imagine him being important today, can you?
There is some saucy stuff in there that he's written about wife swapping and you thought CS was dull.
Tom.
Yes, Dijkstra is still relevant. That you should think he has anything to do with C++ is strange, and makes me wonder whether you're familiar with Dijkstra's work at all. Take a look at EWD 1243, and you'll see that he thought it was just another one of the messes pushed as the savior of us all. I dare say he'd say the same for Java and C#, which will be the legacy technology of tomorrow.
Dijkstra's work on writing programs so as to be confident in their correctness from the start is very relevant--how much do you think people would be willing to pay for an OS written that way?
You have entirely missed the point.
If you know math and language theory the actual language you currently know does not matter. Language is a tool. You can learn to use a new tool in a matter of weeks if not days. Math is the knowledge on how to use all of the tools, not just the particular shiny one that has just been produced last week.
After learning 5 or 6, the next one comes in a matter of days. Been there, seen that, trying to do it.
This has not changed since Dykstra and ain't going to change. Ever. This is the fact known as the 5 times salary difference between the factory floor and the chief designer office.
It is a fact of life, it exists in all industries and it is here to stay.
Actually, Asimov has described this brilliantly in one of his novells. Read "Profession". It is thy best novell he ever wrote.
Baker's Law: Misery no longer loves company. Nowadays it insists on it
http://www.sigsegv.cx/
> You could change the expiration on the temporary cookie they give you to get perminent access. Of course, this would be illegal.
I was winding myself up to sneer, but then I realized that this would be [circumventing] a technological measure that effectively controls access to a work protected under [Title 17].
While we're at it, remember that "No person shall [...] offer to the public [or] provide [...] any technology [...] or part thereof that is primarily designed or produced for the purpose of circumventing a technological measure that effectively controls access to a work protected under [Title 17]."
Citizen, remain at your console while the Secret Service analyzes the case against you and decides your guilt and an appropriate punishment.
If you were blocking sigs, you wouldn't have to read this.
The EWD archive is looking for volunteers to convert the handwritten articles to google-able HTML. See here if you are interested.
Also the Microsoft-like problems that he faces with IBM. His disdain is clearly shown by labelling IBM the devil!
Dijkstra - trolling since 1975 ;)
I study CS @ Eindhoven University, where he came and teached a lot(his and his compatriots were good in programming methodology: http://www.win.tue.nl/pm/ - horrible looking webpage) Trust me, it shows. Most of the 'hardcore' faculty members were friends/exstudents/what have you, and work the way he did. Dijkstra (and the folks at my faculty) did not bother himself with implementations of programming languages. Nor with what function to call for what. They all strive to understand the nature of the problem, and from that they try to derive the solution.
That's a totally different approach to programming, which is a *lot* of work. However, it shows in areas where simplicity is key. There is a reason why Dijkstra used Semaphores (what do you think Java uses?). Or have you ever seen a good proof of Peterson's Algorithm? (I know Feijen and van Gasteren gave a generic derivation in 'On a Method of Multiprogramming', but that's just me having had to read it because it's part of my study there, of course. A book which delves into seemingly simplistic problems, but then gathers a framework which can tackle much bigger problems then you would expect.)
The problems for single-process computing are easy. For those of you who program in them, I'm not trying to critisize or anything (I personally know that it's still damn hard from time to time), but there are no synchronisation problems, for one. To ensure that these are all systematicly handled you'd really want to have a proof that nothing can go wrong. Java and exceptions? Fine, it's just a way to get away with bad programming. There are a lot of places where you simply cannot get away with dirty programming: you don't want your car to deadlock going at 90 MpH, now would you? You want to be absolutely positive that it will *never* happen. THat means having either done extensive testing (which you can only hope it was sufficient), or having formal proof that it cannot go wrong.
That is why Dijkstra held himself to the 'very hard problems'. The easy ones you can mess up with and still have not too much problems. The hard ones are problematic if they fail.
He did not believe in cluttered code. Everything should be there for a reason, should be proven to be there and exactly there for a reason.
To excel in Computer Programming you must be so smart as to be able to tackle the really hard problems. That means tackling problems on the problem field. You don't need languages for that, you need proof. Languages are but a tool for describing a solution and verifying your proof. Some languages describe easier then others, yes, but the solution is the same.
I can write a C to Haskell to C++ to Prolog to Java compiler. Pretty straightforward too. The languages are the same. You just don't want to see the spaghetti which comes out of a program once I'm through with it. And that's the reason why you use a specific language for a solving a problem: some languages simply are much easier to express the solution in.
However, that does NOT solve the problem, it merely makes it easier to program a solution understandibly.
Dijkstra was above all a scientist, and thus had to convince the scientific community of his ideas. This normally is done by using formal methods which describe both the problem as the solution in such a away that they can be easily understood.
That is still the holy grail for may solutions: how can they be written such that they can be understood more easily.
But I'm starting to rant here...
(1) He obviously can't tell the difference between pure and applied mathematics and
That conclusion is not obvious. Given that the real world introduces complications that can be ignored in the world of pure mathematics, his (presumed) premise that "if applied is hard, the weaker might better stick with pure" makes logical sense.
(2) How come all the loser mathematicians who can't hack it end up becoming programmers?.
Both of your premises of "loser" and "can't hack it" are just some sort of pejorative that mean nothing in practice if you're trying to make a logical argument, and the "end up becoming programmers" is patently false. So the statement is just plain empty of value.
I've never had much respect for Dijkstra. I have even less now.
Well, as a personal statement of your dislike for someone, it requires no rational justification and hence cannot be faulted. Whether others will feel a consequent lack of respect for your own self as a result is hard to say, but it's pretty safe to assume that they won't be impressed by your ability to reason.
"The question of whether machines can think is no more interesting than [] whether submarines can swim" - Dijkstra
The Internet uses Border Gateway Protocol (BGPv4), which is a Path-Vector routing protocol. OSPF is a Link-State routing protocol.
OSPF is considered an IGP (Interior Gateway Protocol). It can be used within an autonomous system, but has no place in determining path selection for traffic between automonous systems.
As far as IGPs go, there's only one that would be capable of handling the routing table for the entire Internet, and it's not OSPF. IS-IS, Intermediate Syetem to Intermediate System, is another Link-State protocol developed by the OSI during the same period when OSPF was being developed.
They share a lot of similar features, and address all of the same shortcomings inherent to Distance-Vector routing protocols (RIP, IGRP). You can actually redistribute the full Internet routing table from BGP into IS-IS, and it will handle the strain.
Aside from the ability to handle astronomically large routing tables, IS-IS has one additional feature that sets it above OSPF: No requirement for a single backbone area (Area 0, in OSPF speak).
OSPF is not particularly well suited to "meshy" environments, due to the need for a single, clearly defined backbone area (In OSPF, all traffic between non-backbone areas must traverse Area 0). IS-IS alleviates this requirement. There can be multiple Inter-area paths, which can be very useful in a complex network.
Of course, the pool of IS-IS savvy network engineers is far smaller than that of the OSPF disciples, so you don't see it in use very often. The exception is in the service provider space. Big ISPs, and Backbone Carriers frequently utilize IS-IS when an IGP is called for, notably for it's ability to handle large routing tables.
(Don't get me wrong... I'm a fan of OSPF, but much like the programmer folks like to say, "It's just a tool in the toolbox." The savvy network engineer will utilize the Routing Protocol which best suits his requirements (In some cases he'll use more than one), just as the savvy programmer with utilize the programming language that best suits his requirements.)
In summary:
For those that would die defending it, Freedom
has a sweet taste that the protected will never know.
He was at UT when I did my master's in CS there, and he was certainly a character. When the speaker walked into the room and saw him on the front row, little beads of sweat would immediately begin to form.
I actually took a class from him, which had a vague Latin name he translated for us as "whatever I want to talk about". He was quirky and intimidating but friendly and engaging at the same time.
Some of the interesting things he did:
He took pictures of each of the students (I think there were 7 of us) to file away somewhere. I guess it helped him remember our names.
He used a different hand for writing on the chalkboard on alternate days. Lefty-days were sometimes a bit rough. He had broken his right wrist a year or so before, and wanted to ensure he could still function if it happened again.
The class had no tests and no homework, but featured an open-ended one-on-one "verbal final" at the end of the semester, either in his (large, corner, carpeted, blackboards-on-every-wall) office, or in his home.
The verbal final featured *me* with those little beads of sweat...