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:
- Mobile App Development
- Machine Learning and AI
- Desktop App 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?
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 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.
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.
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++ 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# 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
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.
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.
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.
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
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.
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.
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.
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.
Thanks for reading.