fbpx
Wikipedia

System programming language

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 refers 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 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 hardware while still providing high-level programming concepts like structured programming. Examples include SPL and ESPOL, 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.

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. Some modern languages also do this such as Rust and Swift.

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 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 edit

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.[2]

Mid-level languages edit

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."[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 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 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.

System Programming Language (SPL) is also the name of a specific language on the HP 3000 computer series, used for its operating system HP Multi-Programming Executive (MPE), and other parts of its system software.

Major languages edit

Language Originator Birth date Influenced by Used for
ESPOL Burroughs Corporation 1961 ALGOL 60 MCP
PL/I IBM, SHARE 1964 ALGOL, FORTRAN, some COBOL Multics
PL/S IBM 1960's PL/I OS/360
PL360 Niklaus Wirth 1968 ALGOL 60 ALGOL W
Pascal Niklaus Wirth 1970 ALGOL W Apollo Computer Aegis, Apple MacApp, UCSD p-System
BLISS Carnegie Mellon University 1970 ALGOL-PL/I[5] VMS (portions)
Language for Systems Development (LSD) R. Daniel Bergeron, et al. (Brown University) 1971 PL/I
C Dennis Ritchie 1972 BCPL, B (programming language) Most operating system kernels, including Unix-like systems
NEWP Burroughs 1970's ESPOL, ALGOL MCP
PL/8 IBM 1970's PL/I AIX
PL-6 Honeywell, Inc. 1970's PL/I CP-6
SYMPL CDC 1970's JOVIAL NOS subsystems, most compilers, FSE editor
C++ Bjarne Stroustrup 1979 C, Simula GUI applications (Qt, Windows, etc.), games (Unreal Engine)
S3 ICL 1980s ALGOL 68 ICL VME
Ada Jean Ichbiah, S. Tucker Taft 1983 ALGOL 68, Pascal, C++, Eiffel
D Digital Mars 2001 C++
Nim Andreas Rumpf 2008 Python, Ada, Lisp, Oberon, C++, Modula-3, Object Pascal
Go Google 2009 Python, dislike of C++, some syntax from Pascal Docker, Podman
Rust Mozilla Research[6] 2010 C++, Haskell, Erlang, Ruby Servo, Redox OS, Linux kernel
Swift Apple Inc. 2014 C, Objective-C, D, Rust macOS, iOS, watchOS, and tvOS app development [a]
Zig Andrew Kelley 2016 C, C++, LLVM IR, Go, Rust

See also edit

Notes edit

References edit

  1. ^ a b van 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. ^ a b Sammet, 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. "PL360, A Programming Language for the 360 Computers". Journal of the ACM. 15 (1): 37–74.
  4. ^ Mendicino, Sam F.; Hughes, Robert A.; Martin, Jeanne T.; McMahon, Frank H.; Ranelletti, John E.; Zwakenberg, Richard G. "The LRLTRAN Compiler". Communications of the ACM. 11 (11): 747–755.
  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. ^ "Mozilla Research". 1 January 2014.

External links edit

  • Corbató, Fernando (1969-05-06). "PL/I as a Tool for System Programming". Datamation: 68–76. Retrieved 2012-01-23.

system, programming, language, language, same, name, systems, programming, language, this, article, needs, additional, citations, verification, please, help, improve, this, article, adding, citations, reliable, sources, unsourced, material, challenged, removed. For the HP language of the same name see Systems Programming Language This article needs additional citations for verification Please help improve this article by adding 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 template message 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 refers 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 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 hardware while still providing high level programming concepts like structured programming Examples include SPL and ESPOL 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 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 Some modern languages also do this such as Rust and Swift Contents 1 Features 2 History 2 1 Mid level languages 2 2 Higher level languages 3 Major languages 4 See also 5 Notes 6 References 7 External linksFeatures editIn 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 editThe 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 2 Mid level languages edit 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 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 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 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 span class k asm span statement is often used for this purpose Although many such languages were developed 1 C and C are the ones which survived System Programming Language SPL is also the name of a specific language on the HP 3000 computer series used for its operating system HP Multi Programming Executive MPE and other parts of its system software Major languages editLanguage Originator Birth date Influenced by Used forESPOL Burroughs Corporation 1961 ALGOL 60 MCPPL I IBM SHARE 1964 ALGOL FORTRAN some COBOL MulticsPL S IBM 1960 s PL I OS 360PL360 Niklaus Wirth 1968 ALGOL 60 ALGOL WPascal Niklaus Wirth 1970 ALGOL W Apollo Computer Aegis Apple MacApp UCSD p SystemBLISS Carnegie Mellon University 1970 ALGOL PL I 5 VMS portions Language for Systems Development LSD R Daniel Bergeron et al Brown University 1971 PL IC Dennis Ritchie 1972 BCPL B programming language Most operating system kernels including Unix like systemsNEWP Burroughs 1970 s ESPOL ALGOL MCPPL 8 IBM 1970 s PL I AIXPL 6 Honeywell Inc 1970 s PL I CP 6SYMPL CDC 1970 s JOVIAL NOS subsystems most compilers FSE editorC Bjarne Stroustrup 1979 C Simula GUI applications Qt Windows etc games Unreal Engine S3 ICL 1980s ALGOL 68 ICL VMEAda Jean Ichbiah S Tucker Taft 1983 ALGOL 68 Pascal C EiffelD Digital Mars 2001 C Nim Andreas Rumpf 2008 Python Ada Lisp Oberon C Modula 3 Object PascalGo Google 2009 Python dislike of C some syntax from Pascal Docker PodmanRust Mozilla Research 6 2010 C Haskell Erlang Ruby Servo Redox OS Linux kernelSwift Apple Inc 2014 C Objective C D Rust macOS iOS watchOS and tvOS app development a Zig Andrew Kelley 2016 C C LLVM IR Go RustSee also edit nbsp Computer programming portalOusterhout s dichotomy PreSchemeNotes edit Swift uses Automatic Reference CountingReferences edit a b van 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 a b Sammet Jean October 1971 Brief Survey of Languages Used for Systems Implementation ACM SIGPLAN Notices 6 9 1 19 doi 10 1145 942596 807055 Wirth Niklaus PL360 A Programming Language for the 360 Computers Journal of the ACM 15 1 37 74 Mendicino Sam F Hughes Robert A Martin Jeanne T McMahon Frank H Ranelletti John E Zwakenberg Richard G The LRLTRAN Compiler Communications of the ACM 11 11 747 755 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 Mozilla Research 1 January 2014 External links editCorbato Fernando 1969 05 06 PL I as a Tool for System Programming Datamation 68 76 Retrieved 2012 01 23 Retrieved from https en wikipedia org w index php title System programming language amp oldid 1182289312, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.