The computing world owes a lot to Unix, and not just because it spawned Linux and Apple’s OS X.
Unix also was responsible for the C programming language (announced in 1973), which today stands at the top of many lists as the most popular development language in use around the world. A number of languages are either directly or indirectly derived from C, including C++, C# and Java.
But will C’s reign, along with Java, soon come to an end?
According to the Tiobe Index, a monthly ranking of popular languages, the top six in September were C (16.7 per cent), Java (14.1), Objective-C (9.9), C++ (4.6) and C# (4.3).
However, Java and C++ were at an all time low since the index started in 2001.
Java — a preferred language for creating Android apps — dropped two per cent from its ranking in September, 2013, while C++ was down almost four per cent.
In a note Tiobe said there’s still a huge demand for Java and C++. But it pointed out a growing number of specific fields are using their own programming languages to write programs today, such as biomedical, statistical, hardware and psychological programming. These appear to be gaining ground at the expense of general purpose languages.
On the other hand, Objective-C, the preferred language for creating iOS apps, was up 1.37 per cent over Sept., 2013.
It’s also interesting to note that Apple’s new Swift language for iOS and OS X, announced in June, was ranked as number 18 with almost 0.9 per cent.
(Editor’s note. The just-issued October Tiobe report includes for the first time, the Dart language, Google’s hoped-for replacement for JavaScript. Its rise may be because the Dart to JavaScript compiler is reportedly mature,)
It should come as no surprise that there’s constant movement in development languages, in part because it’s not hard to create one (or more accurately, to create a derivative of an existing language) and in part because of the ever-changing nature of computing.
After all, we’ve gone from client-server to Web to mobile computing in a relatively short period of time, and the so-called Internet of Things or machine-to-machine computing is just ramping up.
Organizations are still trying to wring the most out of their software, says Stephen Hendrick, an industry analyst with the Enterprise Strategy Group. “In many ways we’re still early in that entire journey, which started in the 40s and 50s.”
This has lead to the rise of new languages aimed at making it easier to program.
SIDEBAR: Three recommended languages to learn
Farhan Thawar, Toronto-based vice-president of engineering at Pivotal Labs, which works with enterprises to build mobile and Web applications, notes in the past few years a number of enterprises have increased their software development teams.
“While .Net and Java are still very, very popular … they (teams) are trying to move to more modern versions of those frameworks,’ he said. “We’re also seeing some emergence of non-Java, non- .Net languages — we’re seeing Ruby , we’re seeing an emergence of Python (favoured by Facebook), and, in some cases, PHP.” For specific types of architectures, a language called Golang, which was developed by Google for its highly scalable concurrent systems, is being used.
Also growing is the use of frameworks like Node.js, which allow developers to use Javascript for server-side applications in addition to Web apps.
Among the tools Pivotal uses is the Spring framework , which Thawar said allows developers to build an app in Java that will run on any platform. “It gives you ways to integrate easier, to batch process, allows connection to Hadoop, gives easy access to do things on the Web.”
Pivotal also uses Groovy , a dynamic language for Java Virtual Machines that makes modern programming features available to Java developers.
Organizations are also using some of these languages because the software will be more easily maintained and modified in the future, he added.
The new entrant is Swift, which Thawar says is more like a scripting language than a procedural language, which means in theory it should be easier to learn than Objective-C. Thawar said it’s too early to say how well Swift apps will perform compared to Objective-C applications.
One of the problems enterprises face is an inability to standardize on one development platform, particularly mobile. A recent IDC report noted for example that iOS doesn’t allow certain runtimes to be downloaded on its app store, effectively banning Java and Flash. Google has platform supplied services (like Maps and Search).
For enterprises, tightly controlled application platforms with vendor-anointed tools and programming languages mean limitations in choice, an inability to leverage existing developer skills and, most importantly, an inability to easily develop code for multiple platforms.
HTML 5 holds the promise of a unified set of technologies that can provide skills, code, and effort leveraged across multiple device operating systems, IDC says.
“Even if the promise of writing once and running everywhere cannot be realized fully, and it is clear that it cannot, HTML5 can provide partial unification of some aspects of the code or development effort,” the report says. “New device platforms, including embedded technologies powering many of the things in the Internet of Things (IoT), come with built-in browsers and the potential to support HTML5.”
A subset of HTML5 will work on all platforms, it adds, so the job of enterprise development teams is to identify this subset and make sure there is a portfolio of applications that can stay within that subset.
Meanwhile there are other languages developers can consider. Mason points to Haskell, a pure functional language that helps take the danger out of trying to leverage the threading in today’s multicore processors through parallel processing. “If not written well,” Mason says, “threads tend to thrash — there will be constant back and forth between threads, and you lose the performance edge of having multicores.”
That’s why Facebook and Google are using functional languages like Haskell and Erlang, he said.
Another language being considered is Clojure, which is not a pure functional language. But Mason said it has controls over the interaction between multiple threads.
“They are going to become more significant over time,” he said of functional languages. On the other hand, he added, it will be a long tome before they knock C++, C#, Java and Objective C out of the top.