On Feb 21, 2008, at 5:08 PM, Bill Kelly wrote:

> If your prior OOP experience has been solely with watered-down
> OOP languages like C++ or Java, then, my condolences.  But static
> typing is not required for "real-life" development.  :)

I second the condolences. I don't know what background, specifically,  
rule.rule comes from but I come from a C/C++ one (and yes, even  
Smalltalk). What people who've seen (ice cream|hotdogs) made is that  
if you knew what went into them you'd never eat them. Well, I feel the  
same about C++. C was a perfectly fine language, and ISO C was even  
ok, although not as nice because it was beginning to acquire syntactic  
angst.

The hoop-jumping required to create a C++ front-end and runtime is  
absolutely nuts. Remember, no matter how well intentioned the  
implementation, object orientation is grafted onto C to form C++. It  
was not a guiding principle in the underlying language design. Java,  
bless its heart, is so C++ influenced that it's hard to love and C# is  
almost exactly the same.

Breakaway languages that are both object oriented and dynamic are  
coming into the mainstream in Python and Ruby. In the "hmmmm, let's  
wait and see" category for me are Haskell and Erlang, although large  
projects already entrust their success to these languages. Lua may be  
considered out of the mainstream, yet I believe the UI for Adobe  
Lightroom was written using it.

The moral of the story is that the number of languages in use today is  
expanding and dynamic typing does not appear to be holding anybody  
back. It didn't hold back a generation of Perl programmers or PHP  
programmers and it's unlikely to hold back Ruby programmers. Looked at  
another way: If Ruby can make you more productive, make your code more  
readable and concise at the same time(!), and can be tested  
thoroughly, then programmers have more time to fix edge case bugs that  
one might attribute to incorrect type inferencing.

Another $.02 from my piggy-bank.