Nord Programming Language: Difference between revisions

From HandWiki
imported>PolicyEnforcerIA
attribution
 
simplify
 
Line 1: Line 1:
'''Nord Programming Language''', commonly abbreviated '''NPL''', was a [[Programming language|programming language]] by the Norwegian [[Minicomputer|minicomputer]] manufacturer [[Company:Norsk Data|Norsk Data]]. It shipped as a standard component of the operating system SINTRAN III.
{{Short description|Procedural programming language}}
{{Infobox programming language
| name = Nord Programming Language
| logo = <!-- Filename only -->
| logo caption =
| screenshot = <!-- Filename only -->
| screenshot caption =
| paradigm = [[Procedural programming|Procedural]], [[Imperative programming|imperative]]
| family =
| designer = <!-- or: | designers = -->
| developer = [[Company:Norsk Data|Norsk Data]]
| released = {{Start date and age|1974}}<!-- If known, add |mm|dd|df=yes -->
| latest release version = Final
| latest release date = <!-- {{Start date and age|198y|mm|dd|df=yes}} -->
| typing = Static, [[Strong and weak typing|strong]]
| scope = [[Scope (computer science)|Lexical]]
| programming language =
| discontinued = Yes
| platform = Norsk Data [[Minicomputer|minicomputer]]s
| operating system = [[Software:Sintran III|Sintran III]]
| license = [[Proprietary software|Proprietary]]
| file ext =
| file format = <!-- or: | file formats = -->
| website = <!-- {{url|www.example.com}} -->
| implementations =
| dialects =
| influenced by =
| influenced =
}}
'''Nord Programming Language''' ('''NPL'''), is a [[Procedural programming|procedural]] [[Programming language|programming language]] by the Norwegian [[Minicomputer|minicomputer]] manufacturer [[Company:Norsk Data|Norsk Data]]. It shipped as a standard component of the [[Operating system|operating system]] [[Software:Sintran III|Sintran III]].


The language was also used to implement SINTRAN III. I.e. the core and file system of SINTRAN III was written in NPL. The NPL compiler was also written in NPL and some core applications was early on written in NPL until [[PLANC]] came and linker and other software was rewritten in PLANC.
The language was also used to implement Sintran III: the core and [[File system|file system]] of which are written in NPL, as was the NPL [[Compiler|compiler]], and some core applications early on, until the release of [[High-level programming language|high-level programming language]] named [[PLANC]]. Then, the [[Linker (computing)|linker]] and other software were rewritten in PLANC.


The NPL compiler was also special in that it did not produce object code as most compilers do. Instead it produced assembler code which then had to be assembled using the [[Software:Norsk Data Assembler|Norsk Data Assembler]].
The NPL compiler was also special in that it did not emit [[Object code|object code]] as most compilers do. Instead it emitted an [[Intermediate representation|intermediate representation]], in the form of [[Assembly language|assembly language]] code, which then had to be assembled using the [[Software:Norsk Data Assembler|Norsk Data Assembler]].


The registers of the CPU were available in NPL as predefined variables. Thus you could write:
The registers of the CPU were available in NPL as predefined [[Variable (computer science)|variables]]. Thus could be written:


  X + T =: A
  X + T =: A


and the compiler would generate:
and the compiler would emit:


  COPY SX DA
  COPY SX DA
  RADD ST DA
  RADD ST DA


Functions could be declared with multiple entry points:
[[Subroutine|Functions]] could be declared with multiple [[Entry point|entry point]]s:


  FUNC FUN1, FUN2
  FUNC FUN1, FUN2
Line 25: Line 54:
  END
  END


FUN1 could be called to set T to 1 before falling into FUN2 or T could be set to something else and call FUN2. If T register specified which file handle to write to then either FUN1 could be called to always output to terminal or T could be specified to handle a file itself in T and call FUN2 to output to that file.
<code>FUN1</code> could be called to set <code>T</code> to <code>1</code> before falling into <code>FUN2</code> or <code>T</code> could be set to something else and call <code>FUN2</code>. If <code>T</code> register specified which file handle to write to, then either <code>FUN1</code> could be called to always output to terminal or <code>T</code> could be specified to handle a file in <code>T</code> and call <code>FUN2</code> to output to that file.


{{Norsk Data}}


[[Category:Procedural programming languages]]
[[Category:Procedural programming languages]]


{{Unreferenced|date=2021}}
{{Sourceattribution|Nord Programming Language}}
{{Sourceattribution|Nord Programming Language}}

Latest revision as of 07:50, 22 May 2026

Short description: Procedural programming language
Nord Programming Language
ParadigmProcedural, imperative
DeveloperNorsk Data
First appeared1974; 52 years ago (1974)
Final release
Final
Typing disciplineStatic, strong
ScopeLexical
PlatformNorsk Data minicomputers
OSSintran III
LicenseProprietary

Nord Programming Language (NPL), is a procedural programming language by the Norwegian minicomputer manufacturer Norsk Data. It shipped as a standard component of the operating system Sintran III.

The language was also used to implement Sintran III: the core and file system of which are written in NPL, as was the NPL compiler, and some core applications early on, until the release of high-level programming language named PLANC. Then, the linker and other software were rewritten in PLANC.

The NPL compiler was also special in that it did not emit object code as most compilers do. Instead it emitted an intermediate representation, in the form of assembly language code, which then had to be assembled using the Norsk Data Assembler.

The registers of the CPU were available in NPL as predefined variables. Thus could be written:

X + T =: A

and the compiler would emit:

COPY SX DA
RADD ST DA

Functions could be declared with multiple entry points:

FUNC FUN1, FUN2

FUN1: T := 1
FUN2:

code here

END

FUN1 could be called to set T to 1 before falling into FUN2 or T could be set to something else and call FUN2. If T register specified which file handle to write to, then either FUN1 could be called to always output to terminal or T could be specified to handle a file in T and call FUN2 to output to that file.