CITS2002 Systems Programming  
prev
next CITS2002 CITS2002 schedule  

What's (still) missing from the C language?

During this unit, you will have naturally felt that the C language is missing some essential features for writing general programs, even general systems programs.

For example, we have seen that C does not provide features for graphics, networking, cryptography, or multimedia. Does this mean that C cannot be used to implement massive online multi-player games?

At one level, you probably appreciate that C doesn't have all these features (to learn). Instead, it is hoped that you have developed an appreciation that the "missing" features are provided by operating systems, other programs, 3rd-party libraries, and even bindings between C and other programming languages.

C permits, enables, and encourages additional 3rd-party libraries (both open-source and commercial) to provide these facilities. The reason for these "omissions" is that C rigorously defines what it does provide, and rigorously defines how C must interact with external libraries.

We have previously listed some well-respected 3rd-party libraries, frequently employed in large C programs:

Function domain 3rd-party libraries
operating system services
(files, directories, processes, inter-process communication)
OS-specific libraries, e.g. glibc, Win32, Carbon
web-based programming libcgi, libxml, libcurl
data structures and algorithms the generic data structures library (GDSL)
GUI and graphics development OpenGL, GTK, Qt, UIKit, Win32, Tcl/Tk
image processing (GIFs, JPGs, etc) gd
networking Berkeley sockets, AT&T's TLI
security, cryptography openssl, libmp
scientific computing NAG, Blas3, GNU scientific library (gsl)
concurrency, parallel and GPU programming pthreads, OpenMPI, openLinda, CUDA, OpenCL

From this unit, it is hoped that you are now confident to investigate the use of these external libraries, be able to search for and read their documentation, and know how to incorporate their header files, functions, and libraries into your own projects.

 


CITS2002 Systems Programming, Lecture 23, p5, 17th October 2023.