Web Analytics
Privacy Policy Cookie Policy Terms and Conditions PL/I - Wikipedia

PL/I

Da Wikipedia, l'enciclopedia libera.

PL/I, (Programming Language One) è un linguaggio di programmazione progettato nel 1964 per lo sviluppo di applicazioni scientifiche, ingegneristiche o commerciali (il suo principale campo di applicazione è il data processing). La sintassi del linguaggio rispecchia quella della lingua inglese ed è pensata per poter descrivere e manipolare strutture dati complesse, il PL/I possiede infatti un corredo molto ampio di funzioni: i compilatori PL/I sono spesso dei sub-set del linguaggio, indirizzati a specifici settori applicativi. Il PL/I supporta la ricorsione e la programmazione strutturata.

Indice

[modifica] Storia

Il PL/I è stato sviluppato dall'IBM all'interno del progetto dei sistemi 360 (S/360): una famiglia di computer compatibili fra di loro che avrebbero dovuto soppiantare i computer sviluppati in precedenza, molto diversi ed incompatibili fra di loro. I nuovi modelli avrebbero dovuto essere utilizzabili sia in campo scientifico che per applicazioni commerciali. Lo scopo del PL/I era appunto quello di creare un linguaggio unico che potesse essere utilizzato in entrambi gli ambiti (all'epoca la maggior parte delle applicazioni scientifiche usava il Fortran, mentre il COBOL era utilizzato per le applicazioni commerciali). Un altro obiettivo era quello di creare un linguaggio che possedesse i costrutti di programmazione strutturata, derivati dall'ALGOL, che né il Fortran né il COBOL possedevano. Il PL/I fu progettato, nel corso di alcuni mesi, da un comitato costituito da programmatori dell'IBM e da utenti provenienti dagli USA. L'obiettivo principale era quello di avere il PL/I disponibile in concomitanza col lancio degli S/360, ma sfortunatamente ciò non fu possibile.

Originariamente il nome del linguaggio avrebbe dovuto essere NPL (New Programming Language), ma l'acronimo era già utilizzato dal National Physical Laboratory in Inghilterra, e pertanto si scelse PL/I in sostituzione.

Il PL/I non ottenne il successo sperato per vari motivi, il maggiore di quali fu probabilmente la sua complessità che rese molto difficile una sua rapida implementazione. La complessità derivava probabilmente dal fatto che la sua progettazione era opera di un comitato che desiderava soddisfare le esigenze di un pubblico molto eterogeneo. Inoltre, il PL/I possedeva caratteristiche molto sofisticate ma che venivano usate raramente (ad esempio il multithreading), le quali aggiungevano il loro carico di complessità e costi ai compilatori. La complessità del compilatore fu probabilmente uno dei fattori che furono sottovalutati in fase di definizione del linguaggio. L'ottimizzazione del codice ottenuto era molto difficoltosa a causa della necessità di poter modificare le variabili in modo asincrono, rendendo difficile prevedere come una determinata variabile sarebbe stata modificata a run-time.

L'inerente complessità, il ritardo nell'implementazione, la scarsa qualità dei primi compilatori PL/I scoraggiarono gli utenti che si rivolsero al COBOL o al Fortran. Un altro grosso problema fu che, all'epoca, i programmatori Fortran, anziché guardare ai vantaggi che il PL/I poteva offrire loro, continuarono a considerarlo un linguaggio per applicazioni commerciali. Ironicamente i programatori COBOL considerarono il PL/I un linguaggio per applicazioni scientifiche.

Nonostante ciò, il PL/I venne comunque utilizzato: il progetto Multics, uno dei primi tentativi di sviluppare un sistema operativo in un linguaggio ad alto livello, utilizzava il PL/I. Un sottoinsieme del PL/I, il PL/M, fu utilizzato per scrivere il CP/M, mentre il dialetto XPL fu utilizzato per scrivere HAL/S, utilizzato sullo Space Shuttle. Un compilatore sviluppato dalla Cornell University per insegnare un dialetto del PL/I, il PL/C, aveva l'interessante caratteristica di non generare mai errori durante la compilazione di un programma: molti errori di sintassi venivano corretti automaticamente, mentre i rimanenti venivano semplicemente convertiti in istruzioni di stampa sullo schermo. Il primo sistema di prenotazione voli online (SABRE) fu scritto (o almeno si suppone sia stato scritto) in PL/I.

Il PL/I fu probabilmente il primo linguaggio "commerciale" dove il compilatore fu scritto nel linguaggio da compilare (il linguaggio sperimentale NELIAC fu il primo con questa caratteristica, cinque anni prima del PL/I, e molti altri seguirono).

Il PL/I è stato maggiormente usato nei mainframe IBM, ma ne esistono versioni per Microsoft Windows, AIX, OpenVMS, e Unix.

[modifica] Programma di esempio

[modifica] Hello, world!

Il seguente esempio stampa il testo "Hello world".

Test: procedure options(main);

   declare My_String char(20) varying initialize('Hello, world!');
   
   put skip list(My_String);
   
end Test;

[modifica] Standard

nel 1987 ANSI ha pubblicato

ANSI X3.74-1987 (R1998) Title: Information Systems - Programming Language - PL/I General-Purpose Subset

[modifica] Voci correlate

Principali linguaggi di programmazione (tutti)

Ada | ALGOL | APL | Awk | BASIC | C | C++ | C# | COBOL | Delphi | Eiffel | Fortran | Haskell | IDL | Java | JavaScript | J# | Lisp | LOGO | ML | Objective C | O'Caml | Pascal | Perl | PHP | PL/I | PLaSM | Prolog | Python | Ruby | SAS | Scheme | sh | Simula | Smalltalk | SQL | Visual Basic

THIS WEB:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2006:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu