So you've finally decided to learn programming, but now you're confused about where to start from. Which language should you learn? Where should you specialize in? Web Development? Game Development? Mobile App? Machine Learning and AI?
Well, sorry to burst the bubble for you but that's not how it works.
First, you should know being a programmer or a coder doesn't make you a software engineer or software developer. The same goes for knowing a language syntax. You can study and know all the languages in the world, if you're not good at problem-solving, then you're just "a coder". Let me give you an example, you want to build a house but you have neither the tools nor the knowledge to build the house. After some time, you managed to get the tools but you still don't have the knowledge of how to build the house. Those tools are just what they are, "tools", you can't do anything with them because you still can't build the house. The same is true for learning programming languages. You should first know what problem you're trying to solve before picking up a language.
Ok, with that long explanation out of the way, let's break down which languages you should look into.
I'll be grouping these into the following categories depending on what you're trying to specialize in and I'll be repeating some of these languages in several categories because they can be used for several different purposes. The categories are:
Web Development
Front-End
Back-End
Game Development
- Mobile App Development
- Machine Learning and AI
- Desktop App Development
Web Development
If you're going for web development, then obviously the first thing you need to learn is HTML and CSS. For the sake of this article, let's assume you don't know what HTML and CSS are. HTML stands for HyperText Markup Language. It is the most basic building block of the web and it defines the meaning and structure of web content. In other words, if there's no HTML, you wouldn't be seeing this article right now. CSS stands for Cascading StyleSheet. It is used for describing the presentation of a document written in a markup language such as HTML. In order words, if there was no CSS, this page would be looking like a broken Wikipedia page, black texts and blue links jumbled all over the place. So these two work hand in hand to beautify the web and the content in it. Now that you know these two it's time to choose a route, Front-End or Back-End?
Front-End Development
For this, there's no question that it is JavaScript. JavaScript is the backbone of the web and basically, all browsers run on JavaScript and because the whole web depends on JavaScript, it has a very large community and resources. I think JavaScript has the most frameworks among all the programming languages and new ones are coming out almost every day. Oh, did I also mention it's also one of the most demanded languages in the industry?
Back-End Development
For Back-End development, there are quite a handful of choices to look around but before that allow me to say this, you can still go with JavaScript. Yes, there are JavaScript frameworks that are specifically for Back-end development, of them are NodeJS and ExpressJS which are the most popular ones. If you want to go a different route you might want to check one of these:
Python
Like JavaScript, Python can also be used in almost every sector of Software Engineering(except front-end development) and it is also one of the most demanded languages in the industry. Python is also one of the less cryptic languages and because of that, it's a bit easier to understand.
Java
Java is one of the most robust languages out there and it is widely used by a lot of companies and individual developers. It is an object-oriented programming language and has a huge community behind it. I won't go through what an object-oriented programming language is but I'll leave a link at the end of this article if you want to know what it is. It is also used for several purposes from back-end web development to mobile and desktop development.
PHP
PHP is the language that the majority of websites were built on. Even though it is thought to be dead, it is still relevant and on-demand today and it supports MySQL which is the most popular database management system on the web.
Ruby
This is a relatively old language but it recently started gaining popularity due to its elegant syntax that is natural and easy to read and write and its focus on simplicity and productivity.
Game Development
Even though some of the languages I mentioned above can be used for game development, they're not very prominent in this sector. So I'll just be mentioning the most relevant ones which are:
C++
C++ was built as sort of an extension of C which is one of the oldest programming languages(that I'm not a fan of). It is used for high-performance applications and it's one of the most evergreen languages out there. It is mostly used along with Unreal Engine for game development. It does have a steep learning curve though since it's based on C which is a highly cryptic language.
C
C# was developed by Microsoft as part of its .NET initiative and is also an object-oriented programming language. It is used for game development alongside Unity Engine. It's not as cryptic as C or C++ but it also has a pretty steep learning curve. It is also used for several other developments and heavily for windows applications.
Mobile Application Development
This category is where the "new boys in town" are. These are the new programming languages that are not as prominent as the older ones mentioned above. But before them, we need to mention some of their predecessors that we've already mentioned before but are also prominent here which are: Java - Android Development React Native - which is a JavaScript framework for hybrid(both Android and iOS) development. So you can learn JavaScript and go straight into React and React Native without the need to learn a new language. Then the new/cool boys in town:
Kotlin
It gained popularity after Google declared it as its preferred language for Android Development. It was designed to operate with Java and its standard library depends on the Java Class Library.
Go
It is an open-source language developed by Google and has simple syntax as well as a robust standard library. Its uses range from Mobile apps to command-line apps, desktop apps, and even web apps.
Swift
Here comes Apple's own baby. Developed by Apple, for Apple and with Apple in mind. Swift can be used to develop anything Apple OS, whether it's iOS, macOS, watchOS, or tvOS. If you want to dive deep into the Apple ecosystem then Swift is your way.
Flutter
This is the newest of all the languages mentioned here. It was first announced in 2015 and released in 2018 and like React-Native, it is also used for hybrid development(iOS and Android).
Machine Learning and AI
Machine Learning and AI are sort of a totally different sector in the Software Engineering field. As a result, it has its own languages that are used for it and a lot of them are functional programming languages because it deals with a lot of mathematics. But there are a few mentioned above that can be used for it such as Python, C++, Java, and JavaScript. Others include:
Lisp
The 2nd oldest programming language in the world. It is a functional programming language and has a totally different syntax from all the other languages. Its syntax is mainly a chain of parentheses inside one another.
Scala
Built with Java in mind, it has all of Java's good sides and none of its bad sides and is used mainly for big data-powered apps. One thing to keep in mind though is its lack of flexibility.
Haskell
It is also a functional programming language and it has a couple of handy features such as infinite data structure, garbage collection, and automatic memory management feature.
Julia
As fast as C and syntax as easy as python. This language has both, making it a popular choice among ML and AI developers. Even though it's a dynamic language, it still competes with static languages in terms of efficiency.
Desktop Application Development
Most of the languages mentioned above can be used for desktop app development but here are some of the popular choices: C# - Windows Applications Swift - MacOs Applications C/C++ - Both Python - Both
These are some of the popular languages you should look into when trying to learn programming or break into the Software Engineering field. Of course, as I mentioned earlier, the programming language is just a tool you use to solve a problem so knowing the language is just part of solving the problem.
Hope this gave you some insights on which language you should choose.
Feel free to follow me on Twitter and Instagram, also if you're a fan of Tech, then consider dropping by my YouTube Channel and say hi.
Thanks for reading.