CITS2002 Systems Programming  
prev
next CITS2002 CITS2002 schedule  

Why teach C?

Since its beginnings in early 1973, the C programming language has evolved to become one of the world's most popular, and widely deployed programming languages. The language has undergone extensive formal standardization to produce the ANSI-C standard in 1989, the ISO-C99 standard in 1999, ISO-C11 (revision) in Dec 2011, and ISO-C18 in June 2018 (which introduces no new language features, only technical corrections and clarifications to defects in C11).

einstein C is the programming language of choice for most systems-level, engineering, and scientific programming:

  • most of the world's popular operating systems, Linux, Windows and macOS, their interfaces and file-systems, are written in C,
  • the infrastructure of the Internet, including most of its networking protocols, web servers, and email systems, are written in C,
  • software libraries providing graphical interfaces and tools, and efficient numerical, statistical, encryption, and compression algorithms, are written in C,
  • the software for most embedded devices, including those in cars, aircraft, robots, smart appliances, sensors, mobile phones, and game consoles, is written in C,
  • the software on the Mars Phoenix Lander was written in C,
  • much of the safety-critical software on the F-35 joint strike fighter, is written in C, but
  • C was not used on the Apollo-11 mission!

Is C still relevant? [refs: Tiobe index, Please stop citing TIOBE].
(The Tiobe survey is based on search-engine queries - is not about the best programming language or the language in which most lines of code have been written).

Of note, in July 2023, the Tiobe survey rates C, Python, and Java as almost identical in 'popularity' (whatever that means).
Of course, popularity is a poor measure of quality - otherwise, McDonald's Restaurants would receive Michelin stars.

So, we'll not focus on popularity, but on the relevance and appropriate uses of C.

Other interesting surveys:

Other Systems Programming Languages?

A (limited) number other programing languages are used for contemporary systems programming, notably Go, Nim, Rust, Swift, and Zig. All have been strongly influenced by C, and attempt to address shortcomings of C.

In particular, Rust was officially added to the Linux kernel in December 2022.

 


CITS2002 Systems Programming, Lecture 1, p4, 22nd July 2024.