UPDATE 2008-06-03:
Soon Hui has a great rebuttal to the .Net Answers article where he calls for better teaching of OOP. I would also add that on-the-job mentoring can be improved.
What do Legos have in common with Object Oriented Programming? According to
an article on .Net Answers, those who are at home with Legos are most likely to fully embrace Object Oriented Programming principles. There the author defines three categories for programming languages:- Object Oriented (Legos, tinker toys, woodworking, etc.)
- Function Oriented (Geometry)
- Math Oriented (Algebra)
- Object Oriented--C++, C#, Java, VB.NET
- Function Oriented--C, Perl, PHP
- Math Oriented--Haskel, Scheme
- Object-Function Hybrid--JavaScript
- Object-Math Hybrid--Ruby
As far as the larger question posed by the .Net Answers, I disagree that we should push languages that make programmers feel at home.
I believe that we must always push forward with new programming concepts to make progress. Sitting pretty with something that works in "the real world" to me means catering to lazyiness.
There is no one-true way: Functions, Math, Objects, Aspects, etc. are not the end all of programming. Check out Wikipedia's list of programming paradigms. Check out the E programming language with a mind for asynchronous p2p operations including the Eventual Operator (thus the name E) which allows making intuitive synchronous programs in an asynchronous world.
Wikipedia has a more comprehensive list of programming languages and their categories.
