It can't be that complicated to do a search for places a function is called? That's O(n lg n) on the size of the code base at best?

I don't agree with letting code be more verbose to help the compiler. Isn't the point of programming languages to take needless complexity from the programmer? If we wanted to tell the computer everything, we'd be using assembly language.

I like this quote from the author of the Ruby language:

Often people, especially computer engineers, focus on the machines. They think, "By doing this, the machine will run faster. By doing this, the machine will run more effectively. By doing this, the machine will something something something." They are focusing on machines. But in fact we need to focus on humans, on how humans care about doing programming or operating the application of the machines. We are the masters. They are the slaves. --Yukihiro Matsumoto

I've done Java for awhile professionally. But now after doing Ruby for awhile, I've really started to understand this, especially why statically typed OO make programming far more complicated then it needs to be. The main thing is how much effort the team spends on pointless taxonomy, that's pretty much eliminated with Ruby. (In fact, I would say assembly is even better on this front. Static OO languages add complexity that simply doesn't even exist at the CPU level!) I'd say overall, productivity is just much better, especially the more people join a project. Less people arguing endlessly over how an object model should look.

It would be a shame if we still used static languages in the mainstream 20, 30 years from now.