System programming language: Difference between revisions

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
imported>Kri
Major languages: Removed stray column in row for S3 (moved it to where it's supposed to be—in /dev/null)
 
Line 1: Line 1:
{{Short description|Class of computer programming languages}}
{{Short description|Class of computer programming languages}}
{{hatnote|For the HP language of the same name, see [[Systems Programming Language]].}}
{{Hatnote|For the HP language of the same name, see [[Systems Programming Language]].}}
{{bots|deny=FrescoBot}}
{{bots|deny=FrescoBot}}
{{More citations needed|date=April 2022}}
{{More citations needed|date=April 2022}}
A '''system programming language''' 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 '''machine oriented high order languages''', or '''mohol'''.<ref name="MOHLconfer">{{cite conference |editor-last=van der Poel |editor-first=W. L. |editor-last2=Maarssen |editor-first2=L. A. |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 |date=27–31 August 1973}} Proceedings published 1974.</ref>
A '''system programming language''' 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 '''machine oriented high order languages''', or '''mohol'''.<ref name="MOHLconfer">{{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.</ref>


General-purpose programming languages tend to focus on generic features to allow programs written in the language to use the same code on different platforms. 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's internal workings, and this often has negative effects on performance.
[[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's internal workings, and this often has negative effects on performance.


System languages, in contrast, are designed not for compatibility, but for performance and ease of access to the underlying hardware while still providing high-level programming concepts like [[structured programming]]. Examples include [[Executive Systems Problem Oriented Language|ESPOL]] and [[Systems Programming Language|SPL]], both of which are similar to ALGOL in syntax but tuned to their respective platforms. Others are cross-platform but designed to work close to the hardware, like [[BLISS]], [[JOVIAL]] and [[BCPL]].
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]].


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]].
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]].
Line 15: Line 15:


== History ==
== History ==
The earliest system software was written in [[assembly language]] primarily because there was no alternative, but also for reasons including efficiency of object code, compilation 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.<ref name=Sammet>{{cite journal |last=Sammet |first=Jean |title=Brief Survey of Languages Used for Systems Implementation |journal=ACM SIGPLAN Notices |date=October 1971 |volume=6 |issue=9 |pages=1–19 |doi=10.1145/942596.807055|doi-access=free }}</ref>
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.<ref name=Sammet>{{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}}</ref>


===Mid-level languages===
===Mid-level languages===
Mid-level languages "have much of the syntax and facilities of a higher level language, but also provide direct access in the language (as well as providing assembly language) to machine features."<ref name=Sammet /> The earliest of these was [[Executive Systems Problem Oriented Language|ESPOL]] on Burroughs mainframes in about 1960, followed by [[Niklaus Wirth]]'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]].
Mid-level languages "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."<ref name=Sammet/> The earliest of these was [[Executive Systems Problem Oriented Language|ESPOL]] on Burroughs mainframes in about 1960, followed by [[Niklaus Wirth]]'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]].


As an example, a typical PL360 statement is <code>R9 := R8 and R7 shll 8 or R6</code>, signifying that registers 8 and 7 should be and'ed together, the result shifted left 8 bits, the result of that or'ed with the contents of register 6, and the final result placed into register 9.<ref>{{Cite journal |last=Wirth |first=Niklaus |author-link=Niklaus Wirth |title=PL360, A Programming Language for the 360 Computers |journal=Journal of the ACM |date=1968 |volume=15 |issue=1 |pages=37–74|doi=10.1145/321439.321442 }}</ref>
As an example, a typical PL360 statement is <code>R9 := R8 and R7 shll 8 or R6</code>, signifying that registers 8 and 7 should be and'ed together, the result shifted left 8 bits, the result of that or'ed with the contents of register 6, and the final result placed into register 9.<ref>{{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}}</ref>


===Higher-level languages===
===Higher-level languages===
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,<ref>{{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 }}</ref> which extended Fortran with features for character and bit manipulation, pointers, and directly addressed jump tables.
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,<ref>{{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}}</ref> which extended Fortran with features for character and bit manipulation, pointers, and directly addressed jump tables.


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's {{code|lang=c|asm}} statement, is often used for this purpose. Although many such languages were developed,<ref name="MOHLconfer"/> C and [[C++]] are the ones which survived.
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's {{code|lang=c|asm}} statement, is often used for this purpose. Although many such languages were developed,<ref name="MOHLconfer"/> C and [[C++]] are the ones which survived.
Line 46: Line 46:
| [[PL360]] || [[Niklaus Wirth]] || 1968 || ALGOL 60 || [[ALGOL W]]
| [[PL360]] || [[Niklaus Wirth]] || 1968 || ALGOL 60 || [[ALGOL W]]
|-
|-
| [[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]]
| [[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]], [[PERQ#Operating systems|PERQ OS]]
|-
|-
| [[BLISS]] || [[Carnegie Mellon University]] || 1970 || ALGOL, PL/I<ref>{{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}}</ref> || [[OpenVMS]] (portions), [[Hydra (operating system)|Hydra]]
| [[BLISS]] || [[Carnegie Mellon University]] || 1970 || ALGOL, PL/I<ref>{{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}}</ref> || [[OpenVMS]] (portions), [[Hydra (operating system)|Hydra]]
|-
|-
| [[Language for Systems Development]] (LSD) || R. Daniel Bergeron, et al. (Brown University) || 1971 || [[PL/I]] ||  
| [[Language for Systems Development]] (LSD) || R. Daniel Bergeron, et al. (Brown University) || 1971 || [[PL/I]] ||  
|-
|-
| [[C (programming language)|C]] || [[Dennis Ritchie]] || 1972 || [[BCPL]], [[B (programming language)|B]] || Many [[Kernel (operating system)|operating system kernels]], including most [[Unix-like]] systems
| [[C (programming language)|C]] || [[Dennis Ritchie]] || 1972 || [[BCPL]], [[B (programming language)|B]] || Many [[Kernel (operating system)|operating system kernels]], including most [[Unix-like]] systems
|-
|-
| [[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]]
| [[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]]
Line 75: Line 75:
|[[Bjarne Stroustrup]] || 1979 || [[C (programming language)|C]], [[Simula]] || [[BeOS]], [[Haiku (operating system)|Haiku]], [[Serenity OS]], [[Symbian]]. Portions of [[IBM i]], [[macOS]], [[Microsoft Windows]].
|[[Bjarne Stroustrup]] || 1979 || [[C (programming language)|C]], [[Simula]] || [[BeOS]], [[Haiku (operating system)|Haiku]], [[Serenity OS]], [[Symbian]]. Portions of [[IBM i]], [[macOS]], [[Microsoft Windows]].
|-
|-
| [[S3 (programming language)|S3]] || [[International Computers Limited|ICL]] || 1980s|| [[ALGOL 68]] || [[ICL VME]]
| [[S3 (programming language)|S3]] || [[International Computers Limited|ICL]] || 1980s || [[ALGOL 68]] || [[ICL VME]]
|-
|-
| [[Ada (programming language)|Ada]] || [[Jean Ichbiah]], S. Tucker Taft || 1983 || [[ALGOL 68]], [[Pascal (programming language)|Pascal]], [[C++]], [[Eiffel (programming language)|Eiffel]] || Military,<ref>{{cite web |url=https://www.adacore.com/uploads/customers/CaseStudy_Eurofighter.pdf|title=Case Study, BAE Systems Eurofighter Typhoon}}</ref> aerospace<ref>{{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? }}</ref> mass transportation,<ref>{{cite web | url=http://www.railfaneurope.net/tgv/signals.html | title=TGVweb - the TGV Signaling System }}</ref> high-integrity computation, operating system kernels,<ref>{{cite web|url=https://ironclad.nongnu.org/|title=Ironclad}}</ref><ref>{{cite web|url=https://m2os.unican.es/|title=M2OS. RTOS with simple tasking support for small microcontrollers}}</ref><ref>{{cite web | url=https://github.com/jgrivera67/HiRTOS | title=Jgrivera67/HiRTOS | website=[[GitHub]] }}</ref> [[iMAX 432]], [[BiiN#Description|BiiN/OS]]
| [[Ada (programming language)|Ada]] || [[Jean Ichbiah]], S. Tucker Taft || 1983 || [[ALGOL 68]], [[Pascal (programming language)|Pascal]], [[C++]], [[Eiffel (programming language)|Eiffel]] || Military,<ref>{{cite web |url=https://www.adacore.com/uploads/customers/CaseStudy_Eurofighter.pdf|title=Case Study, BAE Systems Eurofighter Typhoon}}</ref> aerospace<ref>{{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?}}</ref> mass transportation,{{cn|date=December 2025}} high-integrity computation, operating system kernels,<ref>{{cite web |url=https://ironclad.nongnu.org/ |title=Ironclad}}</ref><ref>{{cite web |url=https://m2os.unican.es/ |title=M2OS. RTOS with simple tasking support for small microcontrollers}}</ref><ref>{{cite web |url=https://github.com/jgrivera67/HiRTOS |title=Jgrivera67/HiRTOS |website=[[GitHub]]}}</ref> [[iMAX 432]], [[BiiN#Description|BiiN/OS]]
|-
|-
| [[Oberon (programming language)|Oberon]] || [[Niklaus Wirth]] || 1987 || [[Modula-2]] || [[Oberon (operating system)]].
| [[Oberon (programming language)|Oberon]] || [[Niklaus Wirth]] || 1987 || [[Modula-2]] || [[Oberon System]]
|-
|-
| [[Modula-3]] || [[DEC Systems Research Center|DEC SRC]], [[Olivetti]] || 1988 || [[Modula-2+]] || [[SPIN (operating system)|SPIN]]
| [[Modula-3]] || [[DEC Systems Research Center|DEC SRC]], [[Olivetti]] || 1988 || [[Modula-2+]] || [[SPIN (operating system)|SPIN]]
Line 89: Line 89:
| [[Go (programming language)|Go]] || [[Google]] || 2009 || [[Oberon (programming language)|Oberon]], [[C (programming language)|C]], [[Pascal (programming language)|Pascal]] || [[Kubernetes]], [[Docker (software)|Docker]]
| [[Go (programming language)|Go]] || [[Google]] || 2009 || [[Oberon (programming language)|Oberon]], [[C (programming language)|C]], [[Pascal (programming language)|Pascal]] || [[Kubernetes]], [[Docker (software)|Docker]]
|-
|-
| [[Rust (programming language)|Rust]] || [[Mozilla Research]]<ref>{{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}}</ref> || 2010 || [[C++]], [[Haskell (programming language)|Haskell]], [[Erlang (programming language)|Erlang]], [[Ruby (programming language)|Ruby]] || [[Servo (software)|Servo]], [[Redox OS]]. Portions of the [[Linux kernel]] and of [[Microsoft Windows]].
| [[Rust (programming language)|Rust]] || [[Mozilla Research]]<ref>{{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}}</ref> || 2010 || [[C++]], [[Haskell]], [[Erlang (programming language)|Erlang]], [[Ruby (programming language)|Ruby]] || [[Servo (software)|Servo]], [[RedoxOS]]. Portions of the [[Linux kernel]] and of [[Microsoft Windows]].
|-
|-
| [[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]]}}
| [[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]]}}
Line 97: Line 97:
|2016
|2016
|[[C (programming language)|C]], [[C++]], [[LLVM IR]], [[Go (programming language)|Go]], [[Rust (programming language)|Rust]]
|[[C (programming language)|C]], [[C++]], [[LLVM IR]], [[Go (programming language)|Go]], [[Rust (programming language)|Rust]]
|
|[[Bun (software)|Bun]], TigerBeetle, Mach engine,<ref>{{cite web |url=https://machengine.org |title=Mach: Zig game engine & graphics toolkit}}</ref> Ghostty
|-
|-
|[[Mojo (programming language)|Mojo]]
|[[Mojo (programming language)|Mojo]]
Line 121: Line 121:
* {{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}}
* {{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}}


{{Programming paradigms navbox}}


[[Category:Programming language topics]]
[[Category:Programming language topics]]
[[Category:System software]]
[[Category:System software]]
[[Category:Systems programming languages]]
[[Category:Systems programming languages]]

Latest revision as of 01:59, 1 January 2026

Template:Short description Script error: No such module "Hatnote". Template:Bots Script error: No such module "Unsubst". A system programming language 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 Dijkstra referred to these languages as machine oriented high order languages, or mohol.[1]

General-purpose programming languages tend to focus on generic features to allow programs written in the language to use the same code on different computing platforms. Examples of such languages include ALGOL and Pascal. This generic quality typically comes at the cost of denying direct access to the machine's internal workings, and this often has negative effects on performance.

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 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 but tuned to their respective platforms. Others are cross-platform software, but designed to work close to the hardware, like BLISS, JOVIAL, and BCPL.

Some languages straddle the system and application domains, bridging the gap between these uses. The canonical example is 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 and Swift.

Features

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 and Pascal.

History

The earliest system software was written in assembly language mostly because no alternative existed, but also for reasons including efficiency of object code, 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.[2]

Mid-level languages

Mid-level languages "have much of the syntax and facilities of a higher level language, but also provide direct access in the language (and often an assembly language) to machine features."[2] The earliest of these was ESPOL on Burroughs mainframes in about 1960, followed by Niklaus Wirth'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.

As an example, a typical PL360 statement is R9 := R8 and R7 shll 8 or R6, signifying that registers 8 and 7 should be and'ed together, the result shifted left 8 bits, the result of that or'ed with the contents of register 6, and the final result placed into register 9.[3]

Higher-level languages

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,[4] which extended Fortran with features for character and bit manipulation, pointers, and directly addressed jump tables.

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's asm statement, is often used for this purpose. Although many such languages were developed,[1] C and C++ are the ones which survived.

Major languages

Language Originator Birth date Influenced by Used for
JOVIAL System Development Corporation 1960 ALGOL 58 Many systems, mostly military
ESPOL Burroughs Corporation 1961 ALGOL 60 MCP
PL/I IBM, SHARE 1964 ALGOL, FORTRAN, some COBOL Multics, Stratus VOS. Dialects used in PRIMOS, IBM CPF, IBM OS/400.
PL/S IBM 1960s PL/I OS/360 and successors
Edinburgh IMP University of Edinburgh 1966 ALGOL 60, Atlas Autocode Edinburgh Multiple Access System
BCPL Martin Richards 1967 CPL Xerox Alto Executive, TRIPOS
PL360 Niklaus Wirth 1968 ALGOL 60 ALGOL W
Pascal Niklaus Wirth 1970 ALGOL W Apollo AEGIS, MacApp, UCSD p-System, VAXELN, Lisa OS, PERQ OS
BLISS Carnegie Mellon University 1970 ALGOL, PL/I[5] OpenVMS (portions), Hydra
Language for Systems Development (LSD) R. Daniel Bergeron, et al. (Brown University) 1971 PL/I
C Dennis Ritchie 1972 BCPL, B Many operating system kernels, including most Unix-like systems
System Programming Language (SPL) Hewlett-Packard 1972 ALGOL 60, ESPOL HP 3000 system software, including MPE
PL/M Gary Kildall 1973 PL/I, XPL CP/M, ISIS, iRMX
NEWP Burroughs 1970s ESPOL, ALGOL MCP
PL.8 IBM 1970s PL/I compiler development, AIX (versions 1 and 2 only), IBM mainframe firmware
PL-6 Honeywell, Inc. 1970s PL/I CP-6
SYMPL CDC 1970s JOVIAL NOS subsystems, most compilers, FSE editor
Transaction Application Language (TAL) Tandem Computers 1970s SPL, C, Pascal NonStop OS
Mesa Xerox PARC 1976 Pascal, ALGOL 68 Pilot, GlobalView
Modula-2 Niklaus Wirth 1978 Pascal, Mesa Medos-2, portions of IBM OS/400 and PRIMOS. Modula-2+ variant used in ARX, Topaz.
C++ Bjarne Stroustrup 1979 C, Simula BeOS, Haiku, Serenity OS, Symbian. Portions of IBM i, macOS, Microsoft Windows.
S3 ICL 1980s ALGOL 68 ICL VME
Ada Jean Ichbiah, S. Tucker Taft 1983 ALGOL 68, Pascal, C++, Eiffel Military,[6] aerospace[7] mass transportation,Script error: No such module "Unsubst". high-integrity computation, operating system kernels,[8][9][10] iMAX 432, BiiN/OS
Oberon Niklaus Wirth 1987 Modula-2 Oberon System
Modula-3 DEC SRC, Olivetti 1988 Modula-2+ SPIN
D Digital Mars 2001 C++
Nim Andreas Rumpf 2008 Python, Ada, Lisp, Oberon, C++, Modula-3, Object Pascal
Go Google 2009 Oberon, C, Pascal Kubernetes, Docker
Rust Mozilla Research[11] 2010 C++, Haskell, Erlang, Ruby Servo, RedoxOS. Portions of the Linux kernel and of Microsoft Windows.
Swift Apple Inc. 2014 C, Objective-C, D, Rust macOS, iOS, watchOS, and tvOS app development Template:Efn
Zig Andrew Kelley 2016 C, C++, LLVM IR, Go, Rust Bun, TigerBeetle, Mach engine,[12] Ghostty
Mojo Modular Inc.[13] 2023 C, C++, Python, Rust, Swift, Zig

See also

Script error: No such module "Portal".

Notes

Template:Notelist

References

<templatestyles src="Reflist/styles.css" />

  1. a b Script error: No such module "citation/CS1". Proceedings published 1974.
  2. a b Script error: No such module "Citation/CS1".
  3. Script error: No such module "Citation/CS1".
  4. Script error: No such module "Citation/CS1".
  5. Script error: No such module "Citation/CS1".
  6. Script error: No such module "citation/CS1".
  7. Script error: No such module "citation/CS1".
  8. Script error: No such module "citation/CS1".
  9. Script error: No such module "citation/CS1".
  10. Script error: No such module "citation/CS1".
  11. Script error: No such module "citation/CS1".
  12. Script error: No such module "citation/CS1".
  13. Script error: No such module "citation/CS1".

Script error: No such module "Check for unknown parameters".

External links

  • Script error: No such module "Citation/CS1".

Template:Programming paradigms navbox