Programming in the 21st Century: Which Languages Should You Learn?

Karan Kashyap
Analytics Vidhya
Published in
10 min readJun 3, 2020
Source: Programming Languages in Verse

The 21st century has been marked with phenomenal progress in various fields; but perhaps the developments in technology in the past two decades have been the most significant. The introduction of smartphones, tablets, fancy apps and new powerful programming languages and libraries paired with massive strides in the fields of Artificial Intelligence and Machine Learning, Big Data and Cryptocurrency has created an atmosphere in which technology plays a critical role in every other industry that exists. In such a world, the ability to code is extremely useful for everybody, irrespective of their profession.

Many people have begun to understand the importance of learning to code and with the sheer number of programming languages and learning resources available, they are spoilt for choice. However, with so many different programming languages available, it can often be difficult for beginners to identify which languages they should learn.

In this article, I shall attempt to simplify the process of identifying which languages you should learn based on your specific needs.

How do we identify which language we should learn and use?

It is important to understand that when one is learning to write code, the most important part is to teach your brain about how to think of the logic that would be required to solve a particular problem. Once you understand the theory behind programming in general, learning programming languages becomes very simple. For the most part, they all have similar functionalities but they differ in their syntax (the exact code you would type to perform the same operations would differ from one programming language to the other but the logic would remain the same).

That being said, based on where you would like to apply the programming skills that you are learning, there are definitely certain languages that are better suited for use in that particular field.

We shall now examine some of the main interest areas for people who are just starting to learn programming and my opinions on the “best” programming languages to use for work in those respective areas.

The 4 major fields that I will cover in this article are:

  1. Machine Learning and AI
  2. Competitive Programming
  3. Web Development
  4. App Development

Machine Learning and Artificial Intelligence

Source: cubix.co

In recent times, with the development of libraries like TensorFlow, PyTorch, SciKit-Learn and Keras, Machine Learning development has become much simpler and accessible to a much larger set of people. Thus, I feel like the best languages to learn if you want to get started with Machine Learning and AI is Python, Java and possibly even C++. You could also consider learning JavaScript if you would like to develop Machine Learning enabled websites.

In general, Python is definitely the language I would recommend learning for Machine Learning development since it supports a wide range of extremely helpful libraries for creating Machine Learning Models and preprocessing data, like NumPy, PIL (Python Imaging Library), Pandas, OpenCV, etc.

Using API (Application Programming Interface) development tools like Flask, Python can also be used to develop Machine Learning enabled web-apps which makes Python the perfect fit for Machine Learning Development.

In addition, I would also recommend online courses to understand Machine Learning theory. A course that I myself took part in is Andrew Ng’s course on Machine Learning and I felt that it was very useful in helping me learn a lot of the theory associated with Machine Learning.

Competitive Programming

Source: Beginner’s Guide to Competitive Programming

Competitive Programming usually involves a problem that you must solve by writing a piece of code, the catch being that writing just any code will not fetch you full points, even if it yields the right answer.

This is because Competitive Programming is all about challenging your brain to think efficiently. Each problem has a set of time constraints. If the time taken to execute your code for a large number of test cases exceeds the maximum time limit, you receive no points.

Thus, languages like C++ and Java are the most popular languages that beginners tend to use for Competitive Programming because these languages are faster than others like Python. Some beginners tend to find C++ a little harder to understand so I would recommend starting off with a language like Java that is easier to learn. This can serve as a base for you to grasp important programming concepts and once you have gained some experience with these languages, learning a new language like C++ should not be a challenge at all.

If you are a beginner looking to get started with Competitive Programming, I would recommend signing up on Codechef. I believe that the best way to become proficient in Competitive Programming is by solving a lot of problems. Codechef has a large repository of problems sorted by difficulty. As you advance in the difficulty of problems that you can solve, you become better and can understand what concepts to learn.

Web Development

In a world where a great number of things are moving to the online space, web development has become a crucial skill in any Computer Scientist’s arsenal.

Generally, the languages that one must learn in order to build websites depend on the type of websites you wish to develop. If you are looking to build a Static Website (simple website where some content is just displayed), the languages you should be familiar with are HTML (Hypertext Markup Language), CSS (Cascading Style Sheets) and JS (JavaScript). HTML is generally considered to be a markup language and not a “programming language” but I am still including it in this list given its importance.

On the other hand, if you are aiming to build Dynamic Websites, along with HTML, CSS and JS, you will also need to make use of a server-side scripting language. The server-side scripting languages that I would recommend to any beginner are PHP (Hypertext Preprocessor), Python or Node.js. PHP works in the backend and ensures that your website functions as desired and can execute the required code to make it interactive. You could also use Python, which is another great choice since frameworks like Flask and Django make it easy to learn and also ensure that it has a lot of useful functionalities.

Now, it is important to realize that web-development is broadly categorized into two types: Frontend Development and Backend Development.

Frontend Development

The frontend of a website is what you see on your screen when you open the website. The only languages that you need to know in order to design a good-looking frontend are HTML, CSS and JS.

HTML and CSS go hand in hand. While HTML is used to define what component should be present at a particular position on a website, CSS gives you access to a much wider range of styles, colors and fonts that can be implemented to enhance the look and feel of the components you have created using HTML. Once you have gained some experience working with HTML and CSS, I would recommend learning SASS, which is a very useful CSS extension language.

JavaScript plays an important role in the easy creation of any components of the frontend that are interactive in nature. Some of the best frontend JavaScript frameworks for frontend development are React.js, Angular JS, Vue.js and jQuery.

Another framework that I would recommend for frontend development is Bootstrap. Bootstrap allows you to integrate HTML, CSS and JS seamlessly and makes use of a system of containers that make it easier to ensure that content is displayed correctly on all types of devices, irrespective of the differences in their aspect ratios.

Backend Development

The backend of any website is the part of the website that a user does not get to see or interact with directly but the backend is what gives the website all of its functionality. A simple way to understand this is that the backend contains the actual working parts of the website, along with all the data that is being managed and a user interacts with this backend indirectly through the frontend.

The two main backend languages that I would recommend are PHP and Python. Libraries like Flask make it very easy to create APIs with Python, thereby allowing for the easy creation of backend functionalities. In addition, frameworks like Django make it very easy to develop highly functional websites quickly.

Another popular language used in backend development is Node.js. Node.js enables you to run JavaScript code outside of the web browser, thereby allowing its use in the backend. It is very useful in building backend APIs for a wide variety of purposes.

A resource I would recommend for beginners to learn Web Development is the University of Michigan’s Coursera course on Web Design.

App Development

As far as App Development is concerned, I feel that the language you should learn is completely a function of the platform on which you would like to use this app. The three main platforms that I will recommend languages for are Apple (iOS, macOS), Windows and Android.

Apple (iOS, macOS)

Apps for Apple products can only be made using a programming language called Swift. Swift is much faster than languages like C which is what makes Apps developed using Swift much faster than those developed using other languages. The catch; however, is that Swift cannot be used for purposes other than building Apple apps. In addition, you must have a Mac that you can work on in order to install the XCode software which allows you to program apps using Swift.

Windows

Applications can be developed for Windows using a wide array of programming languages; however, for beginners, I would definitely recommend learning Java. It is a relatively fast language that is easy to learn and it can also be used to develop Apps for Android, which makes it a good language to learn if you would like to make an app that you would like to deploy over multiple platforms.

Other languages that I would recommend for developing Windows Applications are C, C++ and C#. These can also be used for Android development so they will also have the same advantage that Java has of making it easier to create apps for multiple platforms. That being said, I do feel that Java is easier to learn so I would definitely recommend that if you are a beginner.

Android

Java is by far the most popular language used for the development of Android applications for the same reasons that I mentioned earlier. Another popular language is Kotlin, which I find to be slightly more complicated to learn and understand than Java. Alternatively, you could also use C, C++ or C# to develop Android apps but I would recommend Java or Kotlin instead.

Most Android app developers tend to use Android Studio since it allows for the easy integration of Java code with XML layouts. I also feel that Android Studio makes it easy to develop apps quickly and it makes the process of creating a more visually appealing app very easy. It also allows for the creation of apps that are generally more stable which is an added bonus.

A comprehensive online course on Android App Development is a specialization offered by Vanderbilt University. Coursera also has a course offered by LearnQuest that is very useful for learning App Development with Swift. If you are looking to learn App Development for Windows, I would suggest using TutorialsPoint since they have short tutorials on the languages you would need to create Windows Apps and a set of comprehensive tutorials on Windows App Development.

Closing Remarks

Personally, I found learning Java and Python as my first two languages to be very simple since Python uses a very straightforward approach to writing code and Java’s top-end Object Oriented Approach makes it relatively simple to understand. I found the syntax for both of these languages extremely simple and learning other languages after these became easy since I had already grasped the important programming concepts.

Java and Python can both be used for a wide variety of purposes, ranging from Machine Learning to Web Development and App Development. While they can also be used for Competitive Programming, I would recommend learning C++ for that purpose after you have got a grasp of using Java and Python.

--

--