Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

System programming language

From Wikipedia, the free encyclopedia
Class of computer programming languages
For the HP language of the same name, seeSystems Programming Language.
icon
This articleneeds additional citations forverification. Please helpimprove this article byadding citations to reliable sources. Unsourced material may be challenged and removed.
Find sources: "System programming language" – news ·newspapers ·books ·scholar ·JSTOR
(April 2022) (Learn how and when to remove this message)

Asystem programming language is aprogramming language used forsystem programming; such languages are designed for writingsystem software, which usually requires different development approaches when compared with application software.Edsger Dijkstra referred to these languages asmachine oriented high order languages, ormohol.[1]

General-purpose programming languages tend to focus on generic features to allow programs written in the language to use the same code on differentcomputing platforms. Examples of such languages includeALGOL andPascal. 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 underlyingcomputer hardware while still providinghigh-level programming concepts likestructured programming. Examples includeExecutive Systems Problem Oriented Language (ESPOL) andSystems Programming Language (SPL), both of which are ALGOL-like insyntax but tuned to their respective platforms. Others arecross-platform software, but designed to work close to the hardware, likeBLISS,JOVIAL, andBCPL.

Some languages straddle the system and application domains, bridging the gap between these uses. The canonical example isC, which is used widely for both system and application programming.PL/I was an early example. Some modern languages also do this such asRust andSwift.

Features

[edit]

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 wasBCPL. System programming languages often lack built-ininput/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 ofPL/I,C andPascal.

History

[edit]

The earliest system software was written inassembly language mostly because no alternative existed, but also for reasons including efficiency ofobject code,compiling time, and ease of debugging. Application languages such asFORTRAN were used for system programming, although they usually still required some routines to be written in assembly language.[2]

Mid-level languages

[edit]

Mid-level languages "have much of thesyntax 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 wasESPOL on Burroughs mainframes in about 1960, followed byNiklaus Wirth'sPL360 (first written on a Burroughs system as across compiler), which had the general syntax ofALGOL 60 but whose statements directly manipulated CPU registers and memory. Other languages in this category includeMOL-360 andPL/S.

As an example, a typical PL360 statement isR9 := 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

[edit]

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

Major languages

[edit]
LanguageOriginatorBirth dateInfluenced byUsed for
JOVIALSystem Development Corporation1960ALGOL 58Many systems, mostly military
ESPOLBurroughs Corporation1961ALGOL 60MCP
PL/IIBM,SHARE1964ALGOL, FORTRAN, some COBOLMultics,Stratus VOS. Dialects used inPRIMOS,IBM CPF,IBM OS/400.
PL/SIBM1960sPL/IOS/360 and successors
Edinburgh IMPUniversity of Edinburgh1966ALGOL 60,Atlas AutocodeEdinburgh Multiple Access System
BCPLMartin Richards1967CPLXerox Alto Executive,TRIPOS
PL360Niklaus Wirth1968ALGOL 60ALGOL W
PascalNiklaus Wirth1970ALGOL WApollo AEGIS,MacApp,UCSD p-System,VAXELN,Lisa OS,PERQ OS
BLISSCarnegie Mellon University1970ALGOL, PL/I[5]OpenVMS (portions),Hydra
Language for Systems Development (LSD)R. Daniel Bergeron, et al. (Brown University)1971PL/I
CDennis Ritchie1972BCPL,BManyoperating system kernels, including mostUnix-like systems
System Programming Language (SPL)Hewlett-Packard1972ALGOL 60,ESPOLHP 3000 system software, includingMPE
PL/MGary Kildall1973PL/I,XPLCP/M,ISIS,iRMX
NEWPBurroughs1970sESPOL, ALGOLMCP
PL.8IBM1970sPL/Icompiler development,AIX (versions 1 and 2 only), IBM mainframe firmware
PL-6Honeywell, Inc.1970sPL/ICP-6
SYMPLCDC1970sJOVIALNOS subsystems, most compilers, FSE editor
Transaction Application Language (TAL)Tandem Computers1970sSPL,C,PascalNonStop OS
MesaXerox PARC1976Pascal,ALGOL 68Pilot,GlobalView
Modula-2Niklaus Wirth1978Pascal,MesaMedos-2, portions ofIBM OS/400 andPRIMOS.Modula-2+ variant used inARX,Topaz.
C++Bjarne Stroustrup1979C,SimulaBeOS,Haiku,Serenity OS,Symbian. Portions ofIBM i,macOS,Microsoft Windows.
S3ICL1980sALGOL 68ICL VME
AdaJean Ichbiah, S. Tucker Taft1983ALGOL 68,Pascal,C++,EiffelMilitary,[6] aerospace[7] mass transportation,[citation needed] high-integrity computation, operating system kernels,[8][9][10]iMAX 432,BiiN/OS
OberonNiklaus Wirth1987Modula-2Oberon System
Modula-3DEC SRC,Olivetti1988Modula-2+SPIN
DDigital Mars2001C++
NimAndreas Rumpf2008Python,Ada,Lisp,Oberon,C++,Modula-3,Object Pascal
GoGoogle2009Oberon,C,PascalKubernetes,Docker
RustMozilla Research[11]2010C++,Haskell,Erlang,RubyServo,RedoxOS. Portions of theLinux kernel and ofMicrosoft Windows.
SwiftApple Inc.2014C,Objective-C,D,RustmacOS,iOS,watchOS, andtvOS app development[a]
ZigAndrew Kelley2016C,C++,LLVM IR,Go,RustBun, TigerBeetle, Mach engine,[12] Ghostty
MojoModular Inc.[13]2023C,C++,Python,Rust,Swift,Zig

See also

[edit]

Notes

[edit]
  1. ^Swift usesAutomatic Reference Counting

References

[edit]
  1. ^abvan der Poel, W. L.; Maarssen, L. A., eds. (27–31 August 1973).Machine oriented higher level languages. IFIP Working Conference on Machine Oriented Higher Level Languages (MOHL). Trondheim, Norway: International Federation for Information Processing. Proceedings published 1974.
  2. ^abSammet, Jean (October 1971)."Brief Survey of Languages Used for Systems Implementation".ACM SIGPLAN Notices.6 (9):1–19.doi:10.1145/942596.807055.
  3. ^Wirth, Niklaus (1968). "PL360, A Programming Language for the 360 Computers".Journal of the ACM.15 (1):37–74.doi:10.1145/321439.321442.
  4. ^Mendicino, Sam F.; Hughes, Robert A.; Martin, Jeanne T.; McMahon, Frank H.; Ranelletti, John E.; Zwakenberg, Richard G. (1968). "The LRLTRAN Compiler".Communications of the ACM.11 (11):747–755.doi:10.1145/364139.364154.
  5. ^Wulf, W. A.; Russell, D. B.; Haberman, A. N. (December 1971). "BLISS: A Language for Systems Programming".Communications of the ACM.14 (12):780–790.CiteSeerX 10.1.1.691.9765.doi:10.1145/362919.362936.
  6. ^"Case Study, BAE Systems Eurofighter Typhoon"(PDF).
  7. ^"What programming languages are used for equipment onboard aircraft?".
  8. ^"Ironclad".
  9. ^"M2OS. RTOS with simple tasking support for small microcontrollers".
  10. ^"Jgrivera67/HiRTOS".GitHub.
  11. ^"Mozilla Research Projects". Archived fromthe original on 2014-01-04.
  12. ^"Mach: Zig game engine & graphics toolkit".
  13. ^"Modular Inc."www.modular.com. Retrieved2024-03-25.

External links

[edit]
Retrieved from "https://en.wikipedia.org/w/index.php?title=System_programming_language&oldid=1327739751"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2025 Movatter.jp