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.