Saturday, April 21, 2007

AMB-0: On Dijkstra and Writing

I have long admired E.W. Dijkstra for his contributions to computer science, and his very precise thinking and communication. I discovered the other day through a colleague's blog[3] that Dijkstra's works are all online.

I found that he had a habit that will benefit me in two ways. The habit was to write a series of papers called ``EWD's'' which often were unpublished, but instead were circulated to various colleagues. Some of these writings were theorems, some became full-blown papers, some were just refections on things he had seen recently. It reminds me of a blog, except that many of them were hand-written.

Dijkstra explained the benefit he derived from doing this in his thousandth entry[2].

On a more contented note: I am reasonably pleased with life, about as pleased as we poor mortals may be allowed to be, and in this contentment the EWD-series plays a major role. If there is one ``scientific'' discovery I am proud of, it is the discovery of the habit of writing without publication in mind. I experience it as a liberating habit: without it, doing the work becomes one thing and writing it down becomes another one, which is often viewed as an unpleasant burden. When working and writing have merged, that burden has been taken away.

The habit is also liberating in a much more profound sense. I consider, for instance, EWD975[1] on the Theorem of Pythagoras--of all theorems!--a major achievement of the last semester. It was an unadulterated pleasure to write it; one of its recipients called it ``absolutely bloody marvellous.'' Had I only written with publication in mind, it would never have seen the light of day. Not only would aforementioned recipient have been denied his enjoyment, I would have been so too: what I sent out was Sunday's version, which I could only write after the discovery that I could still improve on Saturday's version, The only way to discover that a neglected or ignored topic is worth writing about is to write about it.

The first benefit I will gain from this series is that I now have a mentor. A long time ago I learned that if one wanted to learn to write well, then one should read things that were written well. I now have a large collection of well-written essays to read. Further, the topics themselves are very interesting in their own right (such as the above-mentioned Theorem of Pythagoras)!

The second benefit is that I can emulate this habit. I have thought before that writing without regard to publication was an important habit, but rarely had I seen it done before now. With this encouragement, I will start my own series. This will help me sharpen my thinking and communicate my ideas with my colleagues.

Bibliography

1
Edsger W. Dijkstra.
On the theorem of Pythagoras (EWD 975).
circulated privately, 1986.

2
Edsger W. Dijkstra.
Twenty-eight years (EWD 1000).
circulated privately, January 1987.

3
Joel F Klein.
Jfk bits: Dijkstra computer inversion quotes, April 2007.
http://jfkbits.blogspot.com/2007/04/dijkstra-computer-inversion-quotes.html.

3 comments:

LugerLA said...

Careful here.

http://en.wikiquote.org/wiki/Good_Will_Hunting

Look to the bottom when he asks "Do you have a soul mate?" Something to think about, as much as I like the classics.

And, given that I won't be around to ask this at the end of May, do you have a research agenda for the summer?

Mattox Beckman said...

Yeah, I had thought about that minor detail. On the up-side, I didn't have to ask permission, and there's absolutely no time commitment on his part (as far as I know).

For research, I am working on a team developing a programming language to support a paradigm we call ambient oriented programming, and I will be working to implement a distributed programming model in Maude.

jfklein said...

I'd been digging around in Wikipedia on various fundamental CS topics and people, it's been very enjoyable. I'm glad this post of yours is enabled by it, indirectly!

And I have to say, your summer plans sound better than the post itself! Thanks for mentioning Maude, that got me curious and from reading a few pages of its 137 page "primer", it sounds like an interesting system.

Is ambient oriented programming something you can expand on here, or do you have pointers to some of the ideas?