I have been interviewed on how to become a (real) computer scientist…
Education
On living software…
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!
Four books I have bought in India
While visiting Connaught Place and the various train stations and airports of India, I bought four books, three of which were in my Amazon Wishlist (so I am really happy)
Here they are:
I bought the Dragon Book as it is a classic on compilers published some twenty years ago. I suppose you all know my passion for programming languages. So it’s only natural that I want to know more about the process of compilation (and also interpretation). To be frank, I really want to know a lot more and I believe that the best way to do that is to teach compilers to undergraduate students. So beware kids, I’m coming :-)
Programming Language Pragmatics is now considered to be the successor of the Dragon Book. I managed to get the second edition which was published only late this year. Quoting the blurb on the back of the book, Both students and expert programmers alike will benefit from its comprehensive exploration of the fundamental concepts underlying the most important programming languages. I’ve just started reading it and I am still trying to understand lexical and semantic analysis. But I must say that I find the book very readable.
Aha! This is a book that I was really interested in. And not only because of the girl ;-) In my opinion, the book is a comic book on Design Patterns. And it is great! I’ve just started reading it and I’ve already learnt a lot about the Strategy and Observer patterns (even though I own and I’ve read the GoF book). I’m dreaming of a day when we could prescribe this book as a textbook for OO classes…
Now I know you must be telling yourself that I’m getting old and the next book I’ll buy will be that crap men from Mars and women from Venus thing. But you can’t be further from the truth. This book is really a fantastic book. I’ve been longing to get it for one year now (Yep! It was on my wishlist). Of course, I have friends and I know how to influence people (ahem…). But sometimes I am too direct or cynical or even mean. This book will help me be nicer to others especially when I really want them to do something that I’ve in mind. I’ll tell you if Dale Carnegie’s method works or not. As an appetiser, the first principle is “Don’t criticise!”. So I’ll really have to change the way I deal with people after all :-)
My bookshelf is really getting nicer and nicer!
(Photo courtesy of Watanabe Kanato)