In an ideal world, your choice of programming language shouldn't matter. Most of the popular languages share the same basic concepts, to the untrained eye, most of them look the same and let you achieve more or less the same outcome. From a developer's perspective, a programming language is a tool and choosing the right one will influence one's career, economic prospects, and future happiness. This article looks at five of the most popular programming languages, examines their individual and relative merits, and recommends which ones you should learn in 2019.
Choosing a coding language involves making multiple trade-offs. For starters, you will need to find a balance between the time and effort involved and the perceived benefits of the language. You will also need to look at the long-term prospects for any given language. For web developers in the early 2000s, PHP and Ruby on Rails looked like the best languages to further your career. Today, the prevailing market conditions have changed, and PHP and Ruby are not among our recommendations.
This article provides our picks for the best coding languages to learn in 2019. For each language, we give you a brief overview of the language, its uses, and its long-term prospects. We also give a list of honorable mentions for languages that are worth investigation but are more specialized or serve defined market niches. In order to show each language's market share and adoption, we have chosen our picks according to their ranking on Stack Overflow's 2018 Developer Survey.
One of the key reasons for learning a new language is to be able to take advantage of the employment opportunities it offers. Coding interviews are a chance for employers to get to see how much you know about your language of choice. To show the types of questions you might be asked during a coding interview, we have provided a range of possible questions for each of our recommendations.
Please note that our list is based on the Stack Overflow survey, but we have ranked the languages we recommend learning most. In addition, we limited our picks to imperative languages, excluding declarative languages, such as HTML, CSS, and SQL that take the second, third, and fourth place spots on the survey, and shell scripting languages, such as Bash.
According to the Stack Overflow survey, Python is popular with 37.9% of professional developers. Our assessment is based on Python's rapid rate of adoption, which over the last five years has grown at a faster pace than any other language. Python has become so influential that The Economist, a magazine not known for its coverage of developer-related topics, wrote about the language in a recent article.
Part of the reason for Python's popularity is that it gets rid of the annoying conventions of other languages, such as using semicolons to indicate the end of a statement. This may explain why Python is replacing Java as the primary language of instruction for teaching computer science‚??-‚??not just at universities but in high school and elementary school programs too. Python has become entrenched in the academic world and is the most popular general-purpose language used for machine learning and data science. In fact, Python is currently so dominant in these fields that a merger between Python and the data science language R has recently been proposed.
Python is both similar and very different from other coding languages. When it comes to getting a job as a Python developer, coding interviews will entail testing a candidate's understanding of how Python implements common language features, such as data types, modularity, functions, and classes. They may also ask how to use Python as a scripting, object-oriented, or functional programming language or if you understand Python-specific data types and features, such as tuples, list comprehensions, dictionaries, and decorators.
Coming in third is Java, which 45.5% of professional developers favor according to Stack Overflow's 2018 survey.
One reason for Java's enduring appeal is the Java Virtual Machine (JVM). The JVM makes it possible to run each language on different hardware platforms and devices. Java was also designed to handle many of the tasks related to data types and memory management that made developers' lives miserable. Java's ability to simplify application development and to deploy them across different operating systems made Java the language of choice for larger organizations. This is the language that can land you a steady job at a big company. Another important use for Java is writing native Android applications. With the Android market share larger than all of its rivals combined in the smartphone operating system space, this is one of the main incentives for many developers to learn Java.
In recent years, a number of popular languages have been created for or ported to the JVM and make extensive use of the Java ecosystem. These languages are popular within specific contexts and include Scala, Closure, and Kotlin. Kotlin has a number of interesting uses, including writing Android apps and creating smart contracts with the Corda framework.
When looking for work as a Java developer, it is important to understand the scope of the language. Coding interviews could consist of any conceivable Java-related topic. For enterprise development jobs, you will probably need to demonstrate your understanding of Java's infrastructure, so expect questions on JDK, JRE, and JVM. Android developers will be asked questions that relate specifically to Android, including SDK version management, intents, device emulation, and the application deployment process. If you are interviewing for a company that runs a specific JVM language other than Java, honing your skills on that language can provide an edge as well.
35.5% of professional developers that took Stack Overflow's 2018 survey are fans of Microsoft's C#. Not only are Python and Java ranked higher than C#, but the Bash scripting language is also popular among 40.4% of developers, despite the antipathy of many developers for all things Microsoft.
In today's market, Java is still a better bet than C#, but in the longer term, there are signs that this could change. The pace at which Java delivers new features has been slowing down, while Microsoft has been aggressively adding new features and capabilities to C#. This is part of a concerted effort by the company to move away from its dependence on the Windows operating system and includes its purchase of Xamarin and its cross-platform development environment, the release of the multi-platform .NET Core, and its continued investment in Azure. Microsoft sees C# as playing a role in its new strategy and has worked hard to ensure that C# can work with both Microsoft technologies and open industry standards as well.
Like Java, the C# language and ecosystem are enormous. This means that for any position you apply for, it is important to do your homework and understand the market of your prospective employer. Like Java, most C# coding interviews will consist of questions related to C#'s infrastructure, including.Net framework and the Common Language Runtime (CLR). It is also worth noting that the CLR hosts other languages, such as F# and VB.net. If you are interviewing for a company that uses another CLR language in addition to C#, it is worth learning and coding in that language.
While C and C++ are separate languages with different programming models, they are so closely linked that, for the purposes of this article, we will discuss them together.
For general-purpose and specialized tasks, such as application development, user interfaces, mobile applications, and machine learning, C has been superseded by the other languages on this list. However, C still holds its own when it comes to embedded systems and building operating systems. Nothing illustrates this point better than Linux. Linux is the most popular operating system of all time and is used in the largest mainframes as well as in any device running Android. The key part of Linux is the Linux kernel, and the Linux kernel is written in C. Another common use for C is writing other programming languages, like our second pick, Python.
C++ is a more modern, object-oriented version of C. C++ is the language used for any application where performance matters. For instance, many companies, especially in the financial sector, use it in their backend systems. C++ is adopted both for boring stuff and for some of the most exciting areas of technology. Due to its reputation for working at high speed, C++ is the preferred language for graphically intensive applications as well, including game development, graphics engines, and virtual and augmented reality.
When looking for a job in C or C++, some interviewers will ask questions that could apply to either language. These include coding interview questions regarding data types, operators, loops, conditional statements, pointers, and memory management. You may also be asked to define and explain linked lists as well as write a short program that implements and manages a linked list. Since C++ is an object-oriented language, there is a high probability that you will be asked similar types of questions regarding its support for objects, class, methods, properties, etc.
The five choices on our list are all general-purpose languages. Below are several other languages that are either more specialized or serve smaller niche markets.
One language that has received a large amount of attention is Apple's Swift. Swift was intended as Apple's new, general-purpose language and was designed as a replacement to Objective-C. Swift can be used to write iOS and Mac desktop apps and was released by Apple under an open source license in the hope of it becoming a server language. Unfortunately, this hope has not been fulfilled.
In the web development space, PHP is still very popular. Despite its limitations as a language and the availability of better alternatives, PHP is still used by many large web properties, such as Facebook and Wikipedia. Facebook even created their own dialect of PHP called Hack. PHP is also the language used by many large open source platforms, such as WordPress and MediaWiki. These platforms have a wide adoption, and PHP is used to create plugins for both of them. Facebook is still committed to PHP and has even created their own modernized version of the language called Hack. Then there is Ruby, a modern and better-designed alternative to PHP. The Ruby on Rails web development framework is widely deployed and enjoys a large and active support community.
For more highly specialized uses, such as systems programming, both Google's Go and Mozilla's Rust look promising. Both languages are designed for building highly concurrent systems. In the field of functional programming, Elixir is a modern alternative to Erlang, Clojure is a modern form of Lisp that runs on the JVM, and F# is a functional language that runs on the .NET runtime and has many mainstream features. Finally, If you are interested in the fast-growing arena of smart contracts and Ethereum-based cryptocurrencies, you should investigate Solidity.
Conclusion: Picking the Right Language
In the enterprise space, you will need to choose between Java and C#. Both of these languages are so similar in syntax, features, and infrastructure that you could really choose between them based on personal preference, job availability, or flipping a coin. As we noted, Java has been around longer than C#, is more popular, and has more job postings. On the other hand, Microsoft's active support and its drive to make C# a true cross-platform solution make it a better long-term bet. Java remains the language of Android, but Microsoft's Xamarin lets you write Android, iOS, and Mac apps in C#. Please note that C# has a bad reputation in the startup community and is very unpopular in Silicon Valley. In these circles, C# developers are often treated as second-class citizens.
It is also important to be aware that when applying for a Java/C# enterprise computing position, interviewers will focus on your ability to create backend applications in either language rather than on specific language features. When coding a solution, you'll be expected to write idiomatic code, and that's where you can demonstrate your knowledge of language features while solving real-world problems.
Finally, both C and C++ count as general-purpose languages, but in practice, they are mainly used for specific fields. For C, these are systems and embedded programming; and for C++, these are high-performance, resource-intensive applications such as real-time graphics. Both are used in cases where there are no clear alternatives, and you should choose to learn these languages when you need to build these types of applications.
Most importantly, when going in for a coding interview, make sure you know the ins and outs of whatever language applies to the job you are applying to. Coding interviews are a stressful part of the application process, but honing in on a language's advantages, limitations, and applications and being prepared will make an interview and your job-hunting experience far easier.