Next year, C will turn 50. Amazingly, despite its age, C was a clear No. 1 in the reputed TIOBE index of programming language popularity this month. It had lost the crown to Java in mid-2015, but its popularity has been surging again since mid-2017. That’s most likely because it’s the best language to programme IoT (internet of things) devices, those tiny controllers that allow machines to talk to machines, like when you want to switch on your home AC while driving back from office.
Denis Ritchie at Bell Labs developed C as a small utility program for the Unix operating system in 1972. “The language was so powerful and efficient that it ended up rewriting the whole of Unix itself. Over the years, many programs got rewritten in C. By the 1980s, C became the de facto standard for high-performance software, and people were ready to trade the complexity for performance, elegance and compactness,” says Gireesh Punathil, IBM Runtimes Architect.
C is what is called a low-level language, one that is used to program the machine, in contrast to high-level languages like Java and Python that are used in web and mobile applications that deal directly with the real world.
The kernel of every single operating system (OS) is written in C. The kernel is the messenger between the OS and the machine. “An operating system is the wrapper around the hardware. It wraps or hides the hardware and provides services to access the internals of the hardware. The kernel implements the services to access the private parts of the hardware such as the CPU, the memory, the network card, the file system, etc,” says Punathil.
Siddhesh Poyarekar, a GNU C Library maintainer and principal software engineer at Red Hat, says people are experimenting with Rust and C++ to write kernels, but they still don’t give the performance of C. C is an open source project maintained by GNU, which is run by the Free Software Foundation.
Unlike other programming languages, C consumes fewer libraries (collections of pre-written code designed for specific tasks). “C developers also have better control over the code. For example, in C, unused code has to be cleaned up manually. There’s no ‘garbage collector’ to do that. This feature makes the code smaller in size, yet, more efficient in exploiting the device’s memory resources. Such features make C a lean, fast and powerful language,” says Vaneeswaran N, senior software engineer, Dell EMC.
This lean feature is what makes it so good for the tiny IoT devices that have minimal resources. “Most IoT devices are programmed using C, because it is very flexible and extremely fast and efficient. The language consumes very few memory resources. It makes the program run quickly and results in the embedded system performing in real time,” says Balamurugan K P, chief engineer at Trackerwave, which has an IoT solution for hospitals.
Devices like washing machines or TV remotes run on firmware, which is a program written using C. It is also used to program high-end components like ethernet, which is the building block of modern day internet that connects thousands of data farms and devices through controllers, switches, and cables. “Device drivers for high-speed ethernet controllers as well as for storage controllers for the cloud are written using C. People prefer not to use any other language for writing code that runs on an embedded device,” says Ameen Rahman, director of software engineering at Marvell Semiconductor.
An embedded device is an object that contains a special-purpose computing system, like the chip inside your mobile phone that allows it to wirelessly communicate, or the one that enables you to take pictures.
The beauty of C is that, even after almost 50 years, it is still evolving. “The notion that C is stagnating and everyone is just maintaining it, that’s not true,” says Siddhesh. Newer versions, he says, are being rolled out, and new features being added. “They are mostly safety related,” he says.
NOT ENOUGH C PROGRAMMERS IN INDIA
Despite its continuing popularity and growing usage, there are not enough C programmers in India. Siva Prasad Nanduri, business head at staffing solutions firm TeamLease Digital, estimates there are some 30,000 C programmers in the country, with 6,000 new openings emerging for them last year. Most Indian universities, he says, are focusing on the latest technology trends, adversely affecting C talent.
Sanju Ballurkar, president at Experis IT, a workforce solutions unit of ManpowerGroup India, agrees. He says engineering programmes in computer science all have C and related concepts, but students quickly move on to languages like Java and C++. Among developers, he says, the tendency is to graduate towards languages like Python and Java that are used to develop web and mobile applications. “This is despite the fact that C remains very powerful even today with a lot of job openings.”
But, with the country now focusing on developing an electronics and semiconductor base, in order to reduce its dependence on China for these products, the demand for C could surge.