I have noticed that when people decide to get into programming, they get stuck at certain points along the way. Sometimes it's because they approach a programming language as if it's a natural language. This can work, but it's not my approach.
Source: Most Popular Programming Languages of 2015
What are the problems you're trying to solve?
Think about that for a little bit. It's important. But if you can't think of anything, don't worry. Just remember to keep that question in mind.
Programming languages are different from natural languages for this reason. They are for solving problems.
Natural languages solve problems too, but the root problem to solve is human communication of ideas. This is not the kind of problem we have to solve with computers. If a programming language is Turing Complete, it solves communication, in a sense (not with humans). But that's too general.
I'm talking about actual problems, not general ones. For example, let's say you want to read a text file and look for keywords. Certain languages make this extremely simple. In fact, that problem is so common, you usually don't need to even write a program.
What is your deployment strategy?
This may sound too technical, but it will become important down the line. We're working backwards to inform us as to which programming language you'll want to learn.
Basically, where do you plan on running your program? Is it something only for yourself? Do you want to roll it out for others to use? If they use it, do they have to install your development tools or can they run a "customer facing" version?
So, assuming you know what the problem is you're trying to solve, how do you want to package up and roll out your solution?
This step might be more of a method of excluding programming languages from your list.
How much support is there?
It's not enough to just learn a programming language syntax. The language must also have useful support packages (libraries). If you want to read a special file format, does the language you've chosen have the ability to read it? Or can you import the appropriate support packages?
Also, are there forums to get your questions answered when you run into problems? This is another key to picking a programming language. It's no good if the language itself is superior but nobody knows how to help you when you encounter problems.
Bringing it all together.
Let's imagine that the problem you want to solve is: How often do my chickens lay eggs?
You have also decided that the deployment is for yourself only. This means you probably want to learn a language that is supported by sensor packages like Arduino. That's likely python
.
More important, we've excluded other languages like perl
or ruby
because support for Arduino is limited in those languages (though supported, you won't find quite as much help if you have any questions).