Wordyard

Hand-forged posts since 2002

Archives

About

Greatest hits

Code Reads notes and other doings

November 6, 2006 by Scott Rosenberg

First, my apologies for falling behind on this project — travel and freelance work ate into my writing time. From now on I should be able to keep more to schedule.

This week concludes our Dijkstra marathon. Next week we’ll tackle Knuth’s retort to Dijkstra, “Structured Programming with go to Statements”. The week after, it’s on to Mitch Kapor’s Software Design Manifesto.

Thanks to everyone who has posted comments; you’ve kept some informative and spirited discussions going in each of the previous Code Reads postings, and I, for one, am learning a lot!

Beginning tomorrow afternoon (Tuesday, 11/7), I’ll be at the Web 2.0 Conference, from which, wi-fi willing, I will try to do some live or semi-live coverage. If I can keep my eyes away from the election returns…

Filed Under: Code Reads, Events, Personal

Code Reads #4: Dijkstra’s “Notes on Structured Programming”

November 6, 2006 by Scott Rosenberg

Code ReadsThis is the fourth edition of Code Reads, a weekly discussion of some of the central essays, documents and texts in the history of software. You can go straight to the comments and post something if you like. Here’s the full Code Reads archive.

The art of programming is the art of organizing complexity, of mastering multitude and avoiding its bastard chaos as effectively as possible.”
— Edsger Dijkstra, “Notes on Structured Programming”

“Notes on Structured Programming” (1970) is the third and, for now, final Edsger Dijkstra work this series will look at. The paper fills out the terse observations in “Go To Statement Considered Harmful” and the historical overview of “The Humble Programmer” — and offers some detailed examples of the disciplined sort of approach to programming Dijkstra was advocating at the time.

In his 2001 “What led to ‘Notes on Structured Programming'” Dijkstra recalled that he wrote the original “Notes” while emerging from a depression; he felt that his previous work on ALGOL and other systems had “only been agility exercises” and he now faced tackling “the real problem of How to Do Difficult Things.”

[Read more…]

Filed Under: Code Reads, Dreaming in Code, Software

Code Reads #3: Edsger Dijkstra’s “The Humble Programmer”

October 18, 2006 by Scott Rosenberg

Code ReadsThis is the third edition of Code Reads, a weekly discussion of some of the central essays, documents and texts in the history of software. You can go straight to the comments and post something if you like. Here’s the full Code Reads archive.

This will be a briefer entry than I originally planned. I’ve fallen behind a bit this week! So rather than post about all three essays I mentioned last week, I’m going to confine myself to “The Humble Programmer,” Edsger Dijkstra’s Turing Lecture, delivered in 1972.

In “The Humble Programmer” (text, PDF) Dijkstra offers an overview of the programming universe as he saw it in 1972. In the ’50s and early ’60s, programming pioneers struggled against the “painfully pinching shoe” of inadequate equipment. Then they got the more powerful machines they longed for. “But instead of finding ourselves in the state of eternal bliss of all progamming problems solved,” Dijkstra wrote, “We found ourselves up to our necks in the software crisis!” The problem was that the upward curve of ambition driven by new hardware capacity outran the improvements in software:

As the power of available machines grew by a factor of more than a thousand, society’s ambition to apply these machines grew in proportion, and it was the poor programmer who found his job in this exploded field of tension between ends and means. The increased power of the hardware, together with the perhaps even more dramatic increase in its reliability, made solutions feasible that the programmer had not dared to dream about a few years before. And now, a few years later, he had to dream about them and, even worse, he had to transform such dreams into reality!

From its title to the repetition of phrases like “the poor programmer” to its references to “the intrinsic limitations of the human mind,” the essay presents a chastened vision of the human capacity to create software: the programmer, Dijkstra says, must be “fully aware of the strictly limited size of his own skull.”

[Read more…]

Filed Under: Code Reads, Software

Code Reads progress report and schedule

October 12, 2006 by Scott Rosenberg

I’m very happy with the knowledgeable and far-ranging discussions we’ve been having in the first two Code Reads (The Mythical Man-Month and “Go To Statement Considered Harmful”). The discussion of Dijkstra’s famous essay led us to some other related readings that I’m going to lay out for the next reading (which, like this week’s, will probably post a day late, on Tuesday rather than Monday — because it’s my kids’ birthday this weekend!). This will be a Dijkstra triple header: Notes on Structured Programming, “What led to ‘Notes on Structured Programming'”, and “The Humble Programmer.” Together these papers provide a deeper understanding of the perspective Dijsktra offered in the celebrated “Go To Statement” piece.

Then, the following week (Oct. 23), let’s look at Donald Knuth’s “Structured Programming with go to Statements”. The Knuth is almost certainly way over my head, but I’ll give it a go, and maybe you guys can help me out.

The week after (Oct. 30), let’s change the scene entirely, and look at Mitch Kapor’s Software Design Manifesto, which extends the discussions we’ve been having about the development process (Brooks) and coding discipline (Dijkstra) into the realm of design process.

I’ve added a permanent link in this blog’s sidebar to the Code Reads category archive and also a link to the RSS feed for the category, if you ‘re only interested in the software discussions and not in keeping up with my other topical ravings. I’ll also try to keep a link there to the post that lists the next reading(s).

Thanks to the denizens of Lambda the Ultimate, joel.reddit.com (the Reddit category created for devotees of Joel on Software), and programming.reddit.com for linking here and pointing people to the conversations. Also thanks to these individual bloggers for linking in: Rafe Colburn, Anarchaia, Hacia la Cuarta Generacion del Software, danvk.org, Superficie Reflexiva, Strange Quarks, Honey of an Anklet, and Ralph Johnson (one of the so-called “gang of four” authors of the original Design Patterns book). If I missed you (I’m relying on Technorati), let me know!

As for that book giveaway, here’s my plan: When I have the books in hand, I will award them at random from the list of people who have made what I consider substantive contributions to the discussion (which means nearly everyone so far). Then I’ll email you if I have an email address, or post here if I don’t, to let the winners know.

Filed Under: Code Reads

Code Reads #2: Dijkstra’s “Go To Statement Considered Harmful”

October 10, 2006 by Scott Rosenberg

Code ReadsThis is the second edition of Code Reads, a weekly discussion of some of the central essays, documents and texts in the history of software. You can go straight to the comments and post something if you like. Here’s the full Code Reads archive.

The title of Edsger Dijkstra’s 1968 “Go To Statement Considered Harmful” is among the best-known phrases in the history of programming. Interestingly, the phrasing of the title — which has become so regular a cliche in the field it inspired Eric Meyer to compose the waggish “‘Considered Harmful’ Essays Considered Harmful” — was not Dijkstra’s work at all. As Dijkstra explained it:

Finally a short story for the record. In 1968, the Communications of the ACM published a text of mine under the title “The goto statement considered harmful,” which in later years would be most frequently referenced, regrettably, however, often by authors who had seen no more of it than its title, which became a cornerstone of my fame by becoming a template: we would see all sorts of articles under the title “X considered harmful” for almost any X, including one titled “Dijkstra considered harmful.” But what had happened? I had submitted a paper under the title “A case against the goto statement”, which, in order to speed up its publication, the editor had changed into a “letter to the Editor”, and in the process he had given it a new title of his own invention! The editor was Niklaus Wirth.

How did Wirth come up with the odd phrase? My hunch is: some combination of English-as-a-second-language (though, since Wirth got his PhD here at Berkeley, that may be completely wrong) combined with the essential trait of radical concision drummed into the heads of programmers of that era. Fewer words! Fewer characters! Less space in memory!

[Read more…]

Filed Under: Code Reads, Software

Code Reads notes

October 9, 2006 by Scott Rosenberg

Thanks to the good folks at Lambda the Ultimate, a programming-languages blog that I have subscribed to for several years, we’re getting a little more of a discussion going on The Mythical Man-Month. Several people have noted that few of us have the time to read a book a week for a discussion group like this. That would certainly include me (if I hadn’t already read a lot of the books already).

My plan for Code Reads has always been to mix up longer essays and books with shorter works. This week’s reading is Edsger Dijsktra’s “Go To Statement Considered Harmful,” which really isn’t long at all. I’ll post my thoughts tomorrow — I’m running just slightly behind this week — and we’ll see how it goes.

Over the next month, as we build a little more momentum here, I will try to post a longer schedule of topics so there’s a little chance to read more in advance — or, if you see a half-dozen topics but only one in particular interests you, you can cherry-pick it.

Filed Under: Code Reads

Free books to Code Reads contributors

October 3, 2006 by Scott Rosenberg

OK, the response to my invitation to a discussion of The Mythical Man-Month hasn’t been…overwhelming.

Maybe nobody’s read the book. Or those that have done so have nothing to say about it. Or I said too much myself and nobody felt like adding anything. Or everyone’s too busy wondering when Denny Hastert’s going to quit. Or everyone’s too busy writing code to actually stop and think much about writing code. Or everyone’s too busy, period. Or I just haven’t gotten that Slashdot or Digg link yet.

I’m not worried — I figured this Code Reads thing would take time to get rolling.

But I do have a little incentive to offer: Thanks to the kindness of Gary Cornell, the publisher of APress, I’ve got five copies of Joel Spolsky’s excellent The Best Software Writing I to give away to Code Reads participants.

This great collection has 300 pages of entertaining and incisive writing by people like Clay Shirky, Eric Sink, Michael “Rands” Lopp, Paul Ford, Paul Graham, John Gruber, Cory Doctorow, Adam Bosworth, Raymond Chen, danah boyd, Aaron Swartz and many others. Each one of these pieces is worth a discussion in its own right. (Spolsky’s introduction and the full contents list is here.)

I’ll award these books at my discretion to contributors of value — substantive or simply diverting — to Code Reads discussions.

If The Mythical Man-Month didn’t ring your bell, next Monday I’ll be posting something about Edsger Dijkstra’s famous 1968 paper, “Go To Statement Considered Harmful.” Among other things, it has the virtue of being about 1/100th the length of The Mythical Man-Month.
[tags]code reads, best software writing, mythical man month, go to statement considered harmful[/tags]

Filed Under: Code Reads, Software

Code Reads #1: The Mythical Man-Month

October 2, 2006 by Scott Rosenberg

Code ReadsThis is the inaugural edition of Code Reads, a weekly discussion of some of the central essays, documents and texts in the history of software. This week we’re talking about Frederick Brooks’s The Mythical Man-Month. (OK, let’s be honest: I’m talking about it. I’m hoping you, or you, or you, may want to, as well! If you don’t want to read my essay, you can just go straight to the comments and post something.)

Frederick Brooks’s The Mythical Man-Month came out in 1975, and I first heard its title later that decade. I’d already been a teenage programmer of sorts (of games in BASIC) for a few years, but I knew nothing of the world of large software projects that Brooks’ work addressed. I did know that the phrase “mythical man-month” grabbed my interest. It sounded less like the management-science term it was, more like a description of some prehistoric beast, heaving itself out of the primordial swamp to lumber across a desolate landscape.

Transmuting dry corporate-speak into evocative imagery? That was some trick.

The Mythical Man-MonthWhen I finally did read Brooks’s book, more than two decades later, there, on its cover, were those beasts — struggling to pull their limbs free of the tar pit that served as Brooks’s starting metaphor for the awful dilemmas of software-project scheduling. By that time, I’d become more familiar with the sort of work Brooks’s book addressed. I’d knocked my head more than once against the wall of software development. And I found, as so many readers had before me, that this quarter-century old book anticipated and analyzed most of the problems I’d encountered — and even offered some useful advice on how to avoid them.
[Read more…]

Filed Under: Code Reads, Software

Announcing Code Reads — a weekly reading and discussion about making software

September 26, 2006 by Scott Rosenberg

Code ReadsDuring the years I spent researching Dreaming in Code, I accumulated a veritable mountain of reading material on the topic of software development, the history of programming, project management and so on. (I even read much, though certainly not all, of it!) There is, plainly, a core set of books, documents and texts that trace the evolution of this subject; I also gathered some unusual obscurities and overlooked offshoots.

Only a small fraction of this material made its way into Dreaming in Code itself, which is a narrative tale of the ups and downs of one project, set in the context of the longer history of the field. I’ve been trying to figure out a good way to share my discoveries, spark some interesting discussion and contribute a lasting resource to the Web based on the work I’ve already done and the reading I continue to do.

Here’s my plan: Every week I’m going to announce a topic — usually, a text or document, in many cases easily accessible online; a week later, I’ll post some thoughts, notes and ideas about the topic, and open the floor in comments for you to throw your two cents in. If all goes well, together we’ll build a handy annotated reading list for curious developers and interested outsiders — and maybe have some fun along the way.

I’m calling this impromptu, informal reading group Code Reads — mostly because we’re reading about code and coding, and also because I like the idea that the phrase induces the slightest hesitation in the reader’s mind (How do you pronounce it — like “code reeds” or “code reds”?), and I’m mischievously pleased to invoke that kind of ambiguity in a conversation about a field that abhors ambiguity.

So: Join me for Code Reads. Here, every Monday.

I’m planning to kick things off next week with some observations about Frederick Brooks’s The Mythical Man-Month — the book that, for me and I think many other students of this subject, really started it all. You’re invited. You don’t have to be a programmer (I’m not one, myself, though I’ve played at being one in previous phases of my life). You just have to be interested in the question that I ask in Dreaming in Code: Why is good software still so hard to make?

Joel Spolsky says that most programmers don’t read much at all: “The majority of developers don’t read books about software development, they don’t read Web sites about software development, they don’t even read Slashdot.”

He might be right. Then again, in my work I’ve encountered many, many developers who are fanatically curious about everything under the sun, emphatically including the history and nature of their own field. I’m thinking some of them might enjoy having this conversation with one another, and with the rest of us.
[tags]dreaming in code, programming, software development[/tags]

Filed Under: Code Reads, Software

« Previous Page