What better goal to set for your summer than learning a new programming language? Forget the “beach books” this summer and set your sights on diving into a new coding language – but which one should you pick?
As reported by IDC there are approximately 11 million professional software developers on Earth, and around 690 notable programming languages (according to Wikipedia). I would wager a bet there is a staggeringly equal number of places online where you can learn one programming language or another. Whether you are already one of those 11 million coding experts or a newbie to programming, there is a plethora of information out there to sort though.
Deciding where to start depends entirely on the kind of development scenarios you have in mind, so we’ve broken things down for you to make it easier. It doesn’t matter if you are a seasoned programmer looking to add a new language to your repertoire or a novice who doesn’t know the difference between C, C++, Objective-C, or C# yet. We have assembled a list of explanations to help you choose which language you may want to conquer next.
Before we get down into the weeds and look at each language in detail, let’s talk about the six main areas where programming languages are employed today and what languages might be useful in which context. This will give you a roadmap and some early sense of which language might be the most appropriate one to learn for you.
Mobile Apps: when you want to develop apps for smartphones or tablets, your choice of language is largely dictated by the platform you want to develop for. If you want to target iOS devices, the standard language is Objective-C, when you develop for Android the default language is Java, and for Windows Phone it is C#. And if your mobile app requires a server back-end running in the cloud, see the paragraph on server-side development below for additional languages. If you want to target all three mobile platforms and that sounds like a little bit too much to learn all at once, I recommend looking into cross-platform tools such as Altova MobileTogether that allow you to build one mobile app for all platforms from one source using XQuery and visual ActionTree scripting.
Server-side Development: no matter if you’re talking about the back-end of a mobile app or a classic web-server, there are a whole bunch of different programming languages that are good for server-side development. This is where you’ll find Java, C#, Python, PHP, and Ruby being used the most. And this is true for both old-school hosted web servers as well as cloud-based servers that may be running on the AWS or Azure cloud platform.
Classic PC/Desktop Applications: while Java and Visual Basic applications are sometimes used in enterprise environments, the majority of PC-based desktop applications have been and are still being developed in C, C++, or C#. However, languages such as Python are gaining popularity even on the desktop as a scripting language for automating common tasks.
Scientific Computing: for data analysis, statistics, and higher math there are three special-purpose languages that are commonly used: Matlab, Mathematica, and R. Based on the popularity alone, R has simply outpaced the other two over the last several years, so I’ll just discuss R below.
Embedded Devices & IoT: when it comes to embedded devices, C and C++ are still king. This field has certainly been in flux over the last few years, as more and more embedded and IoT devices end up being fully-fledged Linux computers, but for software development that’s very close to the hardware layer, as well as for many operating-system functions and device drivers, the power, speed, and efficiency of C still make it the top choice for this field.
Database Queries and Data Manipulation: irrespective of which of the above areas you have in mind, you will almost always need to also know a language that lets you query a subset of some data collection from a database. While Hadoop/MapReduce, and other big-data focused platforms get all the hype in the news today, SQL – the Structured Query Language – has been around since the 70s and is still the most widely used database query language, being supported by all major database systems.
In addition to SQL, I would also recommend taking a good look at XQuery, the XML Query language, because a lot of data is accessible in XML or JSON nowadays, and XQuery is very powerful as a functional language in manipulating such data efficiently. In particular, advanced mobile tools such as Altova MobileTogether use XQuery to allow functional programming of data manipulation from a variety of data sources, including XML, JSON, HTML, and SQL databases.
Now that I’ve given you an overview of where some of these languages are most often used, you hopefully have an idea of which language might be a suitable candidate for you to learn next. So let’s talk about the individual languages in detail now and where you can learn them online:
C and its derivatives (C++, C#, and Objective-C) are general purpose programming languages and C has been widely popular since the seminal 1978 book The C Programming Language by Kernighan and Ritchie. If you are serious about a career in computer science, knowledge of C is still a must, but I would not recommend it as a wise choice to start with for beginners, as it is most commonly used for work on hardware-related or other lower-level applications. C was originally built to use on the UNIX operating system and is today most often used for implementing operating systems, device drivers, and embedded applications.
C++ is derived from C and has also been around for quite some time now. It requires at least an intermediate level programming skill to start learning the language. C++ has imperative, object-oriented and generic programming features, making it immensely powerful but also requiring an understanding of several advanced computer-science concepts to master it fully. This language is used mostly for developing systems software, video games, applications software, and client/server applications as well as cloud-based server software.
C#, originally designed by Microsoft as part of their .NET initiative, is used to develop software applications for Windows platforms. Since C# is an essential part of the .NET framework, if you are looking to develop for Microsoft, this is the language for you. It closely resembles Java, so if you know one of them, jumping to the other isn’t so difficult. C#, like Java, was originally invented to bring object-oriented programming concepts to a C-like language without all of the complexity of C++.
Java is an object-oriented language and currently one of the most widely used languages. Programmers like Java because it is portable by design and runs well across multiple software platforms. Java is a versatile language and can be used for building mobile apps, server-side applications, as well as enterprise software.
Places to learn Java include:
R is a narrowly focused language used for statistical analysis and graphing, including bivariate analysis, and correlation. This language has seen increases in popularity with the high demand for data science both academically and in business where data visualization and analysis are essential to moving projects forward. R is a great choice if you find yourself needing to create any kind of data mining project or if you feel limited by the simple Excel capabilities that are just too primitive to fully analyze correlations that may exist in your data.
Python, touted as one of the easiest programming languages to learn, is a general-purpose, high-level scripting language. Used for creating anything from websites and mobile applications to data analysis, Python boasts a large and comprehensive standard library. Due to its simplicity, Python is also one of the most widely taught programming languages in U.S. schools. If you are new to programming, this is indeed an excellent place to get started.
Places to learn Python include:
Ruby is another great scripting language that has enjoyed some popularity in the last 10-15 years, but seems to be a bit on a down-trend nowadays. It is used for developing websites and mobile apps. This open-source language has a dedicated community behind it, which makes finding resources to learn Ruby that much easier. Ruby was created in the mid-1990s in Japan by Yukihiro Matsumoto and he blended elements from some of his favorite languages (Perl, Smalltalk, Eiffel, Ada, and Lisp) to create a new language that is inherently object-oriented and functional.
Places to learn Ruby include:
SQL or Structured Query Language is a database query language used for managing data in relational databases. Who should learn SQL? Everyone! SQL is everywhere and learning it is not that difficult. If you ever have a need to retrieve or manipulate data in a database (and let’s face it who wouldn’t benefit from this ability) this is a great language to learn.
XQuery is the XML Query Language, a functional programming language designed for both querying and transforming XML data. According to the W3C, XQuery is replacing complex Java or C++ programs with a few lines of code because it is simpler to work with and easier to maintain. XQuery is also now the language of choice for powerful data manipulation from a broad range of data sources in mobile platforms, such as Altova MobileTogether. XQuery is very powerful and not a difficult language to learn.
Places to learn XQuery:
In addition to all these online resources, there are also many excellent books on all these languages available on Amazon, so make sure you check those out as well and look for customer reviews before you decide which one to buy.
You can’t pick a bad language to put in your bag of tricks; in fact, each one will only add to your marketability. So dive in and start learning a new programming language this summer!