Systems programming
Systems programming, or system programming, is the activity of programming
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:
- 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 low-level programming language or programming language dialect is used so that:
- Programs can operate in resource-constrained environments
- Programs can be efficient with little runtime overhead, possibly having either a small runtime libraryor 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.[dubious ]
In systems programming, often limited programming facilities are available. The use of
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
Alternative meaning
For historical reasons, some organizations use the term systems programmer to describe a job function which would be more accurately termed
See also
- Ousterhout's dichotomy
- System programming language
- Scripting language
- Interrupt handler
- Computer Programming
References
- ^ a b "Panel: Systems Programming in 2014 and Beyond". Microsoft. Retrieved 4 December 2015.
- ^ Apple Inc (14 August 2009). "I/O Kit Device Driver Design Guidelines". developer.apple.com. Apple Inc. Retrieved 16 September 2014.
- ^ "Go at Google: Language Design in the Service of Software Engineering - The Go Programming Language". go.dev. Retrieved 2024-04-11.
This article needs additional citations for verification. (September 2014) |