Archive
Evolution in Action
It turns out that a human lifetime may in fact be long enough to see a new species emerge. Cool.
Why Am I Not Surprised…
…that Lego would be a leader in augmented reality?
When I Said “The Last Twenty Years…”
Last week, in response to Google’s announcement of a new programming language called Go, I said:
I’m underwhelmed: it’s as if the last 20 years of programming language research hadn’t happened.
Turns out I was being generous: read this post from start to finish, and you’ll see what I mean.
So what should a new programming language do to get my attention? First, just as applications should be designed for testability, languages should be too. That means choosing constructs to make the lives of static and dynamic analysis tools better. Building such tools after the fact is like trying to add security to an app after it has been deployed; I think we’d do better to treat the capabilities of today’s leading-edge program analysis tools as hard (but not unbreakable) constraints on what’s allowed to go into a language, and see how far it gets us. I suspect this will push us toward strongly typed and mostly functional languages.
Second, user testing of language features. The folks at CWI did this with ABC (a precursor of Python); Steven Clarke has done excellent work on API usability at Microsoft (see for example this DDJ article from 2004), and there’s lots of other prior art — hell, I did a little myself nine years ago for Python (see these messages for details). I’m not suggesting design by committee [1], but checking to see how comprehensible or surprising feature XYZ is going to be to the average programmer before it’s put into the language just seems like common sense. I suspect this will push us away from pure functional languages: monads are just plain hard, and while purely functional data structures are possible, they’re hardly intuitive.
Third, a new language should explicitly be designed to make the expression of common design patterns as straightforward as possible. Languages (of all kinds, not just programming languages) evolve by formalizing the common usages of the day: idiomatic uses of goto statements become for loops, structs with function pointers become objects, and so on. There’s a tremendous literature on design patterns at several scales; why not treat them as something akin to use cases?
Of course it’s never too late — if someone has the time and energy, they could apply these three criteria to Go (or any other language) right now. Hm… sounds like an interesting thesis topic…
[1] Which gets an unfairly bad rap — both the American Constitution and the King James version of the Bible were produced by committees.
Speaking at CUSEC 2010
As they just announced on their blog, I’ll be speaking at CUSEC 2010 in Montreal in January on evidence-based software engineering (which is a lot more fun than you’d guess from the title). Hope to see some of you there.
Bend It ‘Til It Breaks
Want to know how strong a piece of steel is? Bend it ’til it breaks. Want to know how usable a programming system is? Make a few deliberate mistakes and see how comprehensible the error messages are. It’s not the only approach, but it’s the one Zef Hemel took with Ruby on Rails. In his original post, he took a critical look at how helpful Rails is when a developer mistypes something. A lot of people misunderstood what he was doing, which prompted a follow-up post; since then, he has tried the same approach with JBoss Seam and Scala Lift. I think this is pretty cool — so cool, in fact, that I’m wondering if there’s a thesis topic in there somewhere…
Two More Gov 2.0 Links
- The Toronto Star‘s Map of the Week shows where in Toronto the Canadian casualties of WWI lived. Humbling.
- The Sunlight Foundation‘s goal is greater transparency in government. Laudable, but I think the inverse of Gilmore’s Rule will hold as it always has: criminality will interpret openness as a threat and route around it. Still, a Red Queen’s Race is better than outright defeat.
The Definition of “Exotic”
Someone other than Oscar Wilde once defined “exotic” as “anywhere that people poorer than us can’t afford to go”. The same cynicism fits techno trends as well. Take, for example, this recent post by Marc Drapeau about last Friday’s Audience Conference in New York. No laptops, no cellphones, no twittering—in short, none of the things that cool people were calling cool five years ago. Why? Because if everyone’s doing it, it can’t be cool. Next up: a Wired article about the rebirth of attention, followed by a new book from Chris Anderson…
WWTD?
The saddest part of Terry Pratchett’s Alzheimer’s is, well, the Alzheimer’s. The second saddest is that no one else writing in English today would be able to use tree-eating crabs in a story quite as deftly as he could. Food falls down from the sky without anyone (or any crab) knowing where it comes from? Just think where he could go from there…

Recent Comments