Thursday, January 25, 2007

Crichton and Programming

My good friend Brij discussed earlier a fantastic piece of fiction - Dune by Frank Herbert here. My cousin Sanjay first lent me the book - although I had heard much about it before. Idle reading these days (being unemployed and all) involved finishing Prey by Michael Crichton. The connection between Prey and Dune being that they're both categorized usually as science fiction (i.e. sci-fi). And you're right - that connection I made was the result of some serious analytical skills. I do understand though that sci-fi is generally classified into hard and soft. With that in mind, Dune's probably on the soft side, while Prey's probably on the hard side.

I know I wasn't all that excited about wanting to read Prey. Crichton's last book that I read i.e. Timeline was a good thriller incorporating quantum science in interesting ways, but pretty much typical run-of-the-mill in terms of writing quality. I decided to give Prey a read anyways however, since I am prone to rushes of magnanimity and Crichton's been begging me for a while. I won't go into the book summary and all that - you'll find a much more detailed account here. But the story deals with the confluence of nanotechnology, genetics and computer science, and the implications of it all to the future of mankind. Food for thought indeed!

While some of the notions and ideas in the book are far fetched given that Crichton's works are usually based on current ongoing or proposed scientific research, there were a few that I did find relevant. Especially those about computer programming. In the book, programmers of the Silicon Valley regularly indulge in designing and developing virtual, autonomous agents to work in distributed computing scenarios. Also, most programmers know how to power these agents with evolutionary or genetic algorithms that allow them to combine with other agents and come up with efficient solutions for a broad range of complex problems. Just like people getting together with other people to solve problems. (Or stone other people - probably the same as solving problems actually!)

It is my understanding, based on what is normally taught in programming that such programming is still far from the norm in the Silicon Valley or any valley. Most programmers are still rooted to using algorithms for which upper bounds and lower bounds, both in terms of memory use and time are known or can be evaluated. Such algorithms are essential for commercial software development right from analyzing the cost-benefit of program code at the lowest level, up to the setting of milestones, deadlines, etc. up at the higher, project management levels.

But, while such programming is still pretty essential, the truth is - the theory and practical applications of genetic algorithms may soon become important for all programmers to study. Besides off-the-shelf resusable code or code libraries are used extensively for known problems. Why keep re-inventing the wheel? More importantly, complex problems are solved better using a combination of traditional as well as heuristic techniques just as humans tend to problem solve.

Off-late, several computer science as well as bio-informatics graduate programs across the world do offer courses on genetic algorithms and such. And while programmers armed with this knowledge may not quite be the norm in Silicon Valley, not quite as Crichton potrays, they will probably become necessary in the not-to-distant future.

A mildly compelling page turner at best, Prey however is nowhere close to Crichton's best. I do think that this phase of reading paperback quickies may not last too long.

2 comments:

raoul said...

Mark my words, cellular automata are going to rule the world.

Sarat said...

Raoul, I hear ya!