Code Reads #11: “Notes on Postmodern Programming”

Playfulness in writing about programming isn’t always so easy to find. But here it is again. In our last Code Reads we got to enjoy Guy Steele’s words-of-one-syllable language game; this time around, we’re in the hands of two writers who are playing games with the entire corpus of software history.

James Noble and Robert Biddle are colleagues at Victoria University in Wellington, New Zealand (Biddle is now at Carleton University in Ottawa). In Dreaming in Code I summarized a bit of their work (along with a group of colleagues) on “Scale-free geometry in OO programs” — a study which found that software objects are “scale-free, like fractals, and unlike Lego bricks.”

Earlier this decade Noble and Biddle presented a series of papers at the OOPSLA conference on the theme of “Postmodern Programming.” The first, “Notes on Postmodern Programming” (2002), opens with a tongue-in-cheek transposition of the Bauhaus manifesto into the computing realm. From there, it jumps into a sometimes line-by-line rewrite of Edsger Dijkstra’s “Notes on Structured Programming” (which we looked at back in Code Reads #4). So we’re on notice that this paper will draw heavily on the postmodern aesthetic of cobbling together scraps, references, tributes and parodies.

But those bits and pieces form a serious argument, too.
[Read more...]


 

Postmodern Programming extras for Code Reads

I’m getting ready to post the next Code Reads soon, but — for those of you following along at home — I wanted to point you to some additional reading. Noble’s and Biddle’s original “Postmodern Programming” paper remains my focus. But if you’re interested you may also want to have a look at several other of their papers:

  • “Notes on Notes on Postmodern Programming” is an offbeat, entertaining followup that explicates, challenges and mocks the first paper. It’s available in a long form and a “radio edit.”
  • “No Name: Just Notes on Software Reuse” is mostly a provocative (and useful) compendium of important passages and quotes from software history that reflect on the notion of reusable components.

These papers are all available from one Postmodern Programming index page.


 

Next up for Code Reads: “Notes on Postmodern Programming”

I’m on the road this week with my family, and posting will be light.

Thanks to everyone who weighed in on the Code Reads discussion of Guy Steele’s “Growing a Language.”

For the next Code Reads I’m going to continue down the slightly more literary path we trod with Steele and have a look at “Notes on Postmodern Programming,” a paper by James Noble and Robert Biddle from 2002. (The link provides further links to a PDF or Postscript version of the paper.)

It’s both more recent and considerably more offbeat than some of the other stuff we’ve read. I heard the authors present work at OOPSLA in 2004, and I think their in-person style of delivery — well-timed to a rich slide-set and loaded with carefully calibrated ironies — isn’t fully captured in plain text. Nonetheless, it’s a provocative read, and one that offers a good counterpoint to some of the discussions we’ve been having on the woes of the programming field.

I’m now trying to work on about a two-week schedule for these readings, so I plan to post on the “Postmodern” essay some time next week. Happy solstice!


 

Code Reads #10: Guy Steele, “Growing a Language”

You don’t have to read too far into Guy Steele’s “Growing a Language” to figure out what he’s up to. In this 1998 talk on the nature of programming-language design, Steele writes under a set of constraints: he may use any word of one syllable, but if he wishes to use longer words, he must define them first — using only words of one syllable.

Steele aimed to illustrate how awkward and confining it can be to try to express yourself when you don’t have access to an extensive vocabulary: “I wanted to show you want it is like to use a language that is much too small.” (By this point in the talk, he has already defined “language.”) His larger purpose is to advocate a philosophy of programming-language development that aims for neither a small nor a large language, but rather for one that is “designed to grow.”

Such growth is to be propelled not by a closed cadre of gurus but by the language’s users, who have been given an appropriate set of tools to extend the language. The shape of the language is such that these user-generated additions do not look or behave any differently from the “original” elements of the language provided by its initial creators. Nearly a decade later, this argument — which parallels similar ideas that have become popular in the open-source software community as well as in the “user-generated” enthusiasms of Web 2.0 — sounds neither arcane nor controversial.
[Read more...]


 

Code Reads: Next up — Guy Steele

I’m extremely pleased to see how many of you persevered through the long Code Reads drought and returned for the Backus discussion. Thank you all for sticking around. I am learning a lot from the comments, and you’ve renewed my determination to get Code Reads back on a reasonable schedule.

For the next installment, I’m going to suggest that we read (or re-read!) Guy Steele’s paper, “Growing a Language.” It’s a famous piece of writing that I skimmed ages ago but always wanted to take a closer look at. It is also, I think, considerably more accessible than the Backus. Here’s a PDF link to the Steele paper. And here’s an interview with Steele from Sun.

PREVIOUS:

 

Code Reads #9: John Backus, “Can Programming Be Liberated…?”

The annals of programming include a small but significant number of radical thinkers who propose total overhauls of our basic techniques for making computers perform useful tasks. One of them is the late John Backus. Backus was the central figure in the creation of FORTRAN — the archetypal first-generation “higher level” programming language — and the devising of the BNF (“Backus Naur Form” or “Backus Normal Form”), a formal method for specifying programming-language syntax.

In his 1977 Turing Award lecture, however, Backus stepped away from the world he’d helped shape and asked, “Can Programming Be Liberated from the Von Neumann Style?” It’s a question that gets at fundamentals, at breaking free of founding constraints. It’s like asking whether psychology could be liberated from Freud, or physics from Einstein.

Backus describes the prevalent Von Neumann paradigm of computing:

In its simplest form a von Neumann computer has three parts: a central processing unit (or CPU), a store, and a connecting tube that can tramsit a single word between the CPU and the store (and send an address to the store). I propose to call this tube the von Neumann bottleneck. The task of a program is to change the contents of the store in some major way; when one considers that this task must be accomplished entirely by pumping single words back and forth through the von Neumann bottleneck, the reason for its name becomes clear….

Surely there must be a less primitive way of making big changes in the store than by pushing vast numbers of words nback and forth through the von Neumann bottleneck. Not only is this tube a literal bottleneck for the data traffic of a problem, but, more importantly, it is an intellectual bottleneck that has kept us tied to word-at-a-time thinking instead of encouraging us to think in terms of the larger conceptual units of the task at hand.

(I will pause here to note the presence of that word “tube.” Perhaps Senator Ted Stevens, far from being a techno-rube, was actually a student of Backus.)
[Read more...]

PREVIOUS:

 

John Backus, RIP, and up next in Code Reads

I was all set to dive into “No Silver Bullet” for the next Code Reads, but given last night’s news of the passing away of John Backus, father of FORTRAN, I thought I would do a quick revision of the plan.

The next Code Reads will focus on Backus’s 1977 Turing lecture, “Can Programming Be Liberated from the von Neumann Style?” It’s full of equations and math notation that, superficially at least, look daunting to this reader — but I will give it a try, and perhaps the collective expertise of all of you will help bolster me in those areas where I falter!