Best Programming Languages
Here is the list of the most important and valuable general-purpose programming languages in order.
Basic Skills
It is important to learn and understand the following basic skills before learning any programming language.
- HTML and CSS
- Git and code hosting platforms like GitHub, GitLab, and Bitbucket.
- Unix commands
- Data formats like JSON, YAML, CSV, XML, and Markdown.
1. Javascript
Javascript can be used for developing mobile apps, web apps, desktop apps, backend services, and almost anything. It is easy to learn since you only need a text editor and a browser to run and test Javascript code. As a multi-paradigm language, JavaScript supports event-driven, functional, and imperative programming styles. However, it is not a typed language which can be a problem for development.
It has a very large developer community and a very large set of libraries.
Typescript
Typescript is a superset of Javascript. It supports classes, modules, ES6 features, and static type-checking. Also, it has some cool features that are not in ES6, like enums and the ability to initialize member variables in a constructor; public, private, protected, and abstract keywords.
Browsers do not support Typescript, so you need to convert your Typescript code into Javascript using a Typescript compiler and then use them in your apps.
2. Java
Java is an object-oriented statically typed programming language. It is moderately difficult to learn Java but it will help you understand any other object-oriented programming language. Java is mostly used for Android and server-side development. The main advantage of Java is that it allows developers to control multiple threads and automatically frees up the memory through garbage collection.
It has a very large developer community and a very large set of libraries. It lacks some modern language features, hence now Kotlin is becoming more popular which is a superset of Java. However, Java is also continuously trying to add more features to catch-up with modern programming languages.
Kotlin
Kotlin effortlessly combines object-oriented and functional programming features within it. It is completely interoperable with Java hence supports all the Java libraries. Many platforms that have support for Java now also supports Kotlin. It can be used for developing Android, iOS, web, desktop, and server-side apps.
3. Python
Python is a high-level, interpreted, and general purpose dynamic programming language that focuses on code readability. It has a very large community and a very large set of libraries. It is used for developing desktop, gaming, scientific, and server-side apps.
4. C#
C# (pronounced C Sharp) is a general-purpose, object-oriented language built on the foundations of C. It can be used for developing mobile apps using Xamarin, desktop apps, VR apps, games using Unity, and server-side apps.
5. SQL
This is not a general-purpose programming language, but a database querying language, which is very useful for querying relational databases such as MySQL, MS SQL, Maria DB, PostgreSQL, SQLite, etc. It can be useful in developing Android and iOS apps since they use SQLite for persistent storage.
SQL also has a general-purpose programming language extension called PL/SQL (Procedural Language for SQL).
6. Swift
Swift is an open-source general-purpose compiled programming language developed by Apple Inc. If you want to make native macOS and iOS apps, then you will have to learn Swift or Objective C. But since Objective C is old and lacks modern language features, Swift is now the recommended programming language by Apple.
Swift is mostly used only used for developing Apple apps. It has a smaller developer community than other programming languages like Javascript, Java, Python, C#, and C++. Swift.org has recently released Swift toolchain for Windows which will allow you to build Windows apps using Swift, which is an attempt to make it a cross-platform programming language.
7. Ruby
Ruby is a general-purpose scripting language. It is commonly used for developing web apps using the popular Ruby on Rails framework. It has a very large community and a very large set of libraries.
8. Go
Go or Golang is another open-source general-purpose programming language developed by Google. Go is designed to solve issues like slow compilation and execution in large distributed software systems. Along with a lot of modern language features, it has special support for multi-threading. It blends the best aspects of functional programming and object-oriented styles.
It is used for developing server-side apps. It is new and hence has a small but fast-growing developer community.
9. C++
C++ is a popular language, and thus, there are many compilers and libraries. It has a very similar syntax to Java and C#.
C++ programs can’t support garbage collection or Dynamic Memory Allocation, hence it is difficult to learn. It is very fast compared to other languages, hence it is used for developing gaming apps, advanced computation, and graphics compilers. It can also be used for developing Android and iOS apps, but Java, Kotlin, and Swift are much more preferred.
10. Bash/Shell Script
Bash or Shell scripting is a sh-compatible command language. It is an essential skill to have for a DevOps, systems, network, or full-stack engineer. It is used for automating processes on local or remote servers since it is in-built in Unix-based systems.
Advanced Skills
- Frameworks like React, Vue, React-Native, Node, Spring Boot, Ruby On Rails, Django, etc.
- Docker
- Kubernetes
- Cloud computing platforms like Amazon Web Services (AWS), Google Cloud Platform (GCP), Netlify, Digital Ocean, etc.
Conclusion
You do not have to learn all of them, but it is good to understand them and what they are used for.
- Start with learning the above-mentioned basic skills.
- Learn Javascript, Typescript, and build some front-end web applications.
- Learn Java and Kotlin for building Android apps or Swift for building iOS apps.
- Now you should be comfortable enough to learn any other programming languages like Python, Ruby, C#, or C++ for specific projects.
- Learn frameworks such as React, React-Native, Node.js, Spring Boot, Android, iOS, etc. for full-stack development.
- Learn the above-mentioned advanced skills.
Note: These are just my recommendations as an experienced Software Engineer.