Sys Language

System programming language

system programming language usually refers to a programming language used forsystem programming; such languages are designed for writing system software, which usually requires different development approaches when compared with application software.
System software is computer software designed to operate and control the computer hardware, and to provide a platform for running application software. System software includes software categories such as operating systemsutility softwaredevice driverscompilers, and linkers.

Features

HistoryEdit

The earliest system software was written inassembly 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 FORTRANwere used for system programming, although they usually still required some routines to be written in assembly language.[1]

Mid-level languagesEdit

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."[1] The earliest of these was ESPOL on Burroughs mainframes in about 1960, followed by Niklaus Wirth'sPL360 (initially 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 result placed into register 9.[2]

Higher-level languagesEdit

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,[3] 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 capabilities; inline assembly code, such as C's asm statement, is often used for this purpose. Although many such languages were developed,[4] C and C++ are the ones that have 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, and other parts of its system software.

Major languagesEdit

LanguageOriginatorBirth dateInfluenced byUsed for
ESPOLBurroughs Corporation1961Algol 60MCP
PL/IIBM,SHARE1964Algol, FORTRAN, some COBOLMultics
PL360Niklaus Wirth1968Algol 60Algol W
CDennis Ritchie1969BCPLMostoperating system kernels, includingWindows NTand mostUnix-likesystems
PL/SIBM196xPL/IOS/360
BLISSCarnegie Mellon University1970Algol-PL/I[5]VMS(portions)
PL/8IBM197xPL/IAIX
PL-6Honeywell, Inc.197xPL/ICP-6
SYMPLCDC197xJOVIALNOSsubsystems, most compilers, FSE editor
C++Bjarne Stroustrup1979CSimulaSee C++ Applications[6]
AdaJean IchbiahS. Tucker Taft1983Algol 68,Pascal,C++Java,EiffelEmbedded systems, OS kernels, compilers, games, simulations,CubeSat, air traffic control, and avionics
DDigital Mars2001C++Multiple domains
NimAndreas Rumpf2008Ada,Modula-3,LispC++,Object Pascal,Python,OberonOS kernels, compilers, games
RustMozilla Research[7]2010C++,Haskell,Erlang,RubyServo layout engineRedox OS
SwiftApple Inc.2014C,Objective-CRustmacOSiOSapp development[a]

See alsoEdit

Ousterhout's dichotomy

Ousterhout's dichotomy is computer scientistJohn Ousterhout's categorization[1] that high-level programming languages tend to fall into two groups, each with distinct properties and uses: system programming languages andscripting languages – compare programming in the large and programming in the small. This distinction underlies the design of his language Tcl.
System programming languages (orapplications languages) usually have the following properties:
System programming languages tend to be used for components and applications with large amounts of internal functionality such as operating systems, database servers, and Web browsers. These applications typically employ complex algorithms and data structures and require high performance. Prototypical examples of system programming languages include C andModula-2.
By contrast, scripting languages (or glue languages) tend to have the following properties:
Scripting languages tend to be used for applications where most of the functionality comes from other programs (often implemented in system programming languages); the scripts are used to gluetogether other programs or add additional layers of functionality on top of existing programs. Ousterhout claims that scripts tend to be short and are often written by less sophisticated programmers, so execution efficiency is less important than simplicity and ease of interaction with other programs. Common applications for scripting include Web page generation, report generation, graphical user interfaces, and system administration. Prototypical examples of scripting languages include AppleScriptC shellDOS batch files, and Tcl.

HistoryEdit

The dichotomy was fully set out in Ousterhout (1998), though Ousterhout had drawn this distinction since at least the design of Tcl (1988), and had stated it publicly at various times. An early episode was "The Tcl War" of late September and October 1994, whereRichard Stallman posted an article critical of Tcl, entitled "Why you should not use Tcl",[2] to which Ousterhout replied with an articulation of his dichotomy:[3]
I think that Stallman's objections to Tcl may stem largely from one aspect of Tcl's design that he either doesn't understand or doesn't agree with. This is the proposition that you should use *two* languages for a large software system: one, such as C or C++, for manipulating the complex internal data structures where performance is key, and another, such as Tcl, for writing small-ish scripts that tie together the C pieces and are used for extensions.

CriticismEdit

Many[who?] believe that the dichotomy is highly arbitrary, and refer to it as Ousterhout's fallacyor Ousterhout's false dichotomy.[citation needed]While strong-versus-weak typing, data structure complexity, and independent versus stand-alone might be said to be unrelated features, the usual critique of Ousterhout's dichotomy is of its distinction of compiling versus interpreting, since neither semantics nor syntax depend significantly on whether code is compiled into machine-language, interpreted, tokenized, or byte-compiled at the start of each run, or any mix of these. Many languages fall between being interpreted or compiled (e.g. LispForthUCSD PascalPerl, and Java). This makes compiling versus interpreting a dubious parameter in a taxonomy of programming languages.

Julia languageEdit

Designers of the Julia programming language claim to have solved the "two language problem"[citation needed].


Comments

Popular posts from this blog

CA

Telecommunication

Local aria network