<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.sarg.dev/index.php?action=history&amp;feed=atom&amp;title=System_programming_language</id>
	<title>System programming language - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.sarg.dev/index.php?action=history&amp;feed=atom&amp;title=System_programming_language"/>
	<link rel="alternate" type="text/html" href="https://wiki.sarg.dev/index.php?title=System_programming_language&amp;action=history"/>
	<updated>2026-06-24T00:58:56Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wiki.sarg.dev/index.php?title=System_programming_language&amp;diff=292119&amp;oldid=prev</id>
		<title>imported&gt;Guy Harris: /* Major languages */ Add a reference for &quot;Mach engine&quot;, for the benefit of us old people who think of &quot;Mach&quot; as OS kernel code rather than as a game engine.</title>
		<link rel="alternate" type="text/html" href="https://wiki.sarg.dev/index.php?title=System_programming_language&amp;diff=292119&amp;oldid=prev"/>
		<updated>2025-10-11T17:46:49Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Major languages: &lt;/span&gt; Add a reference for &amp;quot;Mach engine&amp;quot;, for the benefit of us old people who think of &amp;quot;&lt;a href=&quot;/index.php/Mach_(kernel)&quot; title=&quot;Mach (kernel)&quot;&gt;Mach&lt;/a&gt;&amp;quot; as OS kernel code rather than as a game engine.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Short description|Class of computer programming languages}}&lt;br /&gt;
{{Hatnote|For the HP language of the same name, see [[Systems Programming Language]].}}&lt;br /&gt;
{{bots|deny=FrescoBot}}&lt;br /&gt;
{{More citations needed|date=April 2022}}&lt;br /&gt;
A &amp;#039;&amp;#039;&amp;#039;system programming language&amp;#039;&amp;#039;&amp;#039; is a [[programming language]] used for [[system programming]]; such languages are designed for writing [[system software]], which usually requires different development approaches when compared with application software. [[Edsger W. Dijkstra|Edsger Dijkstra]] referred to these languages as &amp;#039;&amp;#039;&amp;#039;machine oriented high order languages&amp;#039;&amp;#039;&amp;#039;, or &amp;#039;&amp;#039;&amp;#039;mohol&amp;#039;&amp;#039;&amp;#039;.&amp;lt;ref name=&amp;quot;MOHLconfer&amp;quot;&amp;gt;{{cite conference |editor1-last=van der Poel |editor1-first=W. L. |editor2-last=Maarssen |editor2-first=L. A. |date=27–31 August 1973 |title=Machine oriented higher level languages |conference=IFIP Working Conference on Machine Oriented Higher Level Languages (MOHL) |publisher=International Federation for Information Processing |location=Trondheim, Norway}} Proceedings published 1974.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[General-purpose programming language]]s tend to focus on generic features to allow programs written in the language to use the same code on different [[computing platform]]s. Examples of such languages include [[ALGOL]] and [[Pascal (programming language)|Pascal]]. This generic quality typically comes at the cost of denying direct access to the machine&amp;#039;s internal workings, and this often has negative effects on performance.&lt;br /&gt;
&lt;br /&gt;
System languages, in contrast, are designed not for compatibility, but for performance and ease of access to the underlying [[computer hardware]] while still providing [[High-level programming language|high-level programming]] concepts like [[structured programming]]. Examples include [[Executive Systems Problem Oriented Language]] (ESPOL) and [[Systems Programming Language]] (SPL), both of which are ALGOL-like in [[Syntax (programming languages)|syntax]] but tuned to their respective platforms. Others are [[cross-platform software]], but designed to work close to the hardware, like [[BLISS]], [[JOVIAL]], and [[BCPL]].&lt;br /&gt;
&lt;br /&gt;
Some languages straddle the system and application domains, bridging the gap between these uses. The canonical example is [[C (programming language)|C]], which is used widely for both system and application programming. [[PL/I]] was an early example. Some modern languages also do this such as [[Rust (programming language)|Rust]] and [[Swift (programming language)|Swift]].&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
In contrast with application languages, system programming languages typically offer more-direct access to the physical hardware of the machine: an archetypical system programming language in this sense was [[BCPL]]. System programming languages often lack built-in [[input/output]] (I/O) facilities because a system-software project usually develops its own I/O mechanisms or builds on basic monitor I/O or screen management facilities. The distinction between languages used for system programming and application programming became blurred over time with the widespread popularity of [[PL/I]], [[C (programming language)|C]] and [[Pascal (programming language)|Pascal]].&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
The earliest system software was written in [[assembly language]] mostly because no alternative existed, but also for reasons including efficiency of [[object code]], [[Compiler|compiling]] time, and ease of debugging. Application languages such as [[FORTRAN]] were used for system programming, although they usually still required some routines to be written in assembly language.&amp;lt;ref name=Sammet&amp;gt;{{cite journal |last1=Sammet |first1=Jean |date=October 1971 |title=Brief Survey of Languages Used for Systems Implementation |journal=ACM SIGPLAN Notices |volume=6 |issue=9 |pages=1–19 |doi=10.1145/942596.807055 |doi-access=free}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mid-level languages===&lt;br /&gt;
Mid-level languages &amp;quot;have much of the [[Syntax (programming languages)|syntax]] and facilities of a higher level language, but also provide direct access in the language (and often an assembly language) to machine features.&amp;quot;&amp;lt;ref name=Sammet/&amp;gt; The earliest of these was [[Executive Systems Problem Oriented Language|ESPOL]] on Burroughs mainframes in about 1960, followed by [[Niklaus Wirth]]&amp;#039;s [[PL360]] (first written on a Burroughs system as a [[cross compiler]]), which had the general syntax of [[ALGOL 60]] but whose statements directly manipulated CPU registers and memory. Other languages in this category include [[MOL-360]] and [[PL/S]].&lt;br /&gt;
&lt;br /&gt;
As an example, a typical PL360 statement is &amp;lt;code&amp;gt;R9 := R8 and R7 shll 8 or R6&amp;lt;/code&amp;gt;, signifying that registers 8 and 7 should be and&amp;#039;ed together, the result shifted left 8 bits, the result of that or&amp;#039;ed with the contents of register 6, and the final result placed into register 9.&amp;lt;ref&amp;gt;{{Cite journal |last1=Wirth |first1=Niklaus |author1-link=Niklaus Wirth |date=1968 |title=PL360, A Programming Language for the 360 Computers |journal=Journal of the ACM |volume=15 |issue=1 |pages=37–74 |doi=10.1145/321439.321442}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Higher-level languages===&lt;br /&gt;
While PL360 is at the semantic level of assembly language, another kind of system programming language operates at a higher semantic level, but has specific extensions designed to make the language suitable for system programming. An early example of this kind of language is LRLTRAN,&amp;lt;ref&amp;gt;{{Cite journal |last1=Mendicino |first1=Sam F. |last2=Hughes |first2=Robert A. |last3=Martin |first3=Jeanne T. |last4=McMahon |first4=Frank H. |last5=Ranelletti |first5=John E. |last6=Zwakenberg |first6=Richard G. |title=The LRLTRAN Compiler |journal=Communications of the ACM |date=1968 |volume=11 |issue=11 |pages=747–755|doi=10.1145/364139.364154}}&amp;lt;/ref&amp;gt; which extended Fortran with features for character and bit manipulation, pointers, and directly addressed jump tables.&lt;br /&gt;
&lt;br /&gt;
Subsequently, languages such as C were developed, where the combination of features was sufficient to write system software, and a [[compiler]] could be developed that generated efficient object programs on modest hardware. Such a language generally omits features that cannot be implemented efficiently, and adds a small number of machine-dependent features needed to access specific hardware abilities; [[inline assembly]] code, such as C&amp;#039;s {{code|lang=c|asm}} statement, is often used for this purpose. Although many such languages were developed,&amp;lt;ref name=&amp;quot;MOHLconfer&amp;quot;/&amp;gt; C and [[C++]] are the ones which survived.&lt;br /&gt;
&lt;br /&gt;
== Major languages ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable collapsible&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Language !! Originator !! Birth date !! Influenced by !! Used for&lt;br /&gt;
|-&lt;br /&gt;
| [[JOVIAL]] || [[System Development Corporation]] || 1960 || [[ALGOL 58]] || Many systems, mostly military&lt;br /&gt;
|-&lt;br /&gt;
| [[Executive Systems Problem Oriented Language|ESPOL]] || [[Burroughs Corporation]] || 1961 || [[ALGOL 60]] || [[MCP (Burroughs Large Systems)|MCP]]&lt;br /&gt;
|-&lt;br /&gt;
| [[PL/I]] || [[IBM]], [[SHARE (computing)|SHARE]] || 1964 || ALGOL, FORTRAN, some COBOL || [[Multics]], [[Stratus VOS]]. Dialects used in [[PRIMOS]], [[Control Program Facility|IBM CPF]], [[IBM OS/400]].&lt;br /&gt;
|-&lt;br /&gt;
| [[PL/S]] || [[IBM]] || 1960s || [[PL/I]] || [[OS/360 and successors]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Edinburgh IMP]] || [[University of Edinburgh]] || 1966 || [[ALGOL 60]], [[Atlas Autocode]] || [[Edinburgh Multiple Access System]]&lt;br /&gt;
|-&lt;br /&gt;
| [[BCPL]] || [[Martin Richards (computer scientist)|Martin Richards]] || 1967 || [[CPL (programming language)|CPL]] || [[Xerox Alto]] Executive, [[TRIPOS]]&lt;br /&gt;
|-&lt;br /&gt;
| [[PL360]] || [[Niklaus Wirth]] || 1968 || ALGOL 60 || [[ALGOL W]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Pascal (programming language)|Pascal]] || [[Niklaus Wirth]] || 1970 || [[ALGOL W]] || [[Domain/OS|Apollo AEGIS]], [[MacApp]], [[UCSD Pascal|UCSD p-System]], [[VAXELN]], [[Apple Lisa#Lisa OS|Lisa OS]]&lt;br /&gt;
|-&lt;br /&gt;
| [[BLISS]] || [[Carnegie Mellon University]] || 1970 || ALGOL, PL/I&amp;lt;ref&amp;gt;{{cite journal |last1=Wulf |first1=W. A. |last2=Russell |first2=D. B. |last3=Haberman |first3=A. N. |title=BLISS: A Language for Systems Programming |journal=Communications of the ACM |date=December 1971 |volume=14 |issue=12 |pages=780–790 |doi=10.1145/362919.362936 |citeseerx=10.1.1.691.9765}}&amp;lt;/ref&amp;gt; || [[OpenVMS]] (portions), [[Hydra (operating system)|Hydra]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Language for Systems Development]] (LSD) || R. Daniel Bergeron, et al. (Brown University) || 1971 || [[PL/I]] || &lt;br /&gt;
|-&lt;br /&gt;
| [[C (programming language)|C]] || [[Dennis Ritchie]] || 1972 || [[BCPL]], [[B (programming language)|B]] || Many [[Kernel (operating system)|operating system kernels]], including most [[Unix-like]] systems&lt;br /&gt;
|-&lt;br /&gt;
| [[System Programming Language]] (SPL) || [[Hewlett-Packard]] || 1972 || [[ALGOL 60]], [[Executive Systems Problem Oriented Language|ESPOL]] || [[HP 3000]] system software, including [[HP Multi-Programming Executive|MPE]]&lt;br /&gt;
|-&lt;br /&gt;
| [[PL/M]] || [[Gary Kildall]] || 1973 || [[PL/I]], [[XPL]] || [[CP/M]], [[ISIS (operating system)|ISIS]], [[iRMX]]&lt;br /&gt;
|-&lt;br /&gt;
| [[NEWP]] || Burroughs || 1970s || ESPOL, ALGOL || MCP&lt;br /&gt;
|-&lt;br /&gt;
| [[PL.8]] || [[IBM]] || 1970s || [[PL/I]] || compiler development, [[IBM AIX|AIX]] (versions 1 and 2 only), IBM mainframe firmware&lt;br /&gt;
|-&lt;br /&gt;
| [[PL-6]] || [[Honeywell, Inc.]] || 1970s || [[PL/I]] || [[Honeywell CP-6|CP-6]]&lt;br /&gt;
|-&lt;br /&gt;
| [[SYMPL]] || [[Control Data Corporation|CDC]] || 1970s || [[JOVIAL]] || [[NOS (operating system)|NOS]] subsystems, most compilers, FSE editor&lt;br /&gt;
|-&lt;br /&gt;
| [[Transaction Application Language]] (TAL) || [[Tandem Computers]] || 1970s || [[System Programming Language|SPL]], [[C (programming language)|C]], [[Pascal (programming language)|Pascal]] || [[NonStop OS]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Mesa (programming language)|Mesa]] || [[Xerox PARC]] || 1976 || [[Pascal (programming language)|Pascal]], [[ALGOL 68]] || [[Pilot (operating system)|Pilot]], [[GlobalView]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Modula-2]] || [[Niklaus Wirth]] || 1978 || [[Pascal (programming language)|Pascal]], [[Mesa (programming language)|Mesa]] || [[Lilith (computer)#Operating_system|Medos-2]], portions of [[IBM OS/400]] and [[PRIMOS]]. [[Modula-2+]] variant used in [[ARX (operating system)|ARX]], [[DEC Firefly#Software|Topaz]].&lt;br /&gt;
|-&lt;br /&gt;
| [[C++]]&lt;br /&gt;
|[[Bjarne Stroustrup]] || 1979 || [[C (programming language)|C]], [[Simula]] || [[BeOS]], [[Haiku (operating system)|Haiku]], [[Serenity OS]], [[Symbian]]. Portions of [[IBM i]], [[macOS]], [[Microsoft Windows]].&lt;br /&gt;
|-&lt;br /&gt;
| [[S3 (programming language)|S3]] || [[International Computers Limited|ICL]] || 1980s || [[ALGOL 68]] || [[ICL VME]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Ada (programming language)|Ada]] || [[Jean Ichbiah]], S. Tucker Taft || 1983 || [[ALGOL 68]], [[Pascal (programming language)|Pascal]], [[C++]], [[Eiffel (programming language)|Eiffel]] || Military,&amp;lt;ref&amp;gt;{{cite web |url=https://www.adacore.com/uploads/customers/CaseStudy_Eurofighter.pdf|title=Case Study, BAE Systems Eurofighter Typhoon}}&amp;lt;/ref&amp;gt; aerospace&amp;lt;ref&amp;gt;{{cite web |url=https://aviation.stackexchange.com/questions/3608/what-programming-languages-are-used-for-equipment-onboard-aircraft#15486 |title=What programming languages are used for equipment onboard aircraft?}}&amp;lt;/ref&amp;gt; mass transportation,&amp;lt;ref&amp;gt;{{cite web |url=http://www.railfaneurope.net/tgv/signals.html |title=TGVweb: The TGV Signaling System}}&amp;lt;/ref&amp;gt; high-integrity computation, operating system kernels,&amp;lt;ref&amp;gt;{{cite web |url=https://ironclad.nongnu.org/ |title=Ironclad}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web |url=https://m2os.unican.es/ |title=M2OS. RTOS with simple tasking support for small microcontrollers}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web |url=https://github.com/jgrivera67/HiRTOS |title=Jgrivera67/HiRTOS |website=[[GitHub]]}}&amp;lt;/ref&amp;gt; [[iMAX 432]], [[BiiN#Description|BiiN/OS]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Oberon (programming language)|Oberon]] || [[Niklaus Wirth]] || 1987 || [[Modula-2]] || [[Oberon (operating system)]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Modula-3]] || [[DEC Systems Research Center|DEC SRC]], [[Olivetti]] || 1988 || [[Modula-2+]] || [[SPIN (operating system)|SPIN]]&lt;br /&gt;
|-&lt;br /&gt;
| [[D (programming language)|D]] || [[Digital Mars]] || 2001 || [[C++]] ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Nim (programming language)|Nim]] || Andreas Rumpf || 2008 || [[Python (programming language)|Python]], [[Ada (programming language)|Ada]], [[Lisp (programming language)|Lisp]], [[Oberon (programming language)|Oberon]], [[C++]], [[Modula-3]], [[Object Pascal]] ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Go (programming language)|Go]] || [[Google]] || 2009 || [[Oberon (programming language)|Oberon]], [[C (programming language)|C]], [[Pascal (programming language)|Pascal]] || [[Kubernetes]], [[Docker (software)|Docker]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Rust (programming language)|Rust]] || [[Mozilla Research]]&amp;lt;ref&amp;gt;{{cite web |url=https://www.mozilla.org/en-US/research/projects/ |title=Mozilla Research Projects |archive-url=https://web.archive.org/web/20140104070627/https://www.mozilla.org/en-US/research/projects/ |archive-date=2014-01-04 |url-status=dead}}&amp;lt;/ref&amp;gt; || 2010 || [[C++]], [[Haskell]], [[Erlang (programming language)|Erlang]], [[Ruby (programming language)|Ruby]] || [[Servo (software)|Servo]], [[RedoxOS]]. Portions of the [[Linux kernel]] and of [[Microsoft Windows]].&lt;br /&gt;
|-&lt;br /&gt;
| [[Swift (programming language)|Swift]] || [[Apple Inc.]] || 2014 || [[C (programming language)|C]], [[Objective-C]], [[D (programming language)|D]], [[Rust (programming language)|Rust]] || [[macOS]], [[iOS]], [[watchOS]], and [[tvOS]] app development {{Efn|Swift uses [[Automatic Reference Counting]]}}&lt;br /&gt;
|-&lt;br /&gt;
|[[Zig (programming language)|Zig]]&lt;br /&gt;
|Andrew Kelley&lt;br /&gt;
|2016&lt;br /&gt;
|[[C (programming language)|C]], [[C++]], [[LLVM IR]], [[Go (programming language)|Go]], [[Rust (programming language)|Rust]]&lt;br /&gt;
|[[Bun (software)|Bun]], TigerBeetle, Mach engine,&amp;lt;ref&amp;gt;{{cite web |url=https://machengine.org |title=Mach: Zig game engine &amp;amp; graphics toolkit}}&amp;lt;/ref&amp;gt; Ghostty&lt;br /&gt;
|-&lt;br /&gt;
|[[Mojo (programming language)|Mojo]]&lt;br /&gt;
|Modular Inc.&amp;lt;ref&amp;gt;{{Cite web |title=Modular Inc.. |url=https://www.modular.com/ |access-date=2024-03-25 |website=www.modular.com |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
|2023&lt;br /&gt;
|[[C (programming language)|C]], [[C++]], [[Python (programming language)|Python]], [[Rust (programming language)|Rust]], [[Swift (programming language)|Swift]], [[Zig (programming language)|Zig]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
{{Portal|Computer programming}}&lt;br /&gt;
&lt;br /&gt;
* [[Ousterhout&amp;#039;s dichotomy]]&lt;br /&gt;
* [[PreScheme]]&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
{{Notelist}}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* {{cite journal |title=PL/I as a Tool for System Programming |journal=Datamation |date=1969-05-06 |first=Fernando |last=Corbató |pages=68–76 |url=http://home.roadrunner.com/~pflass/PLI/plisprg.html |access-date=2012-01-23 |archive-url=https://web.archive.org/web/20120921035455/http://home.roadrunner.com/~pflass/PLI/plisprg.html |archive-date=2012-09-21 |url-status=dead}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Programming language topics]]&lt;br /&gt;
[[Category:System software]]&lt;br /&gt;
[[Category:Systems programming languages]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Guy Harris</name></author>
	</entry>
</feed>