Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
System programming language
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== 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> ===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]]. 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> ===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. 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.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)