JOVIAL

JOVIAL este un limbaj de programare  de nivel înalt similar cu ALGOL , specializat în dezvoltarea de sisteme embedded .

Istorie

JOVIAL a fost dezvoltat în 1959 ca un nou limbaj de programare „de înaltă calitate” de către echipa System Development Corporation (SDC) condusă de Jules Schwartz pentru a crea software pentru electronica aeronavelor militare [1] . Numele JOVIAL este un acronim pentru versiunea proprie a limbii a lgebrice internaționale a lui Jules . Potrivit lui Schwartz, limba a fost inițial numită OVIAL, dar acel nume a fost respins din diferite motive. Apoi a fost propus denumirea „JOVIAL”, fără nicio semnificație a literei „J” (în engleză. , fr. , spaniolă etc. jovial „vesel; bine dispus"). S-a sugerat în glumă că limba poartă numele lui Schwartz, în timp ce el a prezidat întâlnirea, iar acest nume informal a luat stăpânire în cele din urmă. [2]

În anii 1960, JOVIAL a făcut parte dintr-o serie de proiecte militare americane, în special 465L (proiectul SACCS ) din cauza lipsei de limbaje de procesare în timp real disponibile. Aproximativ 95% din software-ul SACCS a fost scris în JOVIAL. [3]

La sfârșitul anilor 1970 și începutul anilor 1980, US Air Force a adoptat procesorul standardizat MIL-STD-1750A , iar programele au fost scrise în JOVIAL pentru acest procesor. Pentru astfel de procesoare, mai multe companii comerciale au dezvoltat compilatoare și instrumente de dezvoltare JOVIAL aferente ( Advanced Computer Techniques , TLD Systems , Proprietary Software Systems și altele). [4] [5]

JOVIAL a fost standardizat în 1973 ca MIL-STD- 1589 ; dezvoltarea limbajului a fost documentată în 1984 în MIL-STD-1589C . Limbajul este încă utilizat pe scară largă pentru actualizarea și întreținerea software-ului pe vehicule și aeronave militare mai vechi. Există trei dialecte: J3, J3B-2 și J73.

Din 2010, JOVIAL nu mai este susținut sau distribuit de către USAF JOVIAL Program Office (JPO). Software-ul distribuit anterior de JPO este încă disponibil prin resursele comerciale ale Software Engineering Associates, Inc. (SEA), precum și alte procesoare gazdă, inclusiv Microsoft Windows , Linux , Mac OS X pe PowerPC , SPARC , VAX , 1750A , PowerPC , TI- 9989 , Zilog Z800x , Motorola 680x0 și IBM System 360 / System 370 / System z . De asemenea, DDC-I , care a achiziționat părți din Advanced Computer Techniques , afișează în continuare compilatoarele JOVIAL și instrumentele aferente. [6]

Majoritatea programelor implementate pe JOVIAL sunt esențiale pentru misiune și devin din ce în ce mai greu de întreținut. În decembrie 2014, s-a raportat că software-ul care folosea JOVIAL, lansat în anii 1960, era legat de o defecțiune majoră a infrastructurii de control al traficului aerian din Regatul Unit și că agenția care îl folosea a trebuit să-și instruiască personalul IT în programarea JOVIAL, astfel încât ar putea funcționa cu acest software, care nu este planificat să fie înlocuit până în 2016. [7] Prin urmare, conversia codului JOVIAL pe noi platforme devine din ce în ce mai comună. Conversia JOVIAL în alte limbi se face în prezent de către Semantic Designs , DMS Software Reengineering Toolkit a fost folosit pentru a converti unele programe JOVIAL pentru bombardierul B -2 în C. [opt]

Influență

Potrivit lui Schwartz, JOVIAL a fost influențat de limbaje de programare precum CORAL , SYMPL , Space Programming Language (SPL) și, într-o oarecare măsură, CMS-2 . [9] Un subset interactiv al JOVIAL numit TINT , similar cu JOSS , a fost dezvoltat în anii 1960. [2]

Caracteristici

JOVIAL include caracteristici care nu se găsesc în ALGOL standard, cum ar fi înregistrări, matrice de înregistrări și limbaj de asamblare inline. [zece]

Exemplu

Următorul exemplu este preluat din Ghidul de programare JOVIAL (J73). [unsprezece]

PROC RETRIEVE(COD:VALOARE); ÎNCEPE COD ARTICOL U; VALOAREA ARTICOLULUI F; VALOARE = ​​-99999.; PENTRU I:0 PENTRU 1 TIMP I<1000; IF CODE = TABCODE(I); ÎNCEPE VALOARE = ​​TABVALUE(I); IEȘIRE; Sfârşit Sfârşit

Acest exemplu definește o procedură numită RETRIEVEcare ia CODEun argument întreg fără semn și un argument de ieșire în virgulă mobilă VALUE . Acesta caută în matricea de 1000 de elemente TABCODEo intrare care se potrivește CODEși apoi setează VALUEvariabila în virgulă mobilă la elementul matricei TABVALUEcare are același index de matrice corespondent. Dacă nu se găsește niciun element care se potrivește, valoarea VALUEeste -99999.0.

Note

  1. Interviu de istorie orală cu Jules I. Schwartz .
  2. ↑ 1 2 Jules I. Schwartz. Dezvoltarea notificărilor Jovial  //  ACM SIGPLAN. - 1978. - 8 septembrie ( vol. 13 , nr. 8 ). — P. 203 . Arhivat din original pe 5 noiembrie 2018.
  3. Martin Campbell-Kelly. De la rezervările la companii aeriene la Sonic the Hedgehog: o istorie a industriei software  //  Cambridge Mass: The MIT Press. - 2003. - ISSN 0-262-03303-8 .
  4. Interviu de istorie orală cu Oscar Schachter  //  Institutul Charles Babbage. — P. 17 .
  5. Instrumente de asistență software JOVIAL (J73) și MIL-STD-1750A ISA // Buletin informativ Ada–JOVIAL. - 1993 9. - S. 21-24 .
  6. Mature Development Systems, Field Proven on Hundres of Applications // DDC-I.
  7. Gordon Rayner. Haosul zborurilor din Marea Britanie: calculatoare de control al traficului aerian folosind software din anii 1960  //  Daily Telegraph. - 2016. - 12 decembrie. Arhivat din original pe 3 iulie 2018.
  8. Proiecte semantice. Semantic Designs se aliniază cu Northrop Grumman pentru a moderniza  sistemele software B-2 Spirit Bomber . Arhivat din original pe 9 septembrie 2018.
  9. Marina SUA. Noțiuni de bază ale computerului digital Rate Manual de instruire // NAVEDTRA 10088-B. — 1978.
  10. Wolfgang A. Halang, Alexander D. Stoyenko. Construirea sistemelor predictibile în timp real  //  Springer Verlag. - 1991. - P. 31 . — ISSN 978-1-4615-4032-8 .
  11. Softtech, Inc. MANUAL DE PROGRAMARE CALCULATORULUI PENTRU LIMBA JOVIAL (J73)  // CENTRUL DE DEZVOLTARE AERIANĂ ROMA. - 1981. - Iunie. - S. 12 . Arhivat din original la 1 martie 2017.