Often times when you ask a programmer about what he works with, he'll tell you that he has to code in X for work and doesn't like it, but uses Y for personal projects because Y is so much more handy and appealing. Sometimes you'll get an answer that X and Y are the same. Rarely you'll get the answer that there isn't really a preference, but there's just one that is used most often, for one reason or another. Some people even get very enthusiastic up until extremely defensive about their language of choice, something I'd like to avoid doing. Regardless, I've been asked to state my personal preference and opinion on programming languages of today a while back and I'm here to answer that query.
The reason why I feel uncomfortable with answering this question is because I don't have a large knowledge of many languages and I don't know much about the inner workings of languages (albeit I am studying this). I also feel uncomfortable because I know this is a pretty touchy subject for many and people will easily get into huge rants about basically nothing and I just hate such rants because they make me feel guilty, bored and annoyed all at the same time. I am also quite sure that I will look back on this in ~5 years of time just to realize what a stupid douche I was at the time. Needless to say, I am looking forward to that.
Now, I'm going to go through some of the major languages one by one and talk about what I like and dislike about them. I'll try to explain my reasons as good as I can, but there'll be a number of things I'm simply saying out of personal preference or ignorance.
h{Java} Java is the first “real” language I learned. Most of my projects are written in it and it's probably the language I know best. I don't love java by any means though, there's quite a lot of annoying things about it and its required verbosity is often quite tedious, as things just take a long time to write. It was an excellent language to begin with and I still like it. It has this ability of making almost any code snippet easy to read, or at least very similar in style. This makes looking up code examples, tutorials, documentations and so on very handy and comfortable. I generally feel that the javadoc is one of its greatest strengths, even more so when included in an IDE. I'm especially looking forward to Java 8, which will finally include a direly needed approach to functional programming. That alone should remove quite a bunch of pet peeves I have with the language. Still, there will always remain some things that are just annoying due to the inherent design of the language. I'm not sure if these issues (primitive/Primitive, forced Exception declaration, etc) will ever be handled.
h{C (and C++)} I have to admit right off the bat that I've never used C and only touched C++ a few times. I am still intending to learn C one day, as I feel that I'm in dire need of experience with a more low-level language. From what I read and heard, C is the go-to language when it comes to speed and control. I am personally quite glad that I don't have to deal with anything related to memory in the languages I use, but I can also see how having control over it and other more core aspects can greatly enhance performance. While I intend to learn C, I am fairly sure that I do not want to touch C++ again. The experience I did have with it wasn't a pleasant one (although that might also be attributed to my relative youth at the time) and I generally don't see any reason in learning C++. Reading more and more about how people I respect dislike C++ for a large number of reasons doesn't exactly help this either. Either way, I acknowledge Cs usefulness and will one day learn to understand it as well.
h{PHP} Oh PHP, what hath thou doneth. I think PHP can best be compared to a psychopath. It's nice at first, but suddenly, it gets completely unstable and attempts to murder you. Or at least that's the impression I sometimes get from it. PHP is a great language if you want to whip out a small and quick website. It only becomes a problem if you want to extend this to something larger and want to build big projects with it. I have largely tried to avoid the ugly aspects of PHP by not doing many exotic things and trying to keep it very simple, but even then the hard edges of it are going to give you sore spots. Most of all, the core API is just extremely inconsistent, which means you'll look up the documentation time and time again, just to make sure you correctly remembered the order of the arguments, the return values or even the function name. I have never before encountered a standard library that is so varied in style. It almost seems to me that they never cared to declare a style specification for writing PHP and nobody ever cared to clean the mess up either. If I hadn't already written so much in PHP and did have somewhat of a clue about Java website programming, I'd gladly port everything over. But as it stands, I'm stuck with PHP because I'm tired of rewriting my site from scratch and I still somehow manage to keep PHP within the “good enough” bounds.
h{Lisp} Lisp is a very interesting beast to me. Its features are very appealing and I'm really eager to practice more with it. It'll certainly take me a long time to get used to it though because it's very different from anything else I know. I have no idea how usable Lisp is to develop actual, big applications with it, nor do I have any experience with it myself, beyond some simple examples. I hope I can resume my studies about it soon though and I might even work on a project with it in the future.
h{Python} I have some quite mixed feelings about Python. Almost all of its features are very conflicting for me, as I frequently encounter both their upsides and downsides. The primary difference in Python to other languages I know is its style dependant syntax. Which has its advantages (mostly unified style), but at the same time it often forces you to write uglier code by not allowing you to (or at least discouraging you to) one-line and align things as you are allowed to in other languages, which makes small if/else/etc blocks tedious to read. Aside from that and a couple more things, Python offers a very neat standard library that makes many things much easier to do. I simply don't feel like I have enough actual reasons and justifications for my genuine irk with Python. It just doesn't quite feel right and that's probably mostly my own preference, so I try not to judge it too much for it.
h{Others} I know there's a thousand and one more languages out there, most of which I'm not even aware of. I'm sure they all have their quirks, uses, upsides and downsides. If you know a particularly interesting language, let me know and I'll take a look!
I could talk about a bunch more languages that I know and I could go more in-depth with my ideas, but I feel that this is enough blabbery for now.
Written by shinmera