Depends on what you plan on using it for.
Java: If it will be a large scale project, and it doesn’t deal with low level system issues (i.e. is largely in middleware/application land), and scalability/performance is an important concern. (Hint: in most cases, people overestimate the importance of scalability/performance. Most projects probably die without ever reaching a level of use that requires this much scalability/performance. Also, most software is IO bound, not CPU bound, so again, choice of language will not help with speed/scalability). Or if you’re doing an Android app.
Scala/Clojure: If you want to interoperate with Java, live on the JVM, likely to have enterprise deployments, but want a language which offers higher level abstractions (read: more productivity) than what Java provides – and you’re willing to be a little bit on the cutting edge, and you’re willing to commit to always working with only good programmer, no matter how hard it is to hire them.
C++: If it will be a large scale project, with lots of contributors, and compatibility with C is important
C: If you’re going to deal with kernels, device drivers, storage, or anything low in the system
Ruby: If you want to build a website with requirements poorly specified, so that you need to be agile and deal with changing requirements, fast and furious experimentation with new features, and you’re not expecting to need a whole lot of non-web stuff (like data analytics, or scientific computing, or systems hacking)
Python: If you have no idea of the requirements, or the requirements are likely to change drastically in the future, or if the requirements span multiple of the above fields. It’s a language that is pretty good in all of the above. It is the best general purpose language right now.
Erlang: If uptime, resilience, fault-tolerance, ability to upgrade production code without any downtime, etc are at a premium.
Objective C: If you’re doing an iPhone app.
Lisp/Haskell: If you really want to improve your programming, expand your mind (as far as programming abilities are concerned), and if you are the only programmer on the project (or it will have a very few, very bright people working on it).
That’s the list in case the language isn’t already pre-determined due to other context-dependent considerations (which is likely most of the time). And remember, when in doubt, use Python.
Abdullahi Opeyemi Abdullateef (Candid Opinion)
For software development, I would try to also learn a more application oriented language.
A go-to answer is Java. Java has a pretty easy to understand API and is widely used for all kinds of projects. It runs inside of the JVM and generally can serve as a good stepping stone into understanding Object Oriented Programming. If you are new to programming, using an IDE such as Eclipse or IntelliJ can help point out some problems in your code.
A language with a C-like syntax would be helpful too. C++ often has a reputation for being robust, but it too serves as a decent language to learn as it will teach you to be nitpicky and thoughtful in what you write. If you are new to programming in gerneral, Microsoft’s Visual Studio (community edition) can serve as a tool to see where you are running into errors.
Python is another language that people learn well with. The syntax is a little like nothing else that you hav seen or will see, but it is easy to understand, especially for a new programmer. While it does not have the reputation of Java and C++, it is also VERY widely used.
If you do go the route of learning Java or C++, I would suggest that you then take a look at C#. By doing so, you will see that the languages that you are using have common elements and that each language has a time and place. This first clicked with me by programming in C# after I had learned Java. Suddenly, it all started to make sense to me.