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.