The languages I enjoy are: Assembly(of any flavor, but especially 6502) It is not the easiest language or the most expressive, but it does give you the most control. I am a strong proponent of everyone learning to manage memory on their own. More on that in a future article. C See above about memory management and dealing with constraints. C++ Although I have some issues with the way the objectified C in C++(Objective-C did it better IMO) the language has some beautiful ways of doing things. It also is really annoying to work with class pointers vs the struct pointers of C. FORTRAN Yes. The language is old. It has some quirks. It is also amazing at numerical programming(which is quite important in the world of Physics). It is still used to benchmark computers to this day. When doing purely numerical work, it is by far the best. Doing non-numerical work, yeah I wouldn't touch it. Python I hate this language syntactically, but I love the python environment, and the support this language has received, especially in the scientific world. Most of my syntax complaints I can just get over since the language is also very expressive, which far outweighs the issues I have with it syntactially Objective-C I just started learning this language for work, and I am amazed at how much I enjoy it. The Smalltalk-like messaging system is just wonderful, once you learn it. Languages I do not enjoy: Java Making EVERYTHING(other than some primitives, but even then sort of kind of) an object is just annoying. The language is so verbose that my line lengths bloat out to ridiculous size. And I'm not the biggest fan of GC and the complete removal of memory management in a language that's trying to look like C/C++. Yeah, Python doesn't have memory management either, but it's also a more expressive and enjoyable language than Java. Java is honestly probably the only language I have done extensive work in that I really do not enjoy. Which is a bummer, because it is built on the JVM which is a great piece of technology.