19th February 2007

Code Read 6 - Mitch Kapor’s Design Manifesto

This installment of Code Reads takes a huge leap from the world of academia and the historic foundations of our discipline to something more recent: Mitch Kapor’s Software Design Manifesto. In this passionate essay, Mitch Kapor extols the virtues of designing software with the user experience in mind, and advocates developing a profession of software design.

Today the phrase “software design” (like “architecture”) has come to have so many definitions that Humpty Dumpty would grinning from ear to ear. So before we can comment on what Mitch Kapor had to say, we need to pay some attention to what he actually did say, and not what we read with our modern vocabulary.
Read the rest of this entry »

posted in CS Literature, Code Reads, Mitch Kapor, Software Design | 0 Comments

17th February 2007

Code Read 5 - Knuth’s "Structured Programming with Go Tos"

Code Reads 5 takes us from Dijkstra to Knuth, and his humorously titled “Structured Programming with Go To Statements“. In it, Knuth addresses how the field seems to have missed the real point of Dijkstra’s structured programming, and instead focused on mindlessly eliminating “go to” statements. Knuth quotes Hoare when saying the most important point is “the systematic use of abstraction to control a mass of detail”, not eliminating a particular programming tool.

The main topic of Knuth’s article is not abstraction, but rather examining the uses of “go to” that improve a program, and how newer (in 1974) language constructs (like break statements and case statements) can almost always be used to express the meaning of those “go to” statements. In fact, he ends by saying that although he would personally like to keep “go to” available in higher level languages, he would probably never need to use it.
Read the rest of this entry »

posted in CS Literature, Code Reads, Coding, Donald Knuth, Software Design | 0 Comments

13th February 2007

What is new under the silicon sun?

For a student of software design (like myself), a recent post by Peter Van Roy (perhaps this Peter Van Roy) at Lambda the Ultimate was quite interesting. He posited that there was a Golden Age of computer science from 1964 to 1974, gave a list of a 11 major developments from that era which seem to have set our direction and haven’t been replaced by anything better, and then he asked what people thought. Although I waded in to question myself, what I think is much more interesting are things that everyone else suggested he missed. When I run out of meaningful things to say, probably fairly soon, this post will be quite helpful for my further studies.

posted in Software Industry, Things to find out about | 0 Comments

11th February 2007

Code Read 4 - Dijkstra’s Notes Part Two

Edsgar W. Dijkstra’s “Notes on Structured Programming” is definitely a meal. Its quite a lot for one Code Read. So I broke it into two parts. First, we had the appetizers, now here’s the main course.

Program families and evolving software

Dijkstra points out that programs exist in large families of similar programs. When we make changes, we are transforming it from one member of the family to another. By thinking of programs in this way, the importance of a programs structure becomes even more important - because we would like the families to share not just code, but also correctness. If the structure is confusing, the changing the program is difficult because lots of code changes and that code all needs to have its correctness reexamined. A simply structured program tends to require changes in areas that are already well-isolated, thus less code changes, and we need to think less about the correctness of the new code and the code that depends on it. (Similarly, although Dijkstra does not make this point explicitly, a layered structure can make it more clear which areas rely on the changed code, so they can also be verified easily.)
Read the rest of this entry »

posted in CS Literature, Code Reads, Coding, Edsgar Dijkstra, Software Design | 0 Comments

10th February 2007

Code Read 4 - Dijkstra’s Notes on Structured Programming

Edsgar W. Dijkstra’s “Notes on Structured Programming“, which is Code Read 4, stuck me as shockingly prescient - or perhaps it is just that we creators of software are very slow to learn these lessons. Surely something written almost 40 years ago should feel more dated than this., and we should have learned or discarded all the lessons in it. But a careful reading shows that, as we have seen before, Dijkstra was one smart cookie.
Read the rest of this entry »

posted in CS Literature, Code Reads, Edsgar Dijkstra, Software Design, Software Is Hard | 0 Comments