Many people who want to start learning programming ask me:
What language I should learn?
Which is the best programming language?
Which is the best choice for a beginner?
And I understand their ambiguity because at this moment there are over 1500 programming languages. Hopefully most of them are used only by their owners. For all those questions I often answer: Depends! Because there is no right answer.
Next logical question that I receive is: Depends of what?
There are few criteria that depends:
- Why I want to learn programming?
- What I want to do with programming?
- How easy is to learn that programming language?
- How many companies use that programming language?
Let's take them one by one.
Why I want to learn programming?
If you're interested to make some small apps for yourself, of course you'll need a language that can be very easy to learn and also to have a fast result without any focus on architecture, flexibility and so on. For this category I think a good choices can be: PHP ( for back end development - even if I'm not a big fan of php), JavaScript (for front end development, but also for back end development if you use nodejs), also Python can be a good choice.
If you want to work in a startup you can consider one of the languages mentioned above but also you can add: ruby (for back end development), Swift ( for iOS development), Java-Andriod (for Android development), Perl.
If you would like to work in a corporation you will need to know robust programming languages with a huge support form the owners of that languages. For the corporate world you should learn: Java ( it's the most used back end programming language), C# (it's also preferred by big companies for back end), C/C++ (it's a must if you'll need fast processing, low level programming).
What I want to do with programming?
Mobile development is splited in two worlds. Native development world, where which operating system has it's own programming language: Swift ( for iOS development), Java-Andriod (for Android development). Cross platform development world who has a translator for each operating system, but they share a lot of code. Here we can remind: Xamarin with C#, PhoneGap with JavaScript, Unity with C# (for gaming), etc
For front end development things are simple: the only option is the mix between HTML5, CSS3 and JavaScript. The tricky part is what framework to use, because in the last few years almost every day a new framework appears for JavaScript. But for beginners, I think jQuery is more that enough.
For back end development we have unlimited options: Java, C#, PHP , JavaScript, Ruby, etc
In IoT development, even if it's a new niche, you can use some programming languages like: C, Python, Java, Go, etc
How easy is to learn that programming language?
Not all programming languages have the same learning curve.
Some of them are very easy to learn but you cannot do so much with them or they are very specialized for a domain. Often these languages are called DSL (Domain Specific Language). Most known languages in this area are: SPSS (for statistics), SQL (for querying RDBMS), cURL (for querying No relational databases like ElasticSearch), ABAP (SAP programming), Scratch ( it's a new programming language made by MIT and it is only an educational programming language).
Some of them are easy to learn at the beginning but in order to master them you should invest a lot of time. In this category I can include PHP, JavaScript, C#.
Some of them are simply hard to be learned because they involve a lot of deep understanding of programming concepts. In this category I can put: C, C++, Java.
How many companies use that programming language?
Of course if you want to have a career in programming you should be interested in how many open positions are for that specific language. I use tiobe.com as a place to see what is the trend of programming languages. If your programming language will be in top for you it will be easier to change your job.
Conclusions
As you can see it's not so easy to decide what language is the best to start learning programming. Why? Because there are too many variable in the "wanna be programmer equation". For this reason, in order to give a proper answer to wanna be programmers I ask them the above questions to find their scope, motivation, desire, etc
But if you don't have any target and you just wanna start to learn programming I highly recommend you to start with Scratch! Because it is a programming language with educational purpose and it's very easy to keep your focus on understanding programming and its concepts without any concern in how correctly is the code written.
In a next article I'll write about Scratch.