C and C++ are languages that allow direct access to the computer’s memory. Historically, they have been used for writing low-level systems software, and applications where high-performance or control over resource usage are critical. However, great care is required to ensure that memory is accessed correctly, to avoid corrupting other data-structures. This book describes techniques that will help in detecting potential errors during compilation, but the risk in using languages like C or C++ can never be eliminated.
In addition to C and C++ the GNU Project also provides other high-level
languages, such as GNU Common Lisp (gcl), GNU Smalltalk
(gst), the GNU Scheme extension language (guile) and the
GNU Compiler for Java (gcj). These languages do not allow the
user to access memory directly, eliminating the possibility of memory
access errors. They are a safer alternative to C and C++ for many
applications.