Compared to nearly all other fields, software engineering changes rapidly. While many concepts stay the same in any language, students ten years ago might have been learning with completely different languages and tools than students today. For students and new programmers, selecting a first or second language can be daunting.
As programming tools mature and more subfields of computer science appear, programming languages are becoming more specialized than ever before. For many applications, languages are chosen based on library availability and task-specific functionality, instead of simply based on the programmer’s level of familiarity. Luckily, it’s possible to learn a variety of languages to a reasonable degree of proficiency.
In this article, we’ll look at a variety of popular programming languages and potential use cases for each.
Brand New to Programming? Choose Python
Python is one of the most popular languages on the planet for a reason. It’s easy to learn, easy to read, and easy to use to build real-world applications. Beyond the simple syntax and convenient language features, Python programs have access to a huge number of powerful libraries, used in tasks ranging from web backend development to machine learning.
Python code looks just like pseudocode, the fake code that programmers use to explain algorithms to other programmers. For this reason, reading and writing Python code is intuitive and comfortable, even for beginners. As an interpreted language, Python doesn’t make programmers compile their code into an executable before running it.
Developing a Web App? Try JavaScript
As the native language of the web, JavaScript is the most efficient way to build the user-facing frontend code for web applications. With Node.js, it is also a popular choice for web application backends. JavaScript code looks somewhat like Java, but it has many of the semantics found in much more dynamic languages like Scheme or Lua. JavaScript gets its name from Java, but the two have nearly nothing in common. Since it’s so popular, JavaScript has an impressive number of libraries and packages available on NPM, the JavaScript package repository.

While JavaScript is relatively easy to learn, real-world software development is more complicated. Frontend web development oftentimes requires thousands of packages from NPM, along with complex and potentially fragile development setups. That said, there are plenty of resources online that explain the whole process.
Once someone learns the basics of JavaScript, they usually go on to get started with a library or framework like React, Angular, or Vue. These frameworks make writing frontend web applications easier and more maintainable than with vanilla JavaScript.
Making a Mobile App? Use Swift or Kotlin
As with web apps, mobile applications are much easier to write using a select few programming languages. While both iOS and Android support applications written in a wide variety of native languages, most modern documentation and tutorials use Swift and Kotlin, respectively.
Unlike Python and JavaScript, Swift code is compiled to machine code. This means that it runs faster and has access to more platform-native functionality than other languages. Since it’s Apple’s official language for iOS and Mac development, Swift can use all of Apple’s latest iOS features, like SwiftUI. Swift includes a variety of modern programming language features, like named parameters, type inference, modules, Unicode strings, non-nullable objects, and various memory safety features, all of which make Swift code easier to write and maintain.
Kotlin is Google’s equivalent to Swift for Android. Just like how Swift made Objective-C practically obsolete on iOS, Kotlin takes the position of Java on Android. Since Kotlin runs on the same Dalvik platform as Java, it has access to Java libraries and tooling. Although Android developers continue to use Java for many tasks, Kotlin is more efficient and less repetitive to write.
Learning Systems Programming? Learn C
Developing operating systems, hacking on the internals of other programming languages, and writing blazing-fast low-level code are all tasks that C excels at. Even if it’s an inefficient and error-prone language for most software development, C’s close-to-the-metal nature and use in many of the largest systems programming projects makes it important to learn.
C is the underpinning of nearly the entire programming world. The Python interpreter is written in C. Some JavaScript engines are written in C (although most are now written in C++). The original Java Virtual Machine was written in C. The Darwin kernel used on macOS and iOS, the Linux kernel used in Linux systems and Android, and the Windows NT kernel are all written in C.
For these reasons, programmers and students looking to explore systems programming, operating systems, embedded software development, security, or high-performance computing should have a working knowledge of C. Even if the language itself doesn’t have many modern, high-level features, it is relatively easy to learn and pays dividends in the future.
Developing Games or Windows Apps? Go With C#
Microsoft’s C# language is the preferred way to write Windows applications. It has a similar syntax and runtime model to Java, although it has some more advanced functional programming features as well. With the release of .NET Core, C# runs on Linux and macOS as well. Xamarin allows mobile developers to write cross-platform applications using C#, further increasing the language’s reach across platforms and use cases.
The Unity game engine, one of the most popular ways to write video games, also uses C# as the primary way to write game code (although some components can be written in C++ if the programmer needs the extra performance).
Select a Language for Your Task
Choosing a programming language does not generally pigeonhole someone into that particular technology. Since programmers oftentimes use and understand a variety of languages and technologies throughout their careers, choosing a different language for a different project can be a good idea.