I code in Java, Python, Ruby, C++, and Haskell. Java seems painful to code in at first glance given its verbosity (cmp Python / Ruby) and lack of power (cmp C++). However, combined with Lombok, Java becomes much easier to code in.
Python: Python is my goto language for random hacks. If I want to play around with math, I usually use Python. For random coding challenges: Python. This is just because of Python's ease of use and obvious ways of doing things.
Ruby: I actually like Ruby more than Python because it reads in plain English descriptions of its behaviour.
C++: I learned it over the summer one summer, and I didn't enjoy it much. I played around in the language, and now feel that I am a reasonable C++ developer. My university tells the students who took the first programming class that they are ready to get a job as a "C++ developer", but I fail to see how that works. They don't even teach smart pointers!
Haskell: Haskell was a language I dabbled in briefly, but I'm perfectly willing to dabble more in it. Functional programming is incredibly fun. It was really easy to come up with the algorithm for the problems I was solving, but I struggled with Haskell's type system. It appears that the type system is your biggest friend, and your biggest enemy. Still working on it.
On my list to learn:
- C#. From what I hear, C# is close to Java but with much more. C# also seems close to C++. What? Clearly I just need to learn it and find out what's going on here.
- Clojure. Clojure runs on the JVM and has full access to Java's libraries. However, the thing that appeals the most to me about Clojure is its approach to parallelism. I foresee the future of programming to require massive parallelism, which a language like Clojure can do automagically for you.
Random esoteric languages I can code in:
- Befunge (93 / 98)
Personal favorites of my Q/A