What is it?
Thirty years old and still in use, C is holding its own against newer and more glamourous programming languages. They may be easier to learn and use, but C is part of the infrastructure and the culture of modern computing, deeply embedded in systems software and applications which no one would dream of replacing. It is also accepted and understood by all the purveyors of proprietary and open source development tools.
Newer languages tend to draw heavily on C, and although it is by no means necessary to learn C first, it provides a good basis for approaching C++, Java and others. As a generic, non-proprietary language, it is the sort of career foundation skill recommended by the BCS and independent training standards bodies. It equips developers with a lingua franca for sharing and discussing programming ideas with their peers.
The most recent standard, C99, seems to have been a revision too far for most suppliers and users. Despite plenty of improvements in the language, there are many incompatibilities with different implementations of the previous C89 standard and with C++. As a result, support tends to be patchy, with suppliers typically adding a limited number of C99 features to their C compilers.
Where did it originate?
C was developed at Bell Labs in the 1970s by Dennis Ritchie, building on a language called B. Ritchie was a co-developer of Unix, and C and Unix are still one of the industry's most successful partnerships.
What is it for?
Working with C allows developers to get much closer to the machine than higher-level languages, and so programs written in other languages will often contain C code.
What makes it special?
C is hardware- and software-independent, and applications should be portable. However, the different suppliers' extensions to C, and the fact that code may have been written for the characteristics of a particular machine, can limit portability in practice.
The need to maintain and extend the enormous existing code base makes C a secure skills choice, and the language provides an excellent foundation for a career in development.
How difficult is it to master?
To people familiar with English-like high-level languages, C will seem forbidding. It is also a long way from sloppy-coding-tolerant HTML. But C brings its own rewards: you will understand what you are doing and why, which many higher-level languages conceal from you, and you will have the chance to craft elegant, efficient code. You can learn the basics on an intensive five-day course, but mastering the arts and disciplines of programming in C will take much longer.
Where is it used?
In systems software, networking and other communications systems, and applications, particularly for Unix platforms.
What systems does it run on?
Despite the long-standing association with Unix, C is platform-independent and is not tied to the fortunes of a supplier or technology camp.
What is coming up?
Peter Seebach, a member of the ISO C standards committee, said, "Many of the C99 features are now sufficiently widespread that new development projects can reasonably take advantage of them."
Rates of pay
C developers with Unix/Linux can expect £25,000 to £35,000. Senior roles command more.
Courses in C are available from most mainstream IT training organisations. Less intensive but much cheaper training may be available through local colleges or further education establishments.
Links to free online tutorials