PL/M: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
m Collegamenti esterni: clean up, replaced: IDEIDE
 
(18 versioni intermedie di 14 utenti non mostrate)
Riga 1:
{{Linguaggio di programmazione
{{WIP|Leo72}}
|immagine =
Il '''PL/M''' ([[acronimo]] di '''''P'''rogramming '''L'''anguage for '''M'''icrocomputers'') è un [[linguaggio di programmazione ad alto livello]] creato da [[Gary Kildall]] nel [[1972]] per i [[microprocessore|microprocessori]] [[Intel]] [[Intel 8080|8080]]<ref name="swaine">{{cita pubblicazione|nome=Michael|cognome=Swaine|data=22/06/2001|titolo=Gary Kildall and Collegial Entrepreneurship|rivista=Dr. Dobb's Journal|url=http://www.ddj.com/184410428|accesso=2006-11-20}}</ref>. Il PL/M non è più supportato da Intel ma esistono comunque in circolazione dei traduttori da PL/M a [[C (linguaggio)|C]].
|didascalia =
|versione =
|utilizzo =
|tipizzazione =
|specifiche =
|estensione =
|ha_influenzato =
|implementazione_riferimento =
|sistema_operativo =
|lingua =
|licenza =
|sito_web =
}}
Il '''PL/M''' (sigla di '''''P'''rogramming '''L'''anguage for '''M'''icrocomputers'') è un [[linguaggio di programmazione ad alto livello]] creato da [[Gary Kildall]] nel [[1972]] per i [[microprocessore|microprocessori]] [[Intel]]<ref name="swaine">{{cita pubblicazione|nome=Michael|cognome=Swaine|data=22/06/2001|titolo=Gary Kildall and Collegial Entrepreneurship|rivista=Dr. Dobb's Journal|url=http://www.drdobbs.com/184410428;jsessionid=TMPFOC1SMKZGPQE1GHRSKHWATMY32JVN|accesso=19/09/2010}}</ref>. Il PL/M non è più supportato da Intel ma esistono comunque in circolazione dei traduttori da PL/M a [[C (linguaggio)|C]].
 
==Caratteristiche==
Il PL/M incorporava concetti ripresi da preesistenti linguaggi quali il [[PL/I]], l'[[ALGOL]] e l'[[XPL (linguaggio di programmazione)|XPL]], ed integrava un [[macroMacro (informatica)|esecutore di macro]]. A differenza di altri linguaggi contemporanei come il [[Pascal (linguaggio di programmazione)|Pascal]], il [[C (linguaggio)|C]] o il [[BASIC]], il PL/M non aveva [[funzione (informatica)|funzioni standard]] per la gestione dell'[[input/output]]. Includeva delle funzionalità scritte per accedere a basso livello all'[[hardware]] dei processori a cui si rivolgeva e, per tale motivo, supportava in maniera molto efficiente l'accesso diretto a qualsiasi [[memoria (informatica)|locazione di memoria]], alle [[porta (informatica)|porte di I/O]] ed ai [[flag]] degli [[interrupt]] del processore.
 
Il PL/M è stato il linguaggio con il quale Kildall ha scritto il [[sistema operativo]] [[CP/M]]; è stato usato anche per scrivere il [[firmware]] dell'[[IBM System i|AS/400 (CISC)]].<!- I [[compilatore|compilatori]] PL/M sono stati resi disponibili per diverse piattaforme: [[Intel 4004]], [[Intel 8008|8008]], [[Intel 8080|8080]], [[Intel 8085|8085]], [[Intel 8051|8051, 8052]], 8096, 80196, [[Intel 8086|8086/8088]], [[Intel 80186|80186/80188]], [[Intel 80286|286]] e [[Intel 80386|386]]. Mentre alcuni di essi erano "nativi", vale a dire che giravano su sistemi che usavano lo stesso microprocessore (ad esempio per il sistema operativo Intel ''ISIS''), c'erano anche dei "cross compiler", che giravano cioè su altri ambienti come il [[MS-DOS|DOS]] di [[Microsoft]] o il [[OpenVMS|VAX/VMS]] di ''Equipment Corporation''.
 
==Esempio di codice==
PL/M was the original implementation language for the [[CP/M]] operating system. Also the [[firmware]] of the Service Processor component of CISC [[AS400|AS/400]] was written in PL/M. PL/M [[compiler]]s have been made for the following processors/controllers: [[Intel 4004]], [[Intel 8008|8008]], [[Intel 8080|8080]], [[Intel 8085|8085]], [[Intel 8051|8051, 8052]], 8096, 80196, [[Intel 8086|8086/8088]], [[Intel 80186|80186/80188]], [[Intel 80286|286]], and [[Intel 80386|386]]. While some PL/M compilers were "native", meaning that they ran on systems using that same microprocessor, e.g. for the Intel [[ISIS (operating system)|ISIS]] operating system, there were also "cross compilers" which ran on other operating environments such as Microsoft's [[DOS]], and Digital Equipment Corporation's [[OpenVMS|VAX/VMS]].
FIND: PROCEDURE(PA,PB) BYTE;
DECLARE (PA,PB) BYTE;
/* FIND THE STRING IN SCRATCH STARTING AT PA AND ENDING AT PB */
DECLARE J ADDRESS,
(K, MATCH) BYTE;
J = BACK ;
MATCH = FALSE;
DO WHILE NOT MATCH AND (MAXM > J);
LAST,J = J + 1; /* START SCAN AT J */
K = PA ; /* ATTEMPT STRING MATCH AT K */
DO WHILE SCRATCH(K) = MEMORY(LAST) AND
NOT (MATCH := K = PB);
/* MATCHED ONE MORE CHARACTER */
K = K + 1; LAST = LAST + 1;
END;
END;
IF MATCH THEN /* MOVE STORAGE */
DO; LAST = LAST - 1; CALL MOVER;
END;
RETURN MATCH;
END FIND;
 
==Note==
<references/>
 
==Bibliografia==
* Intel Corporation: ''PL/M-80 Programming Manual'' ([[1976]]) Doc. nº 98-268B
* Daniel D. McCracken: ''A Guide to PL/M Programming for Microcomputer Applications'' ([[1978]]) - Pearson Addison-Wesley
 
==Collegamenti esterni==
'''PL/M Sample code:'''
 
* {{Collegamenti esterni}}
<code>
* [http://www.slac.stanford.edu/grp/cd/soft/rmx/manuals/PLM_386.PDF ''PL/M 386 Programmer's Guide''] {{pdf}} – RadiSys Corporation, dicembre 1999. Include la sintassi completa del PL/M in notazione [[Backus-Naur Form|BNF]]. Disponibile anche su [https://web.archive.org/web/20060814050742/http://www.slac.stanford.edu/grp/cd/soft/rmx/manuals/PLM_386.PDF ''Archive.org''].
 
* [https://web.archive.org/web/20110516200821/http://www.ristancase.com/da-plm/index.php Development Assistant for PL/M (DA-PL/M)] – [[Ambiente di sviluppo integrato|IDE]] commerciale per PL/M sviluppapta da RistanCASE GmbH
FIND: PROCEDURE(PA,PB) BYTE;
* [http://www.plm2c.com/ PLM2C - PL/M to C Translator] – Traduttore commerciale PL/M->C di Alternative Solutions
DECLARE (PA,PB) BYTE;
* [https://web.archive.org/web/20100914184007/http://www.pennington.com/plmcee.htm XTRAN Demonstration: Translating PL/M to C] – Traduttore commerciale PL/M->C di Pennington Systems, Inc.
/* FIND THE STRING IN SCRATCH STARTING AT PA AND ENDING AT PB */
DECLARE J ADDRESS,
(K, MATCH) BYTE;
J = BACK ;
MATCH = FALSE;
DO WHILE NOT MATCH AND (MAXM > J);
LAST,J = J + 1; /* START SCAN AT J */
K = PA ; /* ATTEMPT STRING MATCH AT K */
DO WHILE SCRATCH(K) = MEMORY(LAST) AND
NOT (MATCH := K = PB);
/* MATCHED ONE MORE CHARACTER */
K = K + 1; LAST = LAST + 1;
END;
END;
IF MATCH THEN /* MOVE STORAGE */
DO; LAST = LAST - 1; CALL MOVER;
END;
RETURN MATCH;
END FIND;
</code>
 
==Notes==
{{reflist}}
 
==References==
*Intel Corporation (1976). ''PL/M-80 Programming Manual''. Doc # 98-268B.
*McCracken, Daniel D. (1978). ''A Guide to PL/M Programming for Microcomputer Applications''. Pearson Addison-Wesley.
 
==External links==
*[http://www.slac.stanford.edu/grp/cd/soft/rmx/manuals/PLM_386.PDF ''PL/M 386 Programmer’s Guide''] ([[Portable Document Format|PDF]]) &ndash; RadiSys Corporation, December 1999. Includes entire syntax of PL/M in [[Backus-Naur Form|BNF]] notation. Also available on [http://web.archive.org/web/20060814050742/http://www.slac.stanford.edu/grp/cd/soft/rmx/manuals/PLM_386.PDF ''Archive.org''].
*[http://www.ristancase.com/da-plm/index.php Development Assistant for PL/M (DA-PL/M)] &ndash; Commercial PL/M [[integrated development environment|IDE]] from RistanCASE GmbH
*[http://www.plm2c.com/ PLM2C - PL/M to C Translator] &ndash; Commercial product from Alternative Solutions
*[http://www.pennington.com/plmcee.htm XTRAN Demonstration: Translating PL/M to C] &ndash; Commercial product from Pennington Systems, Inc.
 
{{compu-lang-stub}}
{{FOLDOC}}
-->
==Note==
<references/>
 
{{Controllo di autorità}}
[[Categoria:Linguaggi di programmazione]]
 
[[Categoria:Linguaggi di programmazione procedurali]]
[[ca:PL/M]]
[[Categoria:Linguaggi di programmazione strutturati]]
[[cs:PL/M]]
[[en:PL/M]]
[[fr:PL/M]]
[[nl:PL/M]]
[[pl:PL/M]]
[[ru:PL/M]]
[[tg:PL/M]]