I’ve just come across Steve Yegge’s latest rant on the fact that most software is crap!
He then names some software which are not crap and tries to identify which caracteristics they share and…… BANG! They are all living!!!
According to Steve,
“Living software has a command shell, since you need a way to talk to it like a grown-up. It has an extension language, since you need a way to help it grow. It has an advice system, since you need a way to train and tailor it. It has a niche, since it needs users in order to thrive. It has a plug-in architecture, so you can dress it up for your party. And it is self-aware to the maximum extent possible given the external performance constraints. These features must be seamlessly and elegantly integrated, each subsystem implemented with the same care and attention to detail as the system as a whole.”
The software becomes a living entity because it does not need to be rebooted. The software can be customised, enhanced, corrected, changed (whatever…) at runtime.
Philosophically, I’m 100% with him… but, technically speaking, building a living software is a big challenge.
And how am I going to teach this to my poor students?
An update: Keith Braithwaite has his own opinion on this and, for him, the essential property is that “[i]t’s about being [able] to interact with computational objects (“object” in the broadest possible sense) in the same way you interact with physical objects.” Essentially, all the “objects” in the software become as accessible and tweakable as any Smalltalk or Squeak object.
Now I know how I’m going to teach my students how to build living software: I’ll let them play with Squeak!
keithb says
Hi Avinash,
Glad you found my posting thought provoking. Good luck with using Squeak in your courses (but you know, Smalltalk isn’t quite as alive as it could be: soften them up with Squeak then hit them with some Self ;)
Keith
curiousEngine says
Is it worthwhile to learn D? Quote from http://www.tiobe.com/:
It is confronting to review my winner/loser forecasts of last year. I claimed last year that C#, Java, Ruby, Python and PHP (in that order) would be the winners of 2006. Mmmmm, Ruby was a good guess, but C# didn’t really replace C++ on the Windows platform in 2006 as I expected. PHP has lost lots of its popularity due to its insecurities instead of gaining popularity. Why Java dropped that much is unclear to me. My list of losers contained Perl, C, C++, and Visual Basic. That was better. Now for 2007: my winners will be C# (migration from C++ and Visual Basic, I see it all around me) and the D language. Everybody who knows the D language is very enthousiastic about it and it has the potential to become a real enterprise language. Perl and Delphi will become the losers of 2007 in my opinion. This is all about the availability of sufficient and more modern alternatives.
avinash says
Hi curiousEngine,
I suppose, being curious, you’ll have no problem learning D :-)