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.
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.
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.
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.