22nd July 2007

Notes On Notes On Postmodern Programming

0. Preamble

Let us go then, you and I,
When the code is spread against the sky
Like a patient etherised upon a table;

Code Read #11 from Scott Rosenberg deals with James Noble’s and Robert Biddle’s “Notes on Postmodern Programming”.

1. A Sentimentalist’s Apology

Let us go, through certain half-deserted streets,
The muttering retreats,
Of all-night coding, of cheap cube walls,
Of pizza boxes in the halls:

I have a confession to make: I love arithmetic. Not the addition and multiplication of engineering, but the study of numbers themselves. From Euclid’s Algorithm to RSA Encryption, no other subject mixes such simplicity and such depth. Even more beautifully, there is still so much unknown. For example, from Richard Guy’s book “Unsolved Problems in Number Theory“: Is every even number greater than 4 the sum of two primes? Are there infinitely many primes which are one more than a square? Is there an odd number that is the sum of its own divisors? Nobody knows.

Read the rest of this entry »

posted in CS Literature, Code Reads, James Noble, Postmodern Programming, Robert Biddle, Software Industry | 0 Comments

6th June 2007

Code Read 10 - Guy Steele on “Growing a Language”

When doing software design, a common question is how much “advanced” functionality to build in, and how much to let the users create themselves using a simple set of tools. For example, a reporting module could have many canned reports, or could have a tool which allows users to build reports themselves (or both). Often the canned reports can do things more efficiently or elegantly than user-built reports, because they have access to the full internal workings of their environment. Designers of programming languages face a similar problem - how much should be included in the language, and how much should be left to users to build. In the latest of Scott Rosenberg’s Code Reads Guy Steel shows how the ideas of the open source movement influenced the designers of Java to think in terms of growing a language to avoid this dilemma.

Read the rest of this entry »

posted in Code Reads, Guy Steele, Skillfulness, Software Design | 0 Comments

29th April 2007

Code Read 9 - John Backus and Functional Programming

The 1977 Turing Award went to John Backus, and in his Turing Lecture, “Can Programming Be Liberated from the von Neumann Style?”, he made a vigorous case against traditional “von Neumann” programming (VNP), and for functional programming (FP). Unfortunately, the vigorous rhetorical style of this paper has infused the discussion of FP, resulting in countless flame wars over the last 30 years. The overly broad and weakly supported statements that make up the bulk of the discussion often boil down to these:

“Traditional programming languages are clumsy. FP will solve all your problems, if only you are smart enough to use it.”

versus

“FP is a toy. Nobody has done any real work with it, so it must be useless.”

Both sides are throwing out the baby with the bathwater, and the good ideas of FP are tainted by their association with their more problematic brethren.
Read the rest of this entry »

posted in CS Literature, Code Reads, Functional Programming, John Backus | 2 Comments

7th April 2007

Code Read 8 - Eric S Raymond’s Cathedral and Bazaar

The ever evolving “The Cathedral and the Bazaar” by Eric S Raymond (aka CatB) has become something of a lengthy read. Scott Rosenberg’s Code Read 8 dives on in, and rightly describes it as a “classic essay” and says it “has proved its importance” in the literature of software development. I first read it several years ago, it was considerably pithier then. However, it is still full of important ideas.

Cathedrals and Bazaars

The most important idea is its title track - two different ways to build software. In the “cathedral” style, a master architect and a small group of hand-picked skilled craftsmen work toward a grand vision with lots of direction and coordination. This is the traditional model of software development. The “bazaar” model, which is common to many open-source projects, particularly Linux, is one in which there are no hand-selected craftsmen, and no master plan. Instead the people in power select the best contributions from those people interested and able enough to contribute something worthwhile. The direction in which the project evolves is determined by the availability of volunteers willing to push it in that direction, as well as an entity, often an elected committee, which acts as an editor.
Read the rest of this entry »

posted in CS Literature, Code Reads, Eric S. Raymond, Software Process | 0 Comments

9th March 2007

Code Read 7 - David Parnas on Star Wars Software

In 1985, David Parnas resigned from his position on a panel convened by the Strategic Defense Initiative Organization, which was overseeing the “Star Wars”, or SDI anti-ballistic missile defense program. Along with his resignation he submitted several short essays explaining why he thought the software required for Star Wars could not be built, at that time or in the foreseeable future. Those essays were later collected and published, and are the subject of Code Read 7.
Read the rest of this entry »

posted in CS Literature, Code Reads, David Parnas, Software Design, Software Is Hard, Software Process | 0 Comments