PLEX (programming language): Difference between revisions

Content deleted Content added
box
Correction of spelling errors
 
(37 intermediate revisions by 22 users not shown)
Line 4:
| caption =
| file ext =
| paradigm = [[procedural programming|procedural]], [[imperative programming|imperative]], concurrent
| released = 1970s
| designer =
Line 16:
| dialects = Plex-C, Plex-M
| influenced by =
| influenced = [[Erlang (programming language)|Erlang]]
| programming language =
| operating system = Ericsson APZ
| license = [[Proprietary software|Proprietary]]
| website =
| wikibooks =
}}
 
[[Image:Mobile Switching Centre-Ericsson AXE.jpg|thumb|Ericsson AXE]]
'''PLEX''' (''Programming Language for EXchanges'') is a special-purpose, pseudo-parallel and event-driven real-time [[programming language]]. Dedicated for [[AXE telephone exchange|AXE telephone exchanges]], it was developed by Göran Hemdahl at [[Ericsson]].<ref name=ErlangHistory>{{cite web |url= http://www.cs.chalmers.se/Cs/Grundutb/Kurser/ppxt/HT2007/general/languages/armstrong-erlang_history.pdf|title= A History of Erlang|accessdate=2009-03-07 |author= Joe Armstrong|date= |work= |publisher=Ericsson AB}}</ref> Originally designed in the [[1970s]], it has been continuously evolving since then.<ref name=Semantics>{{cite web |url= http://cdc.ioc.ee/appsem04/webproc/short/erikson-lisper.pdf|title= A Formal Semantics for PLEX|accessdate=2009-03-07 |author= Johan Erikson and Björn Lisper|date= |work= |publisher=Mälardalen University}}</ref> The language has two variants: ''Plex-C'' used for AXE Central Processors (CP) and ''Plex-M'' used for Extension Module Regional Processors (EMRP).<ref name=Execution>{{cite web |url= http://www.mrtc.mdh.se/publications/0802.pdf|title= The Execution Model of APZ/PLEX - An Informal Description|accessdate=2009-03-07 |author= Johan Erikson and Bo Lindell|date= |work= |publisher=Mälardalen University}}</ref>
 
'''PLEX''' (Programming Language for EXchanges) is a special-purpose, concurrent, real-time [[programming language]]. The proprietary PLEX language is closely tied to the architecture of Ericsson's [[AXE telephone exchange]]s which it was designed to control. PLEX was developed by Göran Hemdahl at [[Ericsson]] in the 1970s,<ref name=ErlangHistory/> and it has been continuously evolving since then.<ref name=Semantics>{{cite web |url= http://cdc.ioc.ee/appsem04/webproc/short/erikson-lisper.pdf|title= A Formal Semantics for PLEX|accessdate=2009-03-07 |author= Johan Erikson and Björn Lisper|date= |publisher=Mälardalen University}}</ref> PLEX was described in 2008 as "a cross between [[Fortran]] and a [[Assembly_language#Macros|macro assembler]]."<ref>{{cite web|last1=Hague|first1=James|title=My Road to Erlang|url=https://prog21.dadgum.com/22.html|website=Programming in the 21st Century}}</ref>
Program in PLEX consists of several independent subprograms. Code execution is triggered by special events, encoded as signals.<ref name=Execution/>
 
The language has two variants: ''Plex-C'' used for the AXE Central Processor (CP) and ''Plex-M'' used for Extension Module Regional Processors (EMRP).<ref name=Execution>{{cite web|url= http://www.mrtc.mdh.se/publications/0802.pdf|title= The Execution Model of APZ/PLEX - An Informal Description|accessdate= 2009-03-07|author= Johan Erikson and Bo Lindell|date= |publisher= Mälardalen University|archive-date= 2009-09-04|archive-url= https://web.archive.org/web/20090904215757/http://www.mrtc.mdh.se/publications/0802.pdf|url-status= dead}}</ref>
== Notes ==
{{reflist|2}}
 
Ericsson started a project in the mid-1980s to create a successor language, which resulted in [[Erlang (programming language)|Erlang]]. According to co-creator [[Joe Armstrong (programmer)|Joe Armstrong]], "Erlang was heavily influenced by PLEX and the AXE design."<ref name=ErlangHistory/> 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.<ref name=Execution/>
 
==Pre-compilers==
{{Unreferenced section|date=February 2020}}
 
Several [[precompiler]]s or code generators exist, to produce [[source code]] in ''Plex-C'' from [[High-level programming language|higher level]] languages or graphical models. These can generate ''Plex-C'' from:
 
* [[Specification and Description Language]] graphical representation (SDL/GR)
* ''Plex-SQL'', an extension of ''Plex-C'' with [[database]] 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]], or is compiled by a [[Just-in-time compilation|just-in-time compiler]] into native [[machine code]] for a high-capacity [[microprocessor]].
 
==References==
{{Reflist|refs=
<ref name=ErlangHistory>{{cite book |doi=10.1145/1238844.1238850 |chapter=A history of Erlang|title=Proceedings of the third ACM SIGPLAN conference on History of programming languages |year=2007 |last1=Armstrong |first1=Joe |isbn=9781595937667 |s2cid=555765 }}</ref>
}}
 
{{DEFAULTSORT:Plex (Programming Language)}}
[[Category:Concurrent programming languages]]
[[Category:Domain-specific programming languages]]
[[Category:Ericsson]]
[[Category:Programming languages created in the 1970s]]
 
{{Compu-lang-stub}}
 
[[pl:PLEX]]
[[sv:PLEX]]