Systems programming is the broad area of programming that
involves either writing
operating systems, writing code
that interfaces directly with operating systems, or other
low level programming.
A good systems programming language is one that
is not so restrictive as to prevent you from doing
strange things. It must be able to:
- manipulate memory, and handle dynamic memory allocation. (This rules out pascal and fortran.)
- handle typeless blobs of data that may or may not
belong to you
- handle data in any format, and possibly convert
data between incompatable formats from different systems
(this rules out all strongly typed languages with no escape)
- manipulate hardware registers such as the stack
and external hardware (Even C can't do this without some
inline assembly.)
- Most importantly, it must be FAST.
Some good systems programming languages include Assembly, C, C++, and Forth. (There are others--/msg me and I'll add them.)
Forth and C were designed to be systems programming languages. Lisp can be used as a systems programming language, and some operating systems were written in it, but they are very strange beasts indeed. Likewise, multics was rumored to be coded in the language PL/I.