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.
|