JOWIALNY

JOWIALNY
Paradygmaty Proceduralne , imperatywne , ustrukturyzowane
Rodzina ALGOL
Zaprojektowany przez Korporacja Rozwoju Systemu
Deweloper Współpracownicy inżynierii oprogramowania
Po raz pierwszy pojawiły się 1960 ; 63 lata temu ( 1960 )
Dyscyplina pisania statyczne , mocne , bezpieczne , strukturalne
Zakres Leksykalny
Główne implementacje
MVS , OpenVMS , macOS , Windows , Linux , SPARC , PowerPC , MIL-STD-1750A , inne starsze systemy
Dialekty
J3, J3B-2, J73
Pod wpływem
ALGOL , SAGE
Pod wpływem
CMS-2 , Coral 66 , SYMPL

JOVIAL to język programowania wysokiego poziomu oparty na ALGOL 58 , wyspecjalizowany do tworzenia systemów wbudowanych (wyspecjalizowanych systemów komputerowych zaprojektowanych do wykonywania jednej lub kilku dedykowanych funkcji, zwykle wbudowanych jako część większego, bardziej kompletnego urządzenia, w tym części mechanicznych). Był to główny język programowania systemów w latach sześćdziesiątych i siedemdziesiątych XX wieku.

Historia

Podręcznik programowania komputera dla języka Jovial (J73).

JOVIAL został opracowany jako nowy język programowania „wysokiego rzędu” , począwszy od 1959 roku przez zespół System Development Corporation (SDC) kierowany przez Julesa Schwartza w celu komponowania oprogramowania dla elektroniki samolotów wojskowych.

Nazwa JOVIAL jest skrótem od Jules' Own Version of the International Algebraic Language ; International Algorithmic Language (IAL) to nazwa zaproponowana pierwotnie dla ALGOL 58 . Według Schwartza język pierwotnie nosił nazwę OVIAL , ale sprzeciwiano się temu z różnych powodów. Następnie zasugerowano JOVIAL , bez żadnego znaczenia przypisywanego J. Nieco żartobliwie zasugerowano, aby język został nazwany na cześć Schwartza, ponieważ był on przewodniczącym spotkania , i ta nieoficjalna nazwa utknęła.

W latach sześćdziesiątych JOVIAL był częścią amerykańskiej wojskowej serii L-projektów , w szczególności ITT 465L Strategic Air Command Control System ( projekt Strategiczny Automatyczny System Dowodzenia i Kontroli (SACCS)), ze względu na brak programowania komputerowego w czasie rzeczywistym dostępne języki. Około 95 procent projektu SACCS, zarządzanego przez International Telephone & Telegraph (ITT) z oprogramowaniem napisanym głównie przez SDC, zostało napisanych w JOVIAL. Projekt oprogramowania trwał dwa lata i mniej niż 1400 lat programowania, czyli mniej niż połowę równoważnego czasu w SAGE Projekt L.

Przypnij przycisk przedstawiający JOVIAL jako jeden z języków, dla których firma Advanced Computer Techniques stworzyła kompilatory krzyżowe

W późnych latach siedemdziesiątych i wczesnych osiemdziesiątych Siły Powietrzne Stanów Zjednoczonych przyjęły znormalizowaną jednostkę centralną (CPU), MIL-STD-1750A , a kolejne programy JOVIAL zostały zbudowane dla tego procesora. Kilku komercyjnych dostawców dostarczyło kompilatory i powiązane narzędzia programistyczne do budowy JOVIAL dla procesorów, takich jak MIL-STD-1750A, w tym Advanced Computer Techniques (ACT), TLD Systems , Proprietary Software Systems (PSS) i inne.

JOVIAL został znormalizowany w 1973 roku z MIL-STD-1589 i został poprawiony w 1984 z MIL-STD-1589C . Nadal jest używany do aktualizacji i konserwacji oprogramowania starszych pojazdów wojskowych i samolotów. W powszechnym użyciu są trzy dialekty: J3, J3B-2 i J73.

Od 2010 roku JOVIAL nie jest już utrzymywany i dystrybuowany przez Biuro Programowe USAF JOVIAL (JPO). Oprogramowanie wcześniej dystrybuowane przez JPO jest nadal dostępne za pośrednictwem zasobów komercyjnych w Software Engineering Associates, Inc., (SEA), podobnie jak inne kombinacje procesorów host/docelowych, w tym Windows , Linux , Mac OS X na PowerPC , SPARC , VAX , 1750A , PowerPC , TI-9989 , Zilog Z800x , Motorola 680x0 i IBM System 360 , System 370 i System z . Ponadto DDC-I , która nabyła części Advanced Computer Techniques, wymienia również kompilatory JOVIAL i powiązane narzędzia według stanu na kwiecień 2020 r.

Większość oprogramowania zaimplementowanego w JOVIAL ma krytyczne znaczenie dla misji , a konserwacja staje się coraz trudniejsza. W grudniu 2014 roku zgłoszono, że oprogramowanie wywodzące się z kodu JOVIAL wyprodukowanego w latach 60. XX wieku było zaangażowane w poważną awarię infrastruktury kontroli ruchu lotniczego w Wielkiej Brytanii , a agencja, która go używa, NATS Holdings , musiała szkolić swoich IT w JOVIAL, aby mogli utrzymywać to oprogramowanie, którego wymiana była planowana dopiero w 2016 roku.

Wpływ

Języki, na które wpłynął JOVIAL, to CORAL , SYMPL , Space Programming Language (SPL) i do pewnego stopnia CMS-2 . Interaktywny podzbiór JOVIAL o nazwie TINT, podobny do JOSS , został opracowany w latach sześćdziesiątych.

Cechy

JOVIAL zawiera funkcje, których nie ma w standardowym ALGOL-u, takie jak elementy (obecnie nazywane strukturami ), tablice elementów, zmienne statusu (obecnie nazywane wyliczeniami ) i wbudowany język asemblera .

Zawierał również przepisy dotyczące „pakowanych” danych w tabelach. Pakowanie tabel odnosi się do przydzielania pozycji we wpisie do słów pamięci (bitów w jednostce danych). Było to ważne ze względu na ograniczoną pamięć i pamięć masową systemów komputerowych ery JOVIAL.

Pula komunikacyjna (COMPOOL) w Jovial jest podobna do bibliotek plików nagłówkowych dla języków takich jak PL/I i C.

Aplikacje

Godne uwagi systemy wykorzystujące wbudowane oprogramowanie JOVIAL obejmują:

Przykład

Poniższy przykład pochodzi z Podręcznika programowania komputerów dla języka JOVIAL (J73).

PROC POBIERZ(KOD:WARTOŚĆ); KOD POZYCJI POCZĄTKOWEJ U; POZYCJA WARTOŚĆ F; WARTOŚĆ = -99999.; DLA I:0 O 1 GDY I<1000; KOD JEŚLI = KOD TAB.(I); WARTOŚĆ POCZĄTKOWA = WARTOŚĆ TAB.(I); WYJŚCIE; KONIEC KONIEC

W tym przykładzie zdefiniowano procedurę o nazwie RETRIEVE , która pobiera argument wejściowy będący liczbą całkowitą bez znaku KOD i argument wyjściowy zmiennoprzecinkowy WARTOŚĆ . Przeszukuje 1000-elementową tablicę TABCODE w poszukiwaniu wpisu pasującego do KODU , a następnie ustawia zmienną zmiennoprzecinkową WARTOŚĆ na element tablicy WARTOŚĆTAB, mający ten sam pasujący indeks tablicy. Jeśli nie zostanie znaleziony pasujący element, WARTOŚĆ jest ustawiana na −99999.0 .

Linki zewnętrzne