system programming system programming or systems programming is the activity of programming system programming requires a great degree of hardware awareness its goal is to achieve efficient use of available resources either because the software itself is performance critical aaa video games or because even small efficiency improvements directly transform into significant monetary savings for the service provider cloud based word processors overview the following attributes characterize systems programming the programmer can 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 an algorithm that is known to be efficient when used with specific hardware usually a lowlevel programming language or programming language dialect is used so that programs can operate in resourceconstrained environments programs written to be efficient with little runtime overhead they may have a small runtime library or none at all programs may use direct and raw control over memory access and control flow the programmer may write parts of the program directly in assembly language often systems programs cannot be run in a debugger running the program in a simulated environment can sometimes 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 the runtime 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 systems may have extremely elaborate logging subsystems implementing certain parts in operating systems and networking requires systems programming for example implementing paging virtual memory or a device 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 pls bliss bcpl and extended algol for burroughs large systems forth also has applications as a systems language in the 1980s c became ubiquitous aided by the growth of unix more recently a subset of c called embedded c has seen some use for instance it is used in the io kit drivers of macos 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 this usage arose because administration of ibm mainframes often involved the writing of custom assembler code ibms basic assembly language bal which integrated with the operating system such as osmvs dosvse or vmcms indeed some ibm software products had substantial code contributions from customer programming staff this type of programming is progressively less common but the term systems programmer is still the de facto job title for staff directly administering ibm mainframes ousterhouts dichotomy system programming language scripting language interrupt handler systems programming by john j donovan authority control bnf cb12144470p data gnd 41842807 lccn sh88004167 