Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Systems programming

From Wikipedia, the free encyclopedia
Developing programs for computer systems
icon
This articleneeds additional citations forverification. Please helpimprove this article byadding citations to reliable sources. Unsourced material may be challenged and removed.
Find sources: "Systems programming" – news ·newspapers ·books ·scholar ·JSTOR
(November 2024) (Learn how and when to remove this message)

Systems programming, orsystem programming, is the activity of programming[1]computersystem 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 directly (e.g.word processor), whereas systems programming aims to produce software andsoftware platforms which provide services to other software, are performance constrained, or both (e.g.operating systems,computational science applications,game engines,industrial automation, andsoftware 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

[edit]

The following attributes characterize systems programming:

  • Theprogrammer 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 analgorithm that is known to be efficient when used with specific hardware.
  • Usually alow-level programming language or programming language dialect is used so that:
    • Programs can operate in resource-constrained environments
    • Programs can be efficient with littleruntime overhead, possibly having either a smallruntime library or none at all
    • Programs may use direct and "raw" control over memory access andcontrol flow
    • The programmer may write parts of the program directly inassembly language
  • Often systems programs cannot be run in adebugger. Running the program in asimulated environment can sometimes be used to reduce this problem.[dubiousdiscuss]

In systems programming, often limited programming facilities are available. The use ofautomatic garbage collection is not common anddebugging 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 andlogging 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 adevice driver for an operating system.

History

[edit]

Originally systems programmers invariably wrote inassembly language. Experiments with hardware support inhigh level languages in the late 1960s led to such languages asPL/S,BLISS,BCPL, and extendedALGOL forBurroughs large systems.Forth also has applications as a systems language. In the 1970s,C became widespread, aided by the growth ofUnix.More recently a subset ofC++ calledEmbedded C++ has seen some use, for instance it is used in the I/O Kit drivers ofmacOS.[2]Engineers working atGoogle createdGo in 2007 to address developer productivity in largedistributed systems, with developer-focused features such asConcurrency,Garbage Collection, and faster programcompilation than C and C++.[3]In 2015Rust 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

[edit]

For historical reasons, some organizations use the termsystems programmer to describe a job function which would be more accurately termedsystems administrator. This is particularly true in organizations whose computer resources have historically been dominated bymainframes, although the term is even used to describe job functions which do not involve mainframes. This usage arose because administration ofIBM mainframes often involved the writing of customassembler code (IBM's Basic Assembly Language (BAL)), which integrated with theoperating system such asOS/MVS,DOS/VSE orVM/CMS. Indeed, someIBM 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 termsystems 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

[edit]

References

[edit]
  1. ^ab"Panel: Systems Programming in 2014 and Beyond". Microsoft. Retrieved4 December 2015.
  2. ^Apple Inc (14 August 2009)."I/O Kit Device Driver Design Guidelines".developer.apple.com. Apple Inc. Retrieved16 September 2014.
  3. ^"Go at Google: Language Design in the Service of Software Engineering - The Go Programming Language".go.dev. Retrieved2024-04-11.

Further reading

[edit]
International
National
Other
Retrieved from "https://en.wikipedia.org/w/index.php?title=Systems_programming&oldid=1258719558"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2025 Movatter.jp