The December 2022 issue of IEEE Spectrum is here!

Close bar

The 2016 Top Programming Languages

C is No. 1, but big data is still the big winner

2 min read
graphic image opener for the top programming languges introduction article
Photo-illustration: The Kletts

Welcome to IEEE Spectrum’s third interactive ranking of the most popular programming languages. As it’s impossible to look over the shoulder of every programmer, Spectrum uses various metrics as proxies for gauging the current use of a language. Working with data journalist Nick Diakopoulos, from 10 online sources we’ve chosen 12 metrics, each one of which gives insight along a different axis of popularity. Combining the metrics produces a single ranking.

Because each of you may value different things—What’s hot with the folks in open source? What are employers demanding?—Spectrum’s Interactive Top Programming Languages lets you adjust the weight of each metric in contributing to the ranking. You also have the option to filter the results: for example, looking only at languages used in embedded systems or mobile applications. You can customize each weighting yourself or use one of our presets.

The default preset is intended to echo the interests of the average IEEE member. So what are Spectrum’s Top Ten Languages for 2016?

After two years in second place, C has finally edged out Java for the top spot. Staying in the top five, Python has swapped places with C++ to take the No. 3 position, and C# has fallen out of the top five to be replaced with R. R is following its momentum from previous years, as part of a positive trend in general for modern big-data languages that Diakopoulosanalyses in more detail here.

Google and Apple are also making their presence felt, with Google’s Go just beating out Apple’s Swift for inclusion in the Top Ten. Still, Swift’s rise is impressive, as it’s jumped five positions to 11th place since last year, when it first entered the rankings. Several other languages also debuted last year, a marked difference from this year, with no new languages entering the rankings.

Other notable changes include Ladder Logic, rising five positions to 34th place. Ladder Logic is used in programmable logic controllers, especially those used in factories. Although manufacturing may seem like a narrow niche for a language, its relative popularity indicates just how big that niche really is. HTML also continues to be popular, rising to 16th place, despite the horror of some previous users of the Top Programming Languages that it’s included at all (for the record, we take a pragmatic approach and define a programming language as a distinct syntax that is used to give a computer instructions, even if those are just instructions on how data should be structured; Turing completeness is not required).

On the losing side, perhaps the most surprising is that Shell programming—a catchall term for the creation of scripts of the sort beloved by system administrators, using shells such as bash—has declined in popularity, falling seven positions to 19th place. This may reflect the development of more sophisticated systems to manage cloud-based data centers, but we’ll have to wait to see if the trend continues next year or if this is just a statistical fluke.

The Conversation (0)

Paying Tribute to 1997 IEEE President Charles K. Alexander

The Life Fellow was a professor at Cleveland State University

4 min read
portrait of man smiling against a light background
The Alexander Family

Charles K. Alexander, 1997 IEEE president, died on 17 October at the age of 79.

The active volunteer held many high-level positions throughout the organization, including 1991–1992 IEEE Region 2 director. He was also the 1993 vice president of the IEEE United States Activities Board (now IEEE-USA).

Keep Reading ↓Show less

Robot Learns Human Trick for Not Falling Over

Humanoid limbs are useful for more than just manipulation

3 min read
A black and white humanoid robot with a malfunctioning leg supports itself with one arm against a wall

This article is part of our exclusive IEEE Journal Watch series in partnership with IEEE Xplore.

Humanoid robots are a lot more capable than they used to be, but for most of them, falling over is still borderline catastrophic. Understandably, the focus has been on getting humanoid robots to succeed at things as opposed to getting robots to tolerate (or recover from) failing at things, but sometimes, failure is inevitable because stuff happens that’s outside your control. Earthquakes, accidentally clumsy grad students, tornadoes, deliberately malicious grad students—the list goes on.

When humans lose their balance, the go-to strategy is a highly effective one: Use whatever happens to be nearby to keep from falling over. While for humans this approach is instinctive, it’s a hard problem for robots, involving perception, semantic understanding, motion planning, and careful force control, all executed under aggressive time constraints. In a paper published earlier this year in IEEE Robotics and Automation Letters, researchers at Inria in France show some early work getting a TALOS humanoid robot to use a nearby wall to successfully keep itself from taking a tumble.

Keep Reading ↓Show less

Learn How Global Configuration Management and IBM CLM Work Together

In this presentation we will build the case for component-based requirements management

2 min read

This is a sponsored article brought to you by 321 Gang.

To fully support Requirements Management (RM) best practices, a tool needs to support traceability, versioning, reuse, and Product Line Engineering (PLE). This is especially true when designing large complex systems or systems that follow standards and regulations. Most modern requirement tools do a decent job of capturing requirements and related metadata. Some tools also support rudimentary mechanisms for baselining and traceability capabilities (“linking” requirements). The earlier versions of IBM DOORS Next supported a rich configurable traceability and even a rudimentary form of reuse. DOORS Next became a complete solution for managing requirements a few years ago when IBM invented and implemented Global Configuration Management (GCM) as part of its Engineering Lifecycle Management (ELM, formerly known as Collaborative Lifecycle Management or simply CLM) suite of integrated tools. On the surface, it seems that GCM just provides versioning capability, but it is so much more than that. GCM arms product/system development organizations with support for advanced requirement reuse, traceability that supports versioning, release management and variant management. It is also possible to manage collections of related Application Lifecycle Management (ALM) and Systems Engineering artifacts in a single configuration.

Keep Reading ↓Show less