Software development has come a long way since the early days, when large mainframes were often programmed in assembler, and languages such as COBOL and Fortran were brand new and state of the art.
Today, there are hundreds of languages to choose from. This list was compiled from the TIOBE index, Google Trends, and StackOverflow Trends. The items are in alphabetical order to allow the reader to decide what looks good, rather than attempting to put them into any specific rank. (Go was added by request, bringing the total to 21).
Common uses for each language are provided, along with the present and future potential relevance of each to the industry.
Unix shell scripting has been around for a long time, developed by Ken Thompson in the early 1970’s, and is closely tied to the development of C. Bash is an updated Unix shell first released in the late 80’s and is still under active development today. Server config scripts are routinely written in Bash, making it a good choice for working in modern cloud environments with containers and microservices. Shell scripting is rooted in the internet, so it’s always a great skill to pick up.
Also check out zsh, which is now the default shell on macOS.
Good for: server admin tasks, CLI tools, DevOps, virtualization
One of the oldest languages still in use today is COBOL, created largely by Grace Hopper in the late 1950’s to standardize development of large-scale business applications across machines, a brilliant concept we still utilize today with cross-platform SDKs. An incredible 95% of ATM transactions pass through COBOL systems, with many of these running 24/7/365 for decades. Mainframe vendors such as IBM continue to develop more powerful machines designed to run COBOL, while banks work to maintain and upgrade their existing systems due to the cost and risk associated with replacing them. Therefore, COBOL isn’t going away anytime soon and is a good choice if you want clients who store and manage large amounts of cash for a living.
Good for: banking / finance, international corporations, governments
These languages frequently rank at the very top across numerous curated lists and trend data queries, and are widely known and appreciated for speed and raw power. Beginning with the development of C in the early 1970’s by Dennis Ritchie and later C++ by Bjarnee Srousroup in 1985, these two languages have served as the backbone for everything from OS and game development to modern scientific computing and machine learning. Known for having a steep learning curve, C and C++ are well-suited for demanding applications that require low-level hardware access and performance.
Good for: OS / SDK development, embedded devices, game engines, science
Released by Microsoft in 2000 and designed by Anders Hejlsberg to be a general-purpose cross-platform OOP language, C# has become a popular choice for developing business applications, APIs, games, and more. The extensive set of features available within this language make it for graphics and other asynchronous programming tasks.
Good for: Enterprise applications, API/UI development, games, graphics
Dart is a modern language developed at Google by Lars Bak, also the creator of the V8 JavaSript Engine, for building mobile, desktop, web, and server applications. As a result, Dart is similar to other modern OOP languages such as C#, TypeScript, and Java, and provides an extensive feature set useful for defining complex interactions, asynchronous operations, animations, and other tasks that these modern tools were purpose-built for.
Good for: Cross-platform apps, cloud/enterprise, games, graphics
Developed at IBM in the 1950’s by John Backus, Fortran is a general-purpose language designed for scientific and engineering work, and remains in widespread use today for that purpose, including to write benchmark tests for the world’s fastest supercomputers. Fortran has been used extensively in fields such as space exploration, physics research, and weather modeling.
Good for: Aerospace / defense, scientific computing, numeric analysis
Known informally as
golang from the domain golang.org, Go was designed at Google in 2007 as a modern language for systems and high performance computing and is used by Google and other large organizations to build efficient services across very complex and highly-distributed networks.
Good for: Distributed services, communication, virtualization, tooling
Java is a general-purpose OOP language developed in the 1990’s by James Gosling at Sun (now owned by Oracle), and was designed to compile to bytecode for running on the Java virtual machine on any target for which a Java VM exists. As of 2020, that would include nearly every kind of device in existence, from TV’s and game consoles to servers, phones, and even kitchen appliances. Java has a moderate learning curve, and widespread adoption by corporations and universities have made it a popular choice for both new programmers and seasoned developers alike.
Good for: Enterprise apps, embedded devices, web services, games
Good for: Full-stack web, cloud services / containers, games, utilities
Julia is a modern, high-level language designed for high-performance numerical processing and statistical analysis. Developed initially in 2009 by Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and Alan Edelman, the Julia language has since gained popularity among universities, governments, and financial institutions. Julia is one of four languages to achieve petaFLOPS level performance on supercomputers (with C, C++, and Fortran).
Good for: financial analysis, mathematics research, scientific computing
Kotlin was designed to be interoperable with Java, with added functional programming and OOP features such as lambda expressions, properties, operator overloading, and more. Google announced in 2019 that Kotlin is now the preferred language for Android development, making it a good choice to learn for building Android apps and plugins for popular SDKs.
Good for: Android apps, server-side development, anywhere Java is used
Lisp is a group of languages that stem from the historic implementation originally called LISP, developed at MIT in the 1950’s to allow describing programs in a mathematical way. The s-expression syntax of Lisp is different from most languages, many of which descend from, or are influenced by, the C family. Lisp was popular in early AI research and has been widely adopted as a scripting language for CAD and other engineering applications, since it treats code as data and allows for language customization with macros and other powerful features that set it apart from more static languages. Notable applications include AutoLisp (AutoCad scripting) and the Roomba. One variant of the language family, Clojure, is especially useful for building large-scale applications for enterprise and web.
Good for: AI, robotics, scripting, language extension, research, engineering
Designed in 1993 by Roberto Ierusalimschy to be embedded within other applications for customization, Lua is widely used as a scripting language to extend software with new features, such as describing game logic in video game development or adding custom features to graphics tools.
Good for: software extension, game logic, automation, electronics / IoT
PowerShell was released by Microsoft in 2006 to bring Unix-like CLI features to Windows, and has since been released as open-source and has been ported to macOS, CentOS, and Ubuntu. PowerShell is used extensively within systems utilizing Windows Server and other Microsoft technologies to simplify admin tasks and reduce maintenance costs.
Good for: Windows system administration, CLI tools, scripting, maintenance
First released in 1991 by Guido van Rossum, Python was intended to be a highly-readable language with features for OOP, functional, and other paradigms for building clean and well-organized programs. Python enjoys large-scale platform support and is widely used within academia, data science, artificial intelligence, feature-film CGI, web servers, cloud computing, game development, and much more. Python is well-established and will remain one of the top programming skills for many years to come.
Good for: AI / ML, data science, cloud/web, media production, scripting
R was initially released in 1995 for computing statistics and performing other heavy math operations, such as data analysis and graphics. R is often used by Fortune 500 corporations for performing complex analysis of risk, customer behavior trends, and other numerically-intensive tasks. R is unique from many languages in statistics, having an s-expression syntax similar to Lisp. While not used much for other things, R is a go-to standard for intensive data analytics, especially to forecast markets or analyze user trends.
Good for: data science, predictive analytics, computational graphics
Initially released in 1995, Ruby was developed by Yukihiro Matsumoto as an object-oriented scripting language, to make up for the lack of true OOP features in other scripting languages available at the time. Features such as dynamic typing, inheritance, reflection, and operator overloading make it great for complex scripting and web server applications.
Good for: Advanced scripting, package management, utilities, web servers
Rust is a multi-paradigm language designed for building large-scale concurrent systems with high performance and reliability. Rust has been voted as the most loved programming language in a StackOverflow survey every year since 2016. Being a systems-level language similar to C++ and not requiring a runtime or VM, Rust provides low-level access to hardware, making it ideal for developing operating systems, microcontroller programs, and other software in which bare-metal performance is critical.
Good for: OS development, embedded applications, servers, tools, games
While not a general-purpose programming language, SQL is a powerful domain-specific language for managing relational databases, with applications ranging from Fortune 500 data warehouses to embedded SQLite used extensively in desktop and mobile software. Many software and other IT jobs require at least working knowledge of SQL, while advanced skills enable a developer to build extremely safe and reliable business rules agnostic of any particular programming language or SDK used. High-profile implementations include Microsoft SQL Server, Oracle Database, and PostgreSQL, each with a unique extension of the SQL language offering new features beyond the core SQL specification. Learning SQL is a no-brainer for anyone looking to enter (or advance within) numerous fields from analytics and data science to IT management and software engineering.
Good for: Working with relational data, embedding data in applications
Swift was released by Apple in 2014 to replace the use of Objective-C in their products (similar to Kotlin replacing Java for Android). Swift retains several features of Objective-C (such as dynamic dispatch) utilized to software for Apple products, but with increased safety and a syntax more familiar to those coming from other OOP languages such as C# or Java.
Good for: Building applications for macOS, iOS, watchOS, etc
Anyone interested in starting or advancing within a career in software development will need to be familiar with at least a few of the languages on this list. Individual pros and cons were omitted, as every developer’s experience will vary greatly depending on specific versions, use cases, management, project timelines, and infinite other variables. Every language has strengths and weaknesses, and a good strategy is to focus on strengths, searching for better tools when a roadblock is encountered instead of complaining about the existing tools being used.
If it’s not working for the job, find something that will. There are many styles of programming, including dozens of best practices and known design patterns for each of these languages (and many that are less popular today than in the past but are still employed widely across the industry, and others which are relatively new and still gaining momentum).
Thanks for reading and good luck with your next project!