What's (deliberately) missing from the C language?
At first glance, the C language appears to be missing some commonly
required features that other languages, such as Java, provide in their
standards.
For example,
C does not provide features for graphics,
networking,
cryptography,
or multimedia.
Instead, 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.
Here are some well-respected 3rd-party libraries,
frequently employed in large C programs:
Application domain
|
(a sample of) 3rd-party libraries
|
operating system services
(files, directories, processes, inter-process communication) |
OS-specific libraries, e.g. glibc, System32, Cocoa
|
web-based programming |
libcgi, libxml, libcurl
|
data structures and algorithms |
the generic data structures library (GDSL)
|
GUI and graphics development |
OpenGL, GTK, Qt, wxWidgets, UIKit, Win32, Tcl/Tk
|
image processing (GIFs, JPGs, etc) |
GD, libjpeg, libpng
|
networking |
Berkeley sockets, AT&T's TLI
|
security, cryptography |
openssl, libmp
|
scientific computing |
NAG, Blas3, GNU scientific library (gsl)
|
concurrency, parallel and GPU programming |
OpenMP, CUDA, OpenCL, openLinda
(thread support is defined in C11, but not in C99)
|
CITS2002 Systems Programming, Lecture 1, p16, 22nd July 2024.
|