- System programming
Systems programming (or system programming) is the activity of
programming system software . The primary distinguishing characteristic of systems programming when compared toapplication programming is that application programming aims to produce software which provides services to the user (e.g. word processor), whereas systems programming aims to produce software which provides services to the computer hardware (e.g. disk defragmenter). It also requires a greater degree of hardware awareness.Overview
In system programming more specifically:
* theprogrammer will make assumptions about the hardware and other properties of the system that the program runs on, and will often exploit those properties (for example by using analgorithm that is known to be efficient when used with specific hardware)
* usually a low-level programming language or programming language dialect is used that:
** can operate in resource-constrained environments
** is very efficient and has littleruntime overhead
** has a smallruntime library , or none at all
** allows for direct and "raw" control over memory access andcontrol flow
** lets the programmer write parts of the program directly inassembly language
*debugging can be difficult if it is not possible to run the program in a debugger due to resource constraints. Running the program in a simulated environment can be used to reduce this problem.Systems programming is sufficiently different from application programming that programmers tend to specialize in one or the other.
In system programming, often limited programming facilities are available. The use of automatic garbage collection is not common and
debugging is sometimes hard to do. Theruntime library , if available at all, is usually far less powerful, and does less error checking. Because of those limitations,monitoring and logging are often used;operating system s may have extremely elaborate logging subsystems.Implementing certain parts in operating system and networking requires systems programming (for example implementing Paging (
Virtual Memory ) or adevice driver for an operating system).History
Originally systems programmers invariably wrote in
assembly language . Experiments with hardware support in high-level languages in the late 1960s led to such languages as BLISS and BCPL, but C, helped by the growth of UNIX, became ubiquitous in the 1980s. More recentlyEmbedded C++ has seen some use, for instance in theI/O Kit drivers ofMac OS X .Alternate Usage
For historical reasons, some organizations use the term "systems programmer" to describe a job function which would be more accurately termed
systems administrator . This is particularly true in organizations whose computer resources have historically been dominated by mainframes, although the term is even used to describe job functions which do not involve mainframes.References
Wikimedia Foundation. 2010.