Alan Kay on OOP
Some update before I move on to the main post:
I’m an official team member of the 2010 NYU iGEM team! I’ve learned a ton of biology from Russ, and worked on some cool stuff like visualizing and simulating the Immunoyeast system using Processing language. I’m also working on having a touch-screen installation for the Jamboree, so don’t forget to check it out if you plan on being there.
Genspace is up and running, and it is totally awesome. We collaborated with the BioBus at the World Maker Faire and won the Maker Editor’s Award, which is apparently a kind-of-big deal. I did about 40 DNA extraction, purification, PCR and restriction digest myself, teaching people about basic lab processes and a bit of theory behind genotyping. There were lots of screaming children and spitting involved, but it was totally worth it. The target of the exercise was TASR38 coding SNP, and I should have a detailed post of the whole process up in a few weeks.
There are tons of more stuff I should be writing about, and maybe I’ll find enough time to do that when the iGEM is over (although I’m already thinking about how awesome 2011 iGEM can be).
Back to the main post: I’ve been reading stuff written by Alan Kay again. I think it’s safe to say that he’s one of my all-time heroes by now. There’s a cool book about him and his work called Points of View available for free on the net. It’s not directly relevant to biology or physics, but if you’re interested in education, information abstraction and history it will be a fascinating read.
It’s not that I’m actively seeking out stuff about him. I just seem to run into them whenever I do research for my own projects, whether it be methods for abstracting complex sciences for public consumption or coming up with useful programming tools for beginner’s bioinformatics curriculum.
I was reading up a bit more on structure of Ruby and its use in bioinformatics. I eventually ran into the legendary Ruby hacker _why and his Shoes and Hackety Hack toolkits, which mysteriously led me to another one of Alan Kay’s letters, written in 1998 after OOPSLA. The piece itself isn’t directly relevant to biology. He just talks about how most people don’t really understand OOP in computer sciences and how it’s not really about objects but dynamic messages passed between objects. Here’s an excerpt from the letter I found interesting.
“The key in making great and growable systems is much more to design how its modules communicate rather than what their internal properties and behaviors should be.”
Alan Kay had biology background before he went into computer science and he explicitly stated that his most well-known achievement, OOP model and Smalltalk systems are inspired by biological processes… Which is one of the reasons why I tried to use Squeak Smalltalk system for earlier iteration of my synthetic biology curriculum for high school children (something I’m still working on and need a ton of help with). Considering that earlier versions of synthetic biology in form of BioBrick system is based on core engineering principles I can’t help but to think about possibility of re-applying Alan Kay’s OOP model back to biological systems.
BioBricks based synthetic biology strongly resembles ‘object’-oriented OOP paradigm, where people build parts with unique internal characteristics and then link them together into a whole system. Entire system is focused on functionality of the individual parts with almost no care taken to characterize and document how different parts interact with each other. It should be interesting to imagine a different type of synthetic biology where the biologist considers how different segments of DNA (or perhaps the system should be built on top of larger scale composite parts) modules communicate and work with each other, and how to coerce them into forming larger systems. Systems built on top of message passing rather than minute details of the molecular system.
Sigh, the more I learn about things the more I have to study.
Now you might be wondering why anyone would ever want to worry about implementing true OOP like paradigm or message based system building in biological systems. The answer is simple. All these programming paradigms were created to handle complexity. When we consider that existing paradigm of synthetic biology borrows heavily from that created for engineering and programming computers (one of the prominent figures of synthetic biology, for example, is Tom Knight, of the original MIT lisp hacker fame), ability to handle complexity within engineered framework becomes a fundamentally important issue.
One of the main difference between silicon based computation and that within in-vivo environment is scalability. Conventional programming languages are not very dynamic, and are terrible at scaling up compared to biological systems. If we are to bring any sort of computational/engineering approach to biology we need to address the issue of scalability that works in orders of magnitude difference from initial state. Biological systems do not go through processor bottleneck to transition from one state to another, and they have billions of processes operating in parallel. Engineering and programming approached as we know them will not be very useful for long without efforts to address these issues.