Systems programming

Source: Wikipedia, the free encyclopedia.

Systems programming, or system programming, is the activity of programming

software platforms which provide services to other software, are performance constrained, or both (e.g. operating systems, computational science applications, game engines, industrial automation, and software as a service applications).[1]

Systems 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 or because even small efficiency improvements directly transform into significant savings of time or money.

Overview

The following attributes characterize systems programming:

In systems programming, often limited programming facilities are available. The use of

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

Burroughs large systems. Forth
also has applications as a systems language. In the 1970s, C became widespread, 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 I/O Kit drivers of macOS.[2] Engineers working at
compilation than C and C++.[3]
In 2015 Rust came out, a general-purpose programming language often used in systems programming. Rust was designed with memory safety in mind and to be as performant as C and C++.

Alternative meaning

For historical reasons, some organizations use the term systems programmer to describe a job function which would be more accurately termed

VM/CMS. Indeed, some IBM
software products had substantial code contributions from customer programming staff. This type of programming is progressively less common, and increasingly done in C rather than Assembly, but the term systems programmer is still used as the de-facto job title for staff administering IBM mainframes even in cases where they do not regularly engage in systems programming activities.

See also

References

  1. ^ a b "Panel: Systems Programming in 2014 and Beyond". Microsoft. Retrieved 4 December 2015.
  2. ^ Apple Inc (14 August 2009). "I/O Kit Device Driver Design Guidelines". developer.apple.com. Apple Inc. Retrieved 16 September 2014.
  3. ^ "Go at Google: Language Design in the Service of Software Engineering - The Go Programming Language". go.dev. Retrieved 2024-04-11.

Further reading