May 92 - Why OODLs are Good for You
Why OODLs are Good for You
Jeffrey W Stulin
Jeffrey W Stulin
Computer Software Consultants
AppleLink: D1104
End of a Friendship?
During a recent visit to Florida, while staying with friends (a pair of authors), I had a frustrating, ninety minute, one a.m. argument about programming languages.
My friend Bob has had no formal computer education, yet he was able to create a sophisticated poker playing program written totally in HyperTalk. He proudly demonstrated the program running on his new Powerbook 170 (Yes, a 170. He is a best-selling author....)
After the demonstration we discussed Bob's plans for continuing his computer self-education. He wanted to know why he should learn another computer language. After all couldn't you program anything using HyperTalk?
I went into my usual b/s about Turing Machines, and yes you could theoretically use HyperTalk for all programming, but that HyperTalk was impractical for many problems.
"Like what?" he asked innocently.
During the next hour my blood pressure rose to 200 over 100; we wasted a tree trying to outline examples and counter examples; Bob went through half a bottle of scotch; both wives fell asleep in their comfy chairs (clearly not software ideologues); and I ranted eloquently about both practical and obscure issues in software development. But Bob just sat there shaking his head and repeating:
"Couldn't I just write a HyperTalk function to do that?"
What really annoyed me was that he was right: you can do just about anything with a HyperTalk function. At least anything that Bob could conceive of, since he has only had the HyperTalk language to express his programming thoughts.
Bob and I lacked a common vocabulary to talk about software concepts beyond his experience. Arrays, objects, structures, file management, and typed variables are a mystery to him.
End of my credibility in MADA?
This is the same problem I have in convincing those of you without significant dynamic language experience that OODLs-Object-Oriented Dynamic Languages such as Macintosh Common Lisp (MCL) and Smalltalk-are a good idea. We don't have a common vocabulary for communication.
Here is a statement that will get me into trouble. Putting aside the issue of runtime performance I claim that:
The set of interesting problems which can be reasonably explored and expressed using an object oriented dynamic language such as MCL is, while not a proper superset, much larger than the set which can be reasonably explored and expressed by a static language such as C++.
By "explored and expressed" I mean that, when faced with a problem, a programmer must first figure out how to solve it and then express the solution using a programming language.
Their ability to explore and express a large set of problems is the reason that dynamic languages have been the mainstay of Artificial Intelligence, which has tried to solve the "hardest" problems.
I can see that many of you are shaking your head in skepticism. After all, if OODLs are so good, why doesn't everybody use them? (You may also want to ask yourself why object-oriented programming didn't catch on in the 1960's when it was invented.)
The traditional answer (there are others, but this is the big one) is that their runtime performance characteristics are poor. They are slow, they use lots of memory, and they are occasionally interrupted by garbage collection. Which leads me to my second claim:
Advances in hardware and compiler technology will soon overcome the traditional runtime performance problems of OODLs.
In my yet-to-be-published third MCL article, I will note that figuring out how to squeeze performance out of MCL is not easy, but once done (or, in my case, once told how by the MCL development team), performance, as an issue, almost disappears.
Based on these claims, I draw a conclusion:
Sometime around the end of this decade, OODLs will be the mainstream tools used for developing software applications.
Don't take my word for it, I'm just some fool babbling over the link-waves. You can believe Larry Tesler, whose keynote address at the MADA conference said much the same thing. In fact, you don't even have to believe me about what Larry said; my understanding is that his speech is included on the conference CD. Watch him for yourself.
Is there Help for bob?
You may have noticed that this article is filled with philosophical hot air and is disappointingly thin on evidence, just like my argument with Bob. I admit my sins, ask forgiveness, and make a promise. If you, the MADA community, show an interest in OODLs, then I (and others) will write a series of articles exploring aspects of OODLs which will prove the claims stated here. Topics will include: What makes dynamic languages so expressive, dynamically vs. statically typed variables, automatic memory management, runtime performance of dynamic languages, etc. etc. And I will make Bob read them all.
I believe OODLs are in our professional future, that we can have a say in the direction of OODL development, and that programming with OODLs is more productive and pleasant than is programming using the current crop of static languages. That is why I am a co-founder of the new OODL/MCL SIG.
Interested? Join the OODL/MCL SIG and let me know.