### 1.3 Programming in C and C++ ¶

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.