There are basically 5 languages that I really like. For several reasons. 2 of them are proprietary, while 3 are open-source. 2 are statically typed, and 3 are dynamically typed. All are fully object-oriented. 3 can be used for web development, 4 for desktop apps. And none is Java.
My preferred compiled language? C++. You get the full-power of many operating systems, from the same source code, without compromises; OK, it takes time to get used to the lack of memory management, but it is highly portable, extremely fast, and there are a couple of extremely good libraries around the corner that fully justify getting into it: POCO, Juce, Boost, wxWidgets, Qt, CppUnit, Doxygen… Once you get some habits and good practices you can very quickly put some complex code together. What are the best books you can read about it? Stroustrup’s to start, Meyer’s to go deeper, and O’Reilly’s to go faster.
My preferred scripting language? Ruby. As someone said, “elegant as Smalltalk, simple as Python, and pragmatic as Perl”. A pleasure to use; you can very quickly create complex applications in just a couple of lines of code. And with Rails, well, I got the impression that finally someone got web development right. It’s got the best of PHP, the best of WebObjects, the best of Ruby.
My preferred Apple language? Objective-C. A mix between Smalltalk and C? A static scripting language? Or a dynamic language with a compiler? Objective-C is OOP as it should have always been done. And Cocoa is in my opinion the most comprehensive, extensible, advanced and stable foundation ever created for application development.
My preferred Microsoft language? C#. Even if I left my Microsoftie life behind, I think that .NET and C# are probably the best products ever done by this company. Ever. .NET is a strong and complete foundation, and it does not surprise me that companies choose it for their Windows-based development. There’s simply no better way to do Windows development. I said Windows: for web development, I think that ASP.NET sucks. Rails rules.