PLEX (Programming Language for EXchanges) is a special-purpose, concurrent, real-time
programming language
A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language.
The description of a programming ...
. The proprietary PLEX language is closely tied to the architecture of Ericsson's
AXE telephone exchange
The AXE telephone exchange is a product line of circuit switched digital telephone exchanges manufactured by Ericsson, a Swedish telecom company. It was developed in 1974 by Ellemtel, a research and development subsidiary of Ericsson and Tele ...
s which it was designed to control. PLEX was developed by Göran Hemdahl at
Ericsson
(lit. "Telephone Stock Company of LM Ericsson"), commonly known as Ericsson, is a Swedish multinational networking and telecommunications company headquartered in Stockholm. The company sells infrastructure, software, and services in informat ...
in the 1970s,
[ and it has been continuously evolving since then.] PLEX was described in 2008 as "a cross between Fortran and a macro assembler
Macro (or MACRO) may refer to:
Science and technology
* Macroscopic, subjects visible to the eye
* Macro photography, a type of close-up photography
* Image macro, a picture with text superimposed
* Monopole, Astrophysics and Cosmic Ray Observato ...
."
The language has two variants: ''Plex-C'' used for the AXE Central Processor (CP) and ''Plex-M'' used for Extension Module Regional Processors (EMRP).
Ericsson started a project in the mid-1980s to create a successor language which resulted in Erlang. According to co-creator Joe Armstrong, "Erlang was heavily influenced by PLEX and the AXE design."[ Erlang did not replace PLEX, but was used alongside it.
]
Execution model
A system is divided into separately compiled and loaded units of code called "blocks." A block waits for one or more signals sent from elsewhere in the system which triggers code execution.[
]
Pre-compilers
Several precompiler
In computer science, a preprocessor (or precompiler) is a program that processes its input data to produce output that is used as input in another program. The output is said to be a preprocessed form of the input data, which is often used by s ...
s or code generators exist, to produce source code
In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the wo ...
in ''Plex-C'' from higher level
In the Scottish secondary education system, the Higher () is one of the national school-leaving certificate exams and university entrance qualifications of the Scottish Qualifications Certificate (SQC) offered by the Scottish Qualifications ...
languages or graphical models. These can generate ''Plex-C'' from:
* Specification and Description Language Specification and Description Language (SDL) is a specification language targeted at the unambiguous specification and description of the behaviour of reactive and distributed systems.
Overview
The ITU-T has defined SDL in Recommendations Z.100 t ...
graphical representation (SDL/GR)
* ''Plex-SQL'', an extension of ''Plex-C'' with database
In computing, a database is an organized collection of data stored and accessed electronically. Small databases can be stored on a file system, while large databases are hosted on computer clusters or cloud storage. The design of databases sp ...
facilities
* ''High Level Plex'' (HLPLEX) another extension of ''Plex-C''
Source code in ''Plex-C'' is compiled into the assembly language ''ASA210C.'' The binary form of ''ASA210C'' is either interpreted by a combination of hardware and microcode
In processor design, microcode (μcode) is a technique that interposes a layer of computer organization between the central processing unit (CPU) hardware and the programmer-visible instruction set architecture of a computer. Microcode is a laye ...
, or is compiled by a just-in-time compiler
In computing, just-in-time (JIT) compilation (also dynamic translation or run-time compilations) is a way of executing computer code that involves compilation during execution of a program (at run time) rather than before execution. This may cons ...
into native machine code
In computer programming, machine code is any low-level programming language, consisting of machine language instructions, which are used to control a computer's central processing unit (CPU). Each instruction causes the CPU to perform a very ...
for a high-capacity microprocessor
A microprocessor is a computer processor where the data processing logic and control is included on a single integrated circuit, or a small number of integrated circuits. The microprocessor contains the arithmetic, logic, and control circu ...
.
References
Concurrent programming languages
Domain-specific programming languages
Ericsson
Programming languages created in the 1970s
{{Compu-lang-stub