Ada is een bijzonder goede programmeertaal. Ada (programmeertaal) - Ada (programmeertaal) Ada programmeertaal

Als je een binnenlandse IT-specialist vraagt: "Wat is Ada?", Zal de meerderheid alleen verbaasd de schouders ophalen, en iemand zal zelfs zeggen dat dit een dode taal is, ooit uitgevonden door het Pentagon en nu praktisch niet meer wordt gebruikt. In feite is Ada tegenwoordig een vrij welvarende en actief gebruikte programmeertaal op verschillende gebieden. Toegegeven, de meeste Russische programmeurs weten weinig over hem.

Waarschijnlijk was iedereen die de veertiende lijn van de Parijse metro moest gebruiken, verrast toen ze voor het eerst een trein zagen die geen bestuurderscabine had. Het treinverkeer op deze lijn wordt volledig geregeld door het Ada-programma.

Ondanks alles loopt Rusland op bepaalde technologische gebieden nog steeds "voor op de rest". En een daarvan is het ontwerp en de productie van amfibievliegtuigen. De wereldberoemde leider op dit gebied is TANTK im. G.M. beriev. Het bedrijf heeft onlangs op Ada gebaseerde ingebouwde softwareontwikkelingstools gekocht voor gebruik bij het upgraden van zijn nieuwste Be-200-model.

Ondertussen weet de meerderheid van de binnenlandse IT-specialisten in het beste geval niets van de Ada-taal, en in het slechtste geval hebben ze een totaal verkeerd idee van Ada als een monstertaal, ooit uitgevonden door het Pentagon voor de ontwikkeling van militaire systemen, en nu volledig vergeten.

Een beetje geschiedenis

De officiële verjaardag van de Ada-programmeertaal kan worden beschouwd als 17 februari 1983 - de datum waarop de ANSI / MIL-STD-1815-A-1983-standaard werd goedgekeurd.

De technische en administratieve maatregelen die het ministerie van Defensie heeft genomen als onderdeel van het project om Ada te creëren en te implementeren, hebben de opkomst en verspreiding van dialecten van de taal volledig voorkomen. Van 1983 tot heden ondersteunen alle industriële implementaties de huidige Ada-standaard. Als het gaat om subsets van Ada, worden deze subsets niet bepaald door de implementatie, maar door de ontwikkelingsstandaarden van een bepaalde klasse systemen.

In 1987 werd de ANSI-norm goedgekeurd als een ISO-norm zonder een enkele wijziging (ISO/IEC 8652), en toen de noodzaak om de norm te herzien in het begin van de jaren negentig volwassen werd, werd het herzieningswerk ook uitgevoerd onder leiding en bij de kosten van het Amerikaanse ministerie van Defensie. Er werd een nieuw internationaal project gelanceerd, dat eindigde met de goedkeuring eind 1994 en de publicatie begin 1995 van een nieuwe versie van de norm ISO / IEC 8652. Het is dit document dat vandaag de dag dient als de definitie van de Ada programmeertaal.

In de USSR werd begin jaren tachtig de werkgroep Ada-programmeertaal opgericht onder het Staatscomité voor Wetenschap en Technologie. Alle open informatie over het project werd zorgvuldig verzameld en geanalyseerd, en geheime informatie werd verkregen door de inspanningen van speciale diensten. Er werden projecten georganiseerd om Ada te implementeren voor bijna alle computerarchitecturen die toen in gebruik waren, en sommige daarvan bleken zeer succesvol te zijn. De ineenstorting van de USSR maakte een einde aan deze activiteit. Tegenwoordig wordt Ada in Rusland en het GOS gebruikt door individuele enthousiastelingen.

Wat is Ada

Alle moderne industriële talen bieden in wezen dezelfde basisset van mogelijkheden, waarbij ze niet verschillen in wat ze je toestaan ​​te doen, maar in hoe ze je precies in staat stellen om het te doen. Ada breidt echter in ten minste twee opzichten de standaardset functies voor moderne talen uit. Ten eerste biedt Ada programmeertools op hoog niveau voor asynchrone processen. Ten tweede is het de enige taal die zonder enig voorbehoud modulair genoemd kan worden.

Een voorbeeld hiervan is eenvoudigweg nodig om een ​​vrij algemene mythe te weerleggen dat Ada een grote, complexe en "zware" taal is, alleen geschikt voor het schrijven van supergrote en supercomplexe systemen. Ada kan zelfs worden gebruikt om kleine en middelgrote programma's te ontwikkelen met hetzelfde succes als moderne klonen van C, Pascal, BASIC en Java. Bijvoorbeeld, het klassieke voorbeeld van de "Hello, World!" ziet er zo uit in Ada:

Het is gemakkelijk te zien dat de code in Ada vergelijkbaar is met de code in Pascal, die als prototype is gekozen. De eerste regel beschrijft de relatie van deze gecompileerde module met andere modules - het geeft aan dat de Hello_World-routine samen met de Ada.Text_IO-module moet worden gecompileerd, die een onderdeel is van de vooraf gedefinieerde bibliotheek.

Het volgende programma definieert twee asynchrone processen:

De lokale declaratiesectie van de Tasking_Example-procedure beschrijft de Outputter-taak (regel 6, regels 8 tot en met 17 bevatten de hoofdtekst van deze taak). Wanneer de besturing in het proces dat overeenkomt met de Tasking_Example-procedure regel 20 bereikt, wordt het proces dat overeenkomt met de Outputter-taak gestart voordat deze eerste instructie wordt uitgevoerd, waarna de twee processen leven en asynchroon onafhankelijk van elkaar worden uitgevoerd. De uitvoering van de vertragingsinstructie (regels 14 en 20) bestaat uit het onderbreken van het corresponderende proces gedurende het gespecificeerde aantal seconden. Het Tasking_Example-proces wordt dus gedurende 20 seconden onderbroken, terwijl het Outputter-proces begint met het afdrukken van de waarden van de oplopende teller, met een pauze van één seconde nadat elke waarde is uitgevoerd. Na 20 seconden stelt het Tasking_Example-proces de Finished-vlag in op true, waarmee de lus in het Outputter-proces wordt beëindigd. De specificatie van de variabele Finished als een atomair data-object (regel 4) maakt het onmogelijk om de waarde van deze variabele tegelijkertijd te lezen en te wijzigen.

Het volgende is een functiesjabloon waarmee u component voor component twee eendimensionale arrays kunt toevoegen. Deze sjabloon kan worden ingesteld op een willekeurig type dat een eendimensionale array is waarvan de componenten toewijzings- en optelbewerkingen hebben gedefinieerd ("optellen" hoeft geen rekenkundige optelling te zijn).

Regels 1-6 bevatten de declaratie van de aangepaste functie en regels 8-20 bevatten de hoofdtekst. In wezen is de instellingsparameter een willekeurig eendimensionaal regulier type met een niet-gespecificeerd indexbereik (regel 4), waarvan alleen bekend is dat het componenttype willekeurig is, maar de toewijzingsbewerking is gedefinieerd voor componenten (regel 2), het indextype is willekeurig discreet (regel 4). Aangezien we component voor component twee arrays gaan toevoegen, moeten we weten wat de optelbewerking is voor het componenttype. Aangezien dit een willekeurig type is, zijn we genoodzaakt om optelling voor het componenttype door te geven als een formele instelparameter (regel 5).

In de body van de functie controleren we eerst of de lengtes van de operanden gelijk zijn (regel 12), anders heeft de componentgewijze optelling geen zin. Overeenkomstige operandlengten garanderen geen overeenkomende indexbereiken, dus in de lus over het indexbereik van het eerste argument (regel 15) moeten we elke keer de index berekenen van de overeenkomstige component van het tweede argument. We kunnen dit niet doen voor het indextype, omdat we er alleen van weten dat het discreet is, dus gaan we over van de waarde van het discrete type naar het rangtelwoord (?Pos-attribuut), berekenen we de noodzakelijke verschuiving voor het rangtelwoord en ga terug naar de overeenkomstige waarde van het Index-type (attribuut?Val).

Merk op dat de linker en rechter (aangepaste) functieparameters "+" zijn gedeclareerd als zijnde van het type Arr, waarvan het indexbereik niet is gespecificeerd. Links en rechts zijn echter formele parameters, in plaats waarvan, bij het aanroepen (het resultaat van concretisering) van de "+"-functie, specifieke arrays met bekende indexbereiken zullen worden vervangen. We gebruiken array-attributen (?Range, ?First, ?Length) in de hoofdtekst van de functie "+" om informatie over het indexbereik van een object te krijgen.

Waarom Ada?

De taalkeuze voor een softwareproject was voorheen een puur technische aangelegenheid. Tegenwoordig is dit een kwestie van strategisch belang geworden, met verstrekkende gevolgen voor het succes van het project. Hier zijn enkele van de redenen waarom de Ada-taal door verschillende bedrijven is gekozen voor de implementatie van softwareprojecten, of verplicht is gesteld voor gebruik bij aanbestedingen.

  • De wens om de betrouwbaarheid van het systeem dat wordt ontwikkeld te verbeteren, aangezien softwaredefecten ernstige gevolgen kunnen hebben voor de menselijke gezondheid, de economie, het milieu, enz. (Ada heeft ingebouwde betrouwbaarheid).
  • De wens om de kosten van ontwikkeling en onderhoud van het systeem te verlagen.
  • De aanwezigheid van internationale standaarden en de beschikbaarheid van taalcompilers voor vrijwel elk platform.
  • Voordelen van een gedisciplineerde benadering van softwareontwikkeling die belangrijker worden naarmate het volume en de complexiteit van software toenemen.
Ada en Si

Er zijn zoveel kopieën gebroken in vergelijkende analyses van populaire talen dat dit onderwerp tegenwoordig vaak wordt aangeduid als "religieuze oorlogen". Daarom beperken we ons tot een verwijzing naar een bekend artikel waarin een aantal welsprekende conclusies worden getrokken.

  1. Het ontwikkelen van programma's in Ada is 60% goedkoper dan vergelijkbare softwareprojecten geïmplementeerd in C.
  2. Een Ada-programma heeft 9 keer minder defecten dan een C-programma; een C++-programma heeft nog lagere kenmerken dan een C-programma.
  3. de voorkeur boven C door zowel ervaren als onervaren programmeurs, evenals programmeurs met zowel de hoogste als de laagste beoordelingen in hun groep.
  4. De bewerkelijkheid van het leren van de Ada-taal is niet hoger dan de bewerkelijkheid van het leren van C.
  5. Ada-programma's zijn betrouwbaarder dan C-programma's.

Ter illustratie van deze conclusies geven we een voorbeeld van de ontwikkeling van de software aan boord van het C-130J-vliegtuig in overeenstemming met de vereisten van niveau A van de DO-178B-standaard. Tegelijkertijd was de kwaliteit van de code 10 keer hoger dan het gemiddelde voor software van niveau A. De arbeidsproductiviteit steeg vier keer ten opzichte van vergelijkbare softwareprojecten.

Ada en Java

Microsoft werd gedwongen om de volgende clausule op te nemen in de licentieovereenkomsten voor hun besturingssystemen ( www.microsoft.com/msdownload/ieplatform/ie/license.txt): "Een opmerking over Java-taalondersteuning... Java-technologie is niet fouttolerant en is niet bedoeld... voor gebruik in real-time besturingssystemen... waarin het falen van de Java-taal kan leiden tot de dood of letsel , of ernstige schade aan de infrastructuur of het milieu. Sun Microsystems Inc. vereist dat Microsoft deze waarschuwing plaatst."

We verwijzen ook naar artikelen en demonstreren de voordelen van de Ada-taal ten opzichte van Java.

"Hellse" mythen

Heel vaak wordt Ada geassocieerd met een reeks aanhoudende misvattingen die zowel de verspreiding van de taal als de bewuste keuze van Ada als taal voor het implementeren van een project verhinderen.

Ada is een dode taal, niemand programmeert er nu in. Ada bezet zelfs vol vertrouwen de niche van grote ingebedde systemen met hoge eisen aan betrouwbaarheid. In vergelijking met "boxed" Windows-producten zijn deze systemen niet zo zichtbaar, hetzij omdat ze in één exemplaar bestaan ​​(wat heeft het voor zin om het programma te repliceren dat de beweging van metro's regelt), of gedistribueerd als onderdeel van het systeem waarin ze zijn gebouwd (software aan boord).

Ada is een taal die exclusief is gereserveerd voor militaire toepassingen. Ada is inderdaad ontwikkeld met medewerking van het Amerikaanse ministerie van Defensie, maar er zijn geen technische, administratieve of andere redenen die het gebruik van Ada voor de ontwikkeling van civiele systemen in de weg staan. Het aantal "civiele" projecten op basis van deze taal is tegenwoordig vergelijkbaar met het aantal "militaire" projecten.

Ada is een te grote en complexe taal om in een klein project te gebruiken. Het volume en de complexiteit van alle moderne industriële talen is bijna hetzelfde, en om dit te zien volstaat het om simpelweg het volume van hun beschrijvingen te vergelijken. Deze mythe gaat terug tot de vroege jaren 80 toen Ada werd vergeleken met Pascal, Fortran 77 of BASIC.

Er zijn maar weinig programmeurs die Ada kennen, een taal helemaal opnieuw leren kost veel moeite en tijd. De echte moeilijkheid is in feite het vinden van specialisten die de specifieke kenmerken van ingebedde systemen begrijpen en in staat zijn om hoogwaardige programma's voor hen te maken. BAE, een van de actieve gebruikers van de Ada-taal, vereist bijvoorbeeld niet dat kandidaten deze taal kennen; in plaats daarvan zijn ze op zoek naar mensen die bekend zijn met ingebedde systemen en processen voor het maken van software van industriële kwaliteit. Nadat je zulke mensen hebt aangenomen, duurt het slechts twee weken om ze de taal van de hel te leren.

Onze persoonlijke ervaring leert dat programmeurs die bekend zijn met een of andere Pascal-smaak slechts een paar dagen nodig hebben om eenvoudige programma's in Ada te ontwikkelen.

Bestaande Ada-technologieën zijn inefficiënt; beide compilers en de door hen gegenereerde code worden gekenmerkt door lage prestaties. Deze mythe gaat ook terug tot de eerste helft van de jaren 80, toen de eerste implementaties van Ada verschenen, in feite bewezen ze gewoon "de stelling van het bestaan ​​van een Ada-vertaler die aan de norm voldoet". Het volstaat een reeks eenvoudige experimenten uit te voeren door een modelprobleem in Ada, Pascal en C/C++ te programmeren en vervolgens (met vergelijkbare compilerparameters) de compilatiesnelheid, de hoeveelheid gegenereerde code en de snelheid van de gegenereerde code te vergelijken. uitvoering om ervoor te zorgen dat een specifieke inefficiëntie, kenmerkend voor Ada, gewoon niet bestaat. Er kan ook worden opgemerkt dat het GNAT-programmeersysteem, met een broncodevolume van meer dan 40 MB, voor 90% is geïmplementeerd in Ada, en het bouwen vanuit de broncode (waarbij het zichzelf drie keer compileert) op een moderne pc kost geen moeite. ruim een ​​half uur.

Bestaande implementaties van Ada zijn extreem duur. Dit is waar, maar houd er rekening mee dat er een openbaar beschikbare versie van het GNAT-programmeersysteem is die gratis en volledig legaal kan worden gedownload van de softwarerepository van de New York University ( ftp://cs.nyu.edu/pub/gnat) samen met de originele teksten

Gratis kaas en hoe de muizenval te vermijden

GNAT (GNu Ada Translator) is een multi-platform implementatie van de Ada-taal, die op bijna alle moderne industriële platforms bestaat en codegeneratie ondersteunt voor populaire ingebedde architecturen. GNAT ( www.gnat.com) implementeert de Ada-standaard volledig, inclusief de bibliotheken die door de standaard als optioneel zijn geclassificeerd. Naast de Ada-vertaler zelf bevat GNAT een toolkit, waarin moet worden opgemerkt een ontwikkelde geïntegreerde ontwikkelomgeving en een meertalige grafische debugger, waarmee onder andere het gedrag van programma's met asynchrone processen kan worden onderzocht. De vertaler en bijbehorende tools kunnen zowel afzonderlijk worden gebruikt, door ze vanaf de opdrachtregel aan te roepen, als als onderdeel van de geïntegreerde grafische ontwikkelomgeving voor Ada-programma's. Alle GNAT-componenten, inclusief de ontwikkelomgeving, hebben op alle platformen dezelfde interface. Naast de volledige implementatie van de tools die door de standaard worden beschreven, biedt GNAT een uitgebreide reeks extensies die door de standaard zijn toegestaan. GNAT is Ada's implementatie in het meertalige programmeersysteem gcc, dat bestaat uit een set front-end-compilers voor verschillende invoertalen met een gemeenschappelijke codegenerator, wat de ontwikkeling van programma's met componenten die in verschillende programmeertalen zijn geïmplementeerd aanzienlijk vereenvoudigt.

GNAT is vanaf het allereerste begin ontwikkeld en gedistribueerd onder de GPL. Helaas wordt de GPL ook geassocieerd met veel mythen. Velen geloven dus dat programma's onder de GPL worden ontwikkeld door ongeorganiseerde groepen enthousiastelingen, die absoluut gratis worden verspreid; als gevolg hiervan laten zowel de betrouwbaarheid als de functionaliteit van dergelijke programma's te wensen over en kunnen ze niet in serieuze projecten worden gebruikt. In het geval van GNAT is dit verre van het geval. Om hiervan overtuigd te zijn, volstaat het om naar de lijst met bedrijven te kijken die technische ondersteuningscontracten hebben gesloten met hun ontwikkelaars: Boeing, British Aerospace, Lockheed, Ericsson, SAAB, Avionics, enz.

Het geven van gratis demo's is voor veel softwareontwikkelaars een gangbare praktijk. GNAT onderscheidt zich doordat de vrij beschikbare openbare versie een absoluut volledige versie van de technologie is, zonder enige wettelijke of technische beperkingen op het gebruik ervan. Op basis van publieke versies van GNAT is een aantal serieuze projecten met succes uitgevoerd. Software voor het Beagle 2-afdalingsvoertuig van het Europese automatische station Mars Express, dat momenteel op weg is naar Mars ( www.beagle2.com/index.htm), een geautomatiseerd documentair communicatiestation van het Ministerie van Defensie van de Russische Federatie ( www.ada-ru.org/prj_doc.html). Het enige nadeel van openbare versies is dat de ontwikkelaar er geen technische ondersteuning voor biedt.

Conclusie

Samenvattend biedt de Ada-taal ontwikkelaars de perfecte combinatie van integriteit, consistentie, betrouwbaarheid en efficiëntie. De taal ondersteunt creativiteit en innovatie en biedt tegelijkertijd de discipline en industriestandaard softwareontwikkeling die nodig is om softwaresystemen van groot belang te implementeren.

Literatuur
  1. Benjamin Brosgol, Inleiding tot Ada 95. www.embedded.com/story/OEG20021211S0034
  2. Stephen Zeigler, Ontwikkelingskosten van C en Ada vergelijken. www.adaic.com/whyada/ada-vs-c/cada_art.html www.ada-ru.org. Een geannoteerde bibliografie van boeken over de taal van Ada, gepubliceerd in het Russisch, is te vinden op de website

Samenvatting over het onderwerp:

Ada



Plan:

    Invoering
  • 1 Taal kenmerken
  • 2 "Hallo, wereld!" op de hel
  • 3 Geschiedenis
  • 4 Ada in de USSR en Rusland
  • 5 Kritiek
  • 6 Distributie, vooruitzichten
  • 7 Besturingssystemen geschreven in Ada
    • 7.1 Ingebedde systemen
    • 7.2 Systemen in ontwikkeling
    • 7.3 Niet meer bestaande systemen
  • 8 Hell-compilers
  • 9 Afgeleide talen
  • 10 Interessante feiten
  • Notities
    Literatuur

Invoering

Ada (Ada) is een programmeertaal die in 1979-1980 is ontstaan ​​als resultaat van een project van het Amerikaanse ministerie van Defensie om een ​​uniforme programmeertaal te ontwikkelen voor ingebedde systemen (dat wil zeggen real-time controlesystemen voor geautomatiseerde complexen). Dit betekende in de eerste plaats controlesystemen aan boord voor militaire faciliteiten (schepen, vliegtuigen, tanks, raketten, granaten, enz.). De ontwikkelaars hadden niet de taak om een ​​universele taal te creëren, dus de beslissingen van de auteurs van Ada moeten worden genomen in de context van de kenmerken van het gekozen onderwerpgebied. De taal is vernoemd naar Ada Lovelace.


1. Kenmerken van de taal

In zijn oorspronkelijke vorm, gestandaardiseerd in 1983, is Ada een gestructureerde, modulaire programmeertaal met hoogwaardige programmeertools voor parallelle processen. De syntaxis van Ada is geërfd van talen als Algol of Pascal, maar uitgebreid en strenger en logischer gemaakt. Ada is een sterk getypeerde taal, het sluit het werken uit met objecten die geen typen hebben, en automatische typeconversies worden tot een absoluut minimum beperkt. In de standaard van 1995 werden elementaire objectgeoriënteerde programmeertools aan de taal toegevoegd; in de standaard van 2007 werden deze tools aangevuld, dus moderne Ada is een objectgeoriënteerde programmeertaal.

Syntaxisfuncties omvatten:

  • De taal is niet hoofdlettergevoelig.
  • De programma's zijn modulair, het mechanisme voor het controleren van de import-export van beschrijvingen tussen modules omvat twee verschillende richtlijnen: een voor het verbinden van een andere module (met), de andere voor het importeren van de beschrijvingen (gebruik). Het is ook mogelijk om de module te hernoemen tijdens het importeren (rename) - met deze optie kunt u identifiers gebruiken die handiger zijn voor de programmeur om het pakket aan te duiden.
  • Pakketten (een van de moduletypes) kunnen een koptekst en een persoonlijk deel bevatten - wat erin zit wordt niet geëxporteerd en is niet beschikbaar voor andere modules.
  • Het mechanisme van gegeneraliseerde (aangepaste) modules wordt ondersteund: pakketten, procedures en functies die het mogelijk maken om gegeneraliseerde algoritmen voor gegevensverwerking te beschrijven zonder een specifiek type te specificeren.
  • Een geavanceerd type systeem, zowel ingebouwd als gegenereerd door de programmeur. Er zijn veel manieren om nieuwe typen te maken, de taal ondersteunt twee verschillende concepten: "subtype" en "afgeleid type". Variabelen van een type en een subtype zijn compatibel, variabelen van een type en het afgeleide type niet.
  • Voorzieningen voor het afhandelen van uitzonderingen.
  • Geavanceerde manier om procedures en functies aan te roepen: invoer- en uitvoerparameters worden ondersteund, werkelijke parameters worden doorgegeven in een willekeurige volgorde met formele namen, parameters met standaardwaarden.
  • Herdefiniëren van procedures, functies en operators wordt ondersteund - het creëren van verschillende varianten van een procedure, functie of operator met dezelfde naam, maar met verschillende handtekeningen (types en aantal parameters).
  • Ondersteuningsstructuren voor parallel programmeren ingebouwd in de taal: de concepten van "taak" (parallel uitgevoerd programmafragment), "taakinvoer" (een middel om parallelle taken te synchroniseren en te communiceren) worden ondersteund, het rendez-vousmechanisme wordt ondersteund (protocol voor de interactie van parallelle taken via de invoer van een van hen), is er een SELECT-selectiestatement voor het organiseren van voorwaardelijke inter-thread-interactie (het kiezen van een parallelle taak om mee te communiceren, afhankelijk van de gereedheid voor een rendez-vous en enkele andere voorwaarden). In principe zijn de parallelle programmeertools die beschikbaar zijn in de taal voldoende om een ​​grote klasse taken op te lossen die parallelle verwerking vereisen zonder toevlucht te nemen tot externe tools, zoals extra bibliotheken of besturingssysteem-API's.

Om aan de eisen van betrouwbaarheid te voldoen, is de taal zo ontworpen dat in de compilatiefase zoveel mogelijk fouten worden gedetecteerd. Bovendien was een van de vereisten bij de ontwikkeling van de taal de zo goed mogelijke leesbaarheid van programmateksten, zelfs ten koste van het schrijfgemak. Het resultaat van deze aanpak was een ietwat “zware” syntaxis en veel restricties die afwezig zijn in de meest gangbare industriële talen (C en C++) en door professionele programmeurs vaak als overbodig worden ervaren, bijvoorbeeld dezelfde sterke typen. Dit leidde tot de vorming van het idee van Ada als een complexe, obscure en onhandige taal om te gebruiken.


2. "Hallo, wereld!" op de hel

Verschillende versies van de "Hello, world!" is te zien in Wikibooks. De verschillen zijn te wijten aan de noodzaak om de bibliotheekfunctie Put_Line te gebruiken - er zijn drie verschillende manieren in deze taal om dit gebruik te organiseren.

Met Ada.Text_IO; procedure Hallo is gebruik Ada.Text_IO; begin Put_Line("Hallo, wereld!"); einde Hallo;

Hier, om de Put_Line-functie toe te passen, wordt het Ada.Text_IO-pakket dat het bevat, geïmporteerd met behulp van de use-constructie, wat het mogelijk maakt om de functie bij naam aan te roepen zonder kwalificatie - waarbij de naam van het pakket dat de functie bevat in de aanroep wordt gespecificeerd.


3. Geschiedenis

De ontwikkeling van de taal werd uitgevoerd als onderdeel van een internationale wedstrijd die werd georganiseerd en gefinancierd door het Amerikaanse ministerie van Defensie. Het doel van de ontwikkeling was om een ​​programmeertaal te verkrijgen die één zou kunnen worden voor de ontwikkeling van projecten in opdracht van de militaire afdeling, voornamelijk voor de ontwikkeling van ingebedde militaire systemen en voor grote militaire computers (gebaseerd op de iAPX 432-processor van Intel ). Het werk begon in 1975, met de vorming van een reeks vereisten voor een taal die de ontwikkelaars van dit soort systemen volledig zou bevredigen. De eerste lijst met vereisten, uitgegeven onder de codenaam "Straw", werd ter beoordeling voorgelegd aan een aantal organisaties en firma's, werd in de loop van twee jaar consequent verfijnd en veranderde uiteindelijk in een definitief document genaamd "Steel".

Nadat de formatie van de eisen was afgerond, is er een analyse uitgevoerd waaruit bleek dat geen van de bestaande programmeertalen in voldoende mate aan de eisen voldeed, dus werd besloten om een ​​nieuwe taal te ontwikkelen. Een wedstrijd voor de oprichting ervan werd aangekondigd in 1977, de ontwikkelaars werd gevraagd om zich te baseren op een van de drie talen: Pascal, Algol-68 of PL / 1.

Van de 15 ingediende projecten voor de competitie werden er 4 geselecteerd (allemaal op basis van Pascal). Deze projecten werden verzonden voor verdere ontwikkeling. In de volgende fase werden van de 4 projecten er twee geselecteerd, waarvan er na nog een herziening één werd geselecteerd. Deze taal werd "Ada" genoemd - de groep die het ontwikkelde, geleid door de Fransman Jean Ishbia, noemde de taal ter ere van Augusta Ada King Lovelace (1815-1852), de dochter van de dichter J. Byron, die programma's ontwikkelde voor Babbage's computer en wordt beschouwd als de eerste programmeur ter wereld.

In 1983 werd de taal officieel gestandaardiseerd door ANSI. De taalstandaard ANSI/MIL-STD-1815-A-1983 werd goedgekeurd op 17 februari 1983. Het Amerikaanse ministerie van Defensie heeft van de naam "Ada" een geregistreerd handelsmerk gemaakt en verbiedt de vrijlating van vertalers van de taal die de officiële testprocedure voor naleving van normen niet hebben doorstaan. De procedure bestond erin een groot aantal (meer dan 1000) testprogramma's (de zogenaamde ACVC-set) door de te testen compiler te laten lopen, waarvan elk het testresultaat ondubbelzinnig vaststelde: ofwel geslaagde compilatie ofwel het uitgeven van een zeer specifieke foutmelding. Testen werden uitgevoerd volgens het "alles of niets"-principe - als er een fout was opgetreden bij het verwerken van ten minste één testcase, werd aangenomen dat de compiler de test niet had doorstaan ​​en was de test alleen geldig op het hardware- en softwareplatform waarop het is uitgevoerd. Zo werd de mogelijkheid van de vorming van "versies" of "dialecten" van de Ada-taal in de kiem gesmoord.

In 1987 werd de Ada-taal officieel gestandaardiseerd door ISO. Sindsdien heeft het Amerikaanse ministerie van Defensie de taal beschikbaar gemaakt voor het publiek.

In 1990 waren er al ongeveer 200 compilers in de wereld die overeenkwamen met de Ada-taalstandaard.

In 1995 werd een nieuwe Ada-standaard aangenomen, bekend als Ada95. Objectprogrammeertools werden in de taal geïntroduceerd. Bovendien werd de taal aangevuld met meer geavanceerde tools voor interactie met programma's die in andere talen zijn geschreven.

In maart 2007 zijn wijzigingen in de Ada-standaard gepubliceerd. Ze gingen vooral in op de mogelijkheden van objectgeoriënteerd programmeren: er werden interfaces geïntroduceerd, de syntaxis van de methodeaanroep die gebruikelijk is in de meeste hybride talen werd overgenomen en er werden een aantal toevoegingen gedaan.


4. Ada in de USSR en Rusland

In de USSR werd in de jaren tachtig de werkgroep over de taal van de hel georganiseerd onder het staatscomité voor wetenschap en technologie. De groep was bezig met de studie van alle open (en volgens geruchten verkregen door geheime inlichtingen) gegevens over de taal van Ada en onderzocht de mogelijkheid en opportuniteit om Ada in de USSR te ontwikkelen en te gebruiken. De activiteiten van deze groep leidden tegen het einde van de jaren 80 tot de ontwikkeling van Ada-compilers voor bijna alle computers die in de USSR worden gebruikt. Er zijn verschillende boeken over de taal van Ada in het Russisch verschenen.

Aan de Staatsuniversiteit van Moskou werd gewerkt aan het maken van hun eigen pakketten om Ada-vertalers te testen op naleving van normen. In de Staatsuniversiteit van Leningrad werd voor het creëren van het Ada-systeem het Pallada-systeem gebruikt, dat eerder was ontwikkeld voor de implementatie van Algol-68, dat werd overgedragen aan Ada. Het systeem bevat een geïntegreerde ontwikkelomgeving, een compiler, een teksteditor, een debugger, bibliotheken, een versiebeheersysteem en een commando-interpreter.

Na de ineenstorting van de USSR werd het werk aan de distributie van Ada praktisch onderbroken. Toegegeven, er zijn drie softwareontwikkelingsprogramma's goedgekeurd op Ada (in het Ministerie van Defensie, het Ministerie van Burgerluchtvaart en het Ministerie van Onderwijs en Wetenschap), maar hun ontwikkeling is traag en ongecoördineerd. Als gevolg hiervan is de Ada-taal weinig bekend in Rusland, de meeste moderne Russische programmeurs beschouwen het als een "dode taal" en weten er niets van. Ada wordt in Rusland en het GOS gebruikt door individuele enthousiastelingen. De taal wordt echter gebruikt voor industriële softwareontwikkeling. Er zijn verschillende projecten ontwikkeld op Ada en werken in Rusland. Onder hen:

  • Documentaire communicatiestation van het RF Ministerie van Defensie. De hoofdtaak is het waarborgen van de uitwisseling van documentaire informatie in de datatransmissienetwerken van het Ministerie van Defensie van de Russische Federatie. Het software- en hardwarecomplex is gezamenlijk ontwikkeld door de productieorganisatie "Computer Engineering and Automation Tools" (hardware) en een groep programmeurs uit de off-piste sector van het Noord-Kaukasische luchtverkeersleidingscentrum "Strela". De software van het complex is geschreven in de programmeertaal Ada met behulp van de GNAT-compiler. Gedistribueerd computergebruik wordt ondersteund door een extra GLADE-component.
  • Complex van standaard vluchtnavigatie- en communicatieapparatuur voor het Russische amfibievliegtuig Beriev Be-200. De ontwikkeling is uitgevoerd door het Research Institute of Aviation Equipment in Zhukovsky, samen met het Amerikaanse bedrijf Allied Signal, Florida, USA. Er werd gebruik gemaakt van het ontwikkelingscomplex van Ada-systemen van het bedrijf DDC-I op het Intel 80486-platform.

5. Kritiek

Sinds de oprichting is Ada bekritiseerd door enkele erkende autoriteiten op het gebied van programmeertaalontwikkeling, voornamelijk vanwege de complexiteit van de syntaxis en het grote volume. Met name de taal kreeg kritiek van Charles Hoare en Niklaus Wirth (die met hun project deelnamen aan deze wedstrijd, maar na de eerste fase afhaakten), evenals Edsger Dijkstra.

Dijkstra betwijfelde of een taal zo complex als Ada gezien en beheerst kon worden.

Als Ada een norm gaat uitgeven, is het wenselijk dat deze eenduidig ​​wordt gedocumenteerd. Ten minste twee groepen hebben geprobeerd dit te doen; als resultaat produceerden beide ongeveer 600 pagina's formele tekst. Dit is veel meer dan nodig is om ervoor te zorgen dat het onmogelijk is om zelfs maar vast te stellen dat beide documenten dezelfde taal definiëren. De fout in de schijnbare onhandelbaarheid van deze twee documenten ligt niet in de twee groepen die ze hebben samengesteld, niet in het formalisme dat ze hebben aangenomen, maar alleen in de taal zelf: zonder een formele definitie te geven of de ontwikkelaars kunnen verbergen dat ze een onhandelbaar monster bieden . Dat Ada programmeerproblemen zal verminderen en de betrouwbaarheid van onze ontwerpen tot acceptabele limieten zal verhogen, is slechts een van die sprookjes die alleen mensen met een militaire achtergrond kunnen geloven.

Sciencefiction en wetenschappelijke realiteit in de informatica (Edsger W. Dijkstra, EWD952)

Hoare sprak zijn spijt uit dat "rammelaars en snuisterijen voorrang hebben op de fundamentele vereisten van betrouwbaarheid en veiligheid" en waarschuwde voor "een armada van raketten die de verkeerde kant op vliegen als gevolg van een onopgemerkte fout in de Ada-compiler." Niklaus Wirth sprak terughoudender, maar ook negatief. Hij zei: "Er wordt te veel naar de programmeur gegooid. Ik denk niet dat je normaal kunt werken als je een derde van Ada hebt bestudeerd. Als u niet alle details van de taal beheerst, kunt u er in de toekomst over struikelen, en dit zal tot onaangename gevolgen leiden. Jean Ishbia, de leider van het ontwikkelingsteam van Ada, sprak weliswaar zijn "respect en bewondering" uit voor Wirth, maar was het daar niet mee eens en zei: "Wirt gelooft in eenvoudige oplossingen voor complexe problemen. Ik geloof niet in zulke wonderen. Complexe problemen vragen om complexe oplossingen.”

De procedure voor het controleren van de conformiteit van de compiler met de taalstandaard door testen roept ook twijfels op. Uit algemene overwegingen blijkt duidelijk dat testen inconsistenties kan vinden, maar de juistheid niet kan garanderen. Een praktische bevestiging hiervan is het feit dat gecertificeerde samenstellers bij het testen op een andere reeks tests niet-naleving van de .

Aanhangers van Ada beweren dat het enige alternatief voor een grote en complexe taal in grote projecten het gebruik van verschillende compacte talen is, wat onvermijdelijk compatibiliteitsproblemen veroorzaakt, waarvoor Ada is uitgevonden om er vanaf te komen. Ze merken ook op dat de notie van complexiteit in Ada-ontwikkeling slechts gedeeltelijk waar is: het schrijven van een eenvoudig programma in Ada kost meer tijd dan in andere, minder formele talen zoals C, maar het debuggen en onderhouden van programma's, vooral grote en complexe programma's, wordt sterk vereenvoudigd. Volgens Stephen Zeiger van de Rational Software Corporation is softwareontwikkeling in Ada over het algemeen 60% goedkoper en heeft het ontwikkelde programma 9 keer minder defecten dan het gebruik van de C-taal.


6. Distributie, vooruitzichten

In de praktijk bleek dat Ada, nadat ze de daarvoor bestemde niche had ingenomen in de militaire en aanverwante ontwikkelingen van ingebedde systemen, niet verder ging dan deze niche, noch in het Westen, noch in de USSR, noch in de post-Sovjet-ruimte . Daar zijn veel redenen voor. Tegenstanders van de taal berusten op de complexiteit en tekortkomingen ervan, aanhangers spreken in de eerste plaats over de objectieve omstandigheden van het uiterlijk van de taal en de negatieve aspecten van het implementatieproces. De mening van S. I. Rybin, senior onderzoeker aan het Onderzoeks- en Ontwikkelingscentrum van de Staatsuniversiteit van Moskou, adviseur van AdaCore EU, een expert op het gebied van de Ada-taal van de ISO-werkgroep over de taalstandaard, is interessant. Hij gelooft dat Ada zijn mislukkingen te danken heeft aan twee belangrijke redenen:

  • Tijdens het ontwerp van de taal ging het Pentagon ervan uit dat alle nieuwe software alleen in Ada zou worden gemaakt. Hierdoor kreeg Ada uiterst primitieve middelen om met programma's in andere talen om te gaan. In de praktijk bleek dat alles schrijven in Ada in het algemeen onrealistisch is (al was het maar omdat er behoefte was aan interactie met kant-en-klare ontwikkelingen in andere talen). Daarom hadden in bedrijfstakken waar er geen strikte eis was om "alleen in Ada te schrijven", de voorkeur aan andere talen, meer aangepast aan de meertalige omgeving. In de standaard van 1995 was het probleem van interoperabiliteit met andere talen opgelost, maar er ging tijd verloren.
  • Paradoxaal genoeg werd de verspreiding van Ada verhinderd door de financiële en organisatorische steun van het Pentagon. Ada-programma's die voor het leger waren geschreven, draaiden op de krachtigste beschikbare computertechnologie, dus compilerontwikkelaars gaven er eerst om de ACVC-tests te doorstaan, en pas daarna om de efficiëntie van de compiler en de code die deze creëerde. Begin jaren tachtig begon de opkomst van microcomputers en werden vertalers voor veelgebruikte talen (Pascal, C, BASIC) snel geoptimaliseerd voor energiezuinige systemen. Voor Ada was er geen stimulans voor een dergelijke modernisering, met als gevolg dat personal computers die een paar jaar later het grootste deel van het computerpark ter wereld werden, zonder een hoogwaardige Ada-vertaler kwamen te zitten. Natuurlijk verloor Ada dit marktsegment. Het was pas relatief recent dat de GNAT-compiler verscheen, van hoge kwaliteit en productief, maar ook hier ging tijd verloren.

Momenteel is Ada vrij stevig verankerd in de ontwikkeling van grote ingebedde systemen met verhoogde betrouwbaarheid, hier heeft ze praktisch geen sterke concurrenten. Het gebruik van de taal groeit gestaag, zij het vrij langzaam. Volgens enkele voorzichtige voorspellingen [ ] , naarmate hardware goedkoper wordt en ingebedde systemen met complexere software toenemen, kan de markt voor Ada-software aanzienlijk groeien, evenals het gebruik van de taal.

Daarnaast kent Ada, zij het zeer beperkte, toepassingen in het hoger onderwijs. Speciale cursussen over Ada worden gegeven aan de Staatsuniversiteit van Moskou en de Universiteit van Kharkov. Echter, volgens dezelfde S.I. Rybin,

... nu heeft zich in de post-Sovjet-ruimte op het gebied van de software-industrie en het onderwijs een duidelijke vicieuze cirkel ontwikkeld: in de industrie weten ze praktisch niets van Ada, respectievelijk, er is geen vraag vanuit de industrie naar onderwijs om Ada-specialisten opleiden, en er komen nieuwe mensen van universiteiten naar de industrie, die praktisch niets van Ada weten.


7. Besturingssystemen geschreven in Ada

7.1. Ingebedde systemen

  • MARTE
  • RTEMS is een open source besturingssysteem dat is ontwikkeld door DARPA, het Amerikaanse ministerie van Defensie
  • Ravenskar
  • RTOS-32 - eigen besturingssysteem

7.2. Systemen in ontwikkeling

  • AuroraUX (project om de OpenSolaris-kernel te herschrijven en vervolgens DragonFly BSD naar Ada-taal)
  • Lovelace (besturingssysteem gebaseerd op L4 core)

7.3. Niet meer bestaande systemen

  • BiiN™
  • Puls™
  • AdaOS

8. Hell-compilers

Naam Bedrijf Versie besturingssysteem Website
AdaMagic SofCheck Ada 95 ? www.sofcheck.com
AdaMULTI Green Hills-software Ada 83, Ada 95, C, C++, Fortran Solaris SPARC, GNU/Linux x86, Windows www.ghs.com
DEC Ada Hewlett Packard Ad 83 openvms h71000.www7.hp.com
MUG AdaCore Ada 83, Ada 95, Ada 2005, C Solaris SPARC, Linux x86/x86-64, Windows, andere libre.adacore.com
ICC Irvine Compiler Corporation Ada 83, Ada 95 DEC VAX/VMS, HP 9000/700, Solaris SPARC, DEC Alpha OSF/1, PC Linux, SGI IRIX, Windows www.irvine.com
Janus/Ada RR-software Ada 83, Ada 95 SCO, UnixWare, Interactief, MS-DOS, Windows www.rrsoftware.com
MAXAda Gelijktijdig Ada 95 Linux/Xeon, PowerPC www.ccur.com
ObjectAda Aonix Ada 95 Solaris SPARC, HP-UX, IBM AIX, Linux, Windows www.aonix.com
PowerAda OC-systemen Ada 83, Ada 95 Linux, AIX (Ada 95); IBM Systeem 370/390 (Ada 83) www.ocsystems.com
Rationele top IBM Rationeel Ada, C, C++ SolarisSPARC Linux www-01.ibm.com
SCORE DDC-I Ada 83, Ada 95, C, Fortran Solaris SPARC, Windows www.ddci.com
XD Ad SWEP-EDS Ad 83 OpenVMS Alpha/VAX www.swep-eds.com
XGC Ada XGC-software Ada 83, Ada 95, C Solaris SPARC, PC Linux, Windows (Cygwin) www.xgc.com

Met uitzondering van GNAT en XGC (voor sommige platforms), worden de bovenstaande compilers betaald. Sommige bedrijven, zoals Aonix, bieden gratis demo's aan die beperkt zijn in tijd of functionaliteit.

De ontwikkelomgevingen NetBeans en Eclipse hebben plug-ins om met Ada te werken.


9. Afgeleide talen

Ada-taalsyntaxis wordt gebruikt in talen zoals:

  • PL/SQL

10. Interessante feiten

  • Formeel was de taalontwerpwedstrijd die resulteerde in de Ada-taal anoniem - ontwikkelingsteams dienden hun projecten in onder codenamen zodat de wedstrijdcommissie geen rekening kon houden met de identiteit van de ontwikkelaars bij het kiezen van een winnaar. Maar in de praktijk, zoals een van de leden van de commissie schreef, waren de smaken van de ontwikkelaars zo verschillend dat het niet moeilijk was om de auteur van het project te bepalen.
  • Alle talen die de laatste ronden van deze competitie bereikten, waren gebaseerd op Pascal. In dit opzicht kan Ada voorlopig worden gekarakteriseerd als een Pascal die is ontwikkeld volgens de gegeven vijf basisvereisten. Tegelijkertijd gingen de auteurs vooral op pad om Pascal uit te breiden met nieuwe elementen. Het resultaat is een veel complexere taal.
  • In het Russisch zijn er grappen die verband houden met de dubbelzinnigheid van de uitdrukking "Language of Hell", inclusief grappen die gebaseerd zijn op de parallel met de Russische algoritmische taal, ook wel bekend als de "Language of PARADISE". De conclusie van een artikel van de Sovjetpropagandist Malor Sturua (1984) kwam ook in de programmeringsfolklore terecht:

De taal van het Pentagon is de vijand van de wereld. De taal van "Ada" is de stem van de thermonucleaire hel... In de taal van "Ada" hoort men een vloek over het menselijk ras.


Notities

  1. Ada Taalreferentiegids 83. Hoofdstuk 1.3. Ontwikkelingsdoelen en bronnen - www.ada-ru.org/arm83/ch01s03.html
  2. Vadim Stankevitsj. Vrouwe van de hel - www.kv.by/index2006451104.htm
  3. Bijgewerkte standaard op iso.org - www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=45001
  4. Bryabrin V. M. Software voor personal computers. Moskou: Nauka, 1988.
  5. 1 2 Interview met S. I. Rybin - www.ada-ru.org/wiki/rybin
  6. , Objectgeoriënteerde programmeertalen, NET Platform programmeertalen, Ada, Artikelen met codevoorbeelden Ada.
    De tekst is beschikbaar onder een Creative Commons Attribution-ShareAlike-licentie.

De taal van de hel is min of meer altijd gehoord. Op school lachten we om zijn naam, in het universitaire programma werd het droogjes genoemd als een taal die op verzoek van het Amerikaanse ministerie van Defensie was ontwikkeld, maar slechts zeldzame programmeurs kwamen rechtstreeks tot de studie van syntaxis of toepassing. Daarom was er een verkeerde mening dat de taal van Ada alleen functioneert op de apparatuur van de afgelopen eeuw, en de behoefte eraan zal verdwijnen samen met natuurlijke modernisering.

En dit is ver van de waarheid.

Verschijning

In de jaren 70 van de 20e eeuw, op het hoogtepunt van de Koude Oorlog, organiseerde het Amerikaanse ministerie van Defensie een internationale wedstrijd, volgens de resultaten waarvan het nodig was een programmeertaal voor militair gebruik te kiezen. Geen van de bestaande talen voldeed echter aan de leden van de commissie, daarom werd door een lange keuze en verschillende verbeteringen de Ada-taal geboren, genoemd naar Ada Lovelace. Toen begon vele jaren van administratieve rompslomp met standaardisatie, handelsmerkregistratie, verboden op aangepaste vertalers en andere acties die het grote publiek ontmoedigden om met Ada samen te werken.

De uitvoer bleek een vrij nichetaal te zijn, ontworpen voor complexe computersystemen met verhoogde beveiligingseisen. Nogmaals, vanwege de vereisten van het Pentagon en strikte normen is interactie met andere programmeertalen buitengewoon moeilijk, dus tot voor kort had Ada bijna geen kans om naar de massamarkt te gaan. Maar met de verlaging van de kosten van apparatuur en de complicatie van de gebruikte technologieën, verschijnt zo'n kans.

Syntaxis

Aanvankelijk is Ada een sterk getypeerde modulaire programmeertaal die zijn syntaxis heeft geërfd van Pascal en Algol. Als je eerst les hebt gegeven op school of universiteit, kijk dan naar "Hello, World!" moet nostalgie ervaren:

met Ada.Text_IO;

Hallo Procedure is
gebruik Ada.Text_IO;
beginnen
Put_Line("Hallo wereld!");
einde Hallo;

Een van de belangrijkste vereisten voor de taal was de betrouwbaarheid van het gebruik ervan. Dit bracht dan ook strikte beperkingen met zich mee op het gebied van structuur, typen, spelling en meer. Bovendien worden bijna alle fouten hier tijdens het compileren opgevangen.

Een andere vereiste was de maximale leesbaarheid van de code in gedrukte vorm, wat leidde tot de zwaarte van de resulterende taal en lage flexibiliteit.

Latere standaarden losten deze problemen gedeeltelijk op, maar om voor de hand liggende redenen maakten ze geen tweede Python uit de hel.

hel vandaag

In tegenstelling tot de mening van een breed publiek wordt de taal van Ada nog steeds actief gebruikt, niet alleen in de Verenigde Staten en niet alleen in de militaire industrie. Zo is bijvoorbeeld een deel van de software voor het amfibievliegtuig Beriev Be-200 geschreven in Ada. Zelfrijdende metro's die in veel grote steden rijden (Parijs, Londen, New York, enz.) gebruiken ook Amerikaanse militaire taalapparatuur.

En ja, natuurlijk waren er onder de "klanten" militaire en burgerluchtvaart (in het bijzonder de Boeing 777), raketten, shuttles, satellieten - in het algemeen bijna de hele lijst van oneindig dure Amerikaanse producten, wat duidt op de hoogste mate van beveiliging.

vooruitzichten

De taal van de hel kreeg kritiek zowel op het moment van verschijnen als toen duidelijk werd dat de grootse plannen van het Pentagon niet helemaal in de realiteit pasten, en nu nog meer. De reden hiervoor is de ongemakkelijke taal, de complexiteit van de normen die in 1983 en 1995 zijn geschreven, evenals de kortzichtigheid van de ontwikkelaars die de Ada-taal een massapubliek hebben ontnomen.

Bijna 40 jaar actief gebruik bevestigen echter dat de Ada-taal misschien zijn hoofdtaak heeft volbracht - het kan nog steeds worden gebruikt om betrouwbare code te maken voor systemen met verhoogde beveiligingseisen. Als je echter naar de huidige trends kijkt, neemt het aantal van dergelijke producten gestaag toe: zelfrijdende auto's en hybride motoren, privéruimtevaartuigen en kleine vliegtuigen, hogesnelheidstreinen en een groot aantal embedded systemen. Dit alles is een potentieel veld voor de activiteit van de Ada-taal. Voeg daarbij het feit dat de standaard in 2012 serieus is herzien en gemoderniseerd, de tools voor de klus komen ook uit en worden bijgewerkt.

De taal van de hel is dus zowel een fragment uit een niet erg prettig verleden als een van de hulpmiddelen om een ​​mooie toekomst op te bouwen. En hij gaat zeker niet met pensioen.

Sergei Bobrovsky

De geschiedenis van deze taal begint niet in 1975, toen het Amerikaanse Ministerie van Defensie (DOD) besloot om één enkele programmeertaal te gaan ontwikkelen voor de Amerikaanse strijdkrachten, en later voor de hele NAVO. De geschiedenis begint met de naam, want Ada is de naam van Augusta Ada Lovelace, die wordt beschouwd als de eerste programmeur, de dochter van de Engelse dichter Byron en een zekere Anabella Milbank, met wie haar man een maand na de geboorte van haar dochter, die werd geboren op 10 december 1815. Over het algemeen is de geschiedenis van de cybernetica gehuld in een duister mysterie, en alleen fragmentarische feiten kunnen worden gebruikt om te beoordelen dat de grondleggers van deze wetenschap in de afgelopen tweehonderd jaar verschillende mystici en occultisten zijn geweest, variërend van August de Morgan, een van de leraren van Ada, aan de medewerkers van Norbert Wiener, die de methoden bestudeerden om de publieke opinie te vormen en de manipulatie ervan.

Nadat Charles Babbage zijn mechanische rekenmachine had ontworpen, schreef Ada het eerste programma voor het berekenen van Bernoulli-coëfficiënten. Vervolgens ontwikkelde ze een echte programmeertheorie, introduceerde ze het concept van een cyclus en verschillende andere sleuteltermen die studenten van cybernetische faculteiten tegenwoordig bijna woordelijk bestuderen! Tegenwoordig staat Ada bij iedereen bekend als de eerste programmeur - en dat is alles, maar het is verrassend hoe een jong meisje zulke unieke vaardigheden heeft? Ze beantwoordde deze vraag zelf openhartig: “Ik zweer bij de duivel dat ik in minder dan 10 jaar een bepaalde hoeveelheid vitaal bloed uit de mysteries van het universum zal zuigen, en op een manier die gewone sterfelijke geesten en lippen niet zouden kunnen. Niemand weet welke angstaanjagende energie en kracht er nog ongebruikt in mijn kleine flexibele wezen liggen...". Er waren echter geen sponsors voor het computerproject - er waren toen geen nucleaire raketten, en Ada, die al haar fortuin had verloren tijdens de races en in een smerig verhaal terechtkwam, stierf op 37-jarige leeftijd, net als haar beroemde vader.

Daarom is het een zeer betwistbaar punt of het de Amerikanen waard was om Ada zo te verheffen door haar naam te gebruiken als de naam voor zo'n ambitieus project.

Maar terug naar de geschiedenis van de taal zelf. Vijf jaar na de start van het project selecteerden honderden experts uit 17 opties de enige taal die voldoet aan de eisen van de MO, ontwikkeld door een kleine groep onder leiding van een getalenteerde wetenschapper Jean Ishbia. De definitieve versie van de internationale norm ISO 8652:1987 werd gepubliceerd in 1987. Volgens officiële rapporten hebben alle beste specialisten ter wereld op het gebied van programmeren deelgenomen aan de creatie en verfijning van deze taal, wat echter twijfelachtig is. Dit wordt bijvoorbeeld bevestigd door de afwezigheid van het concept van een object in de originele versie van Ada en de niet-deelname, om voor de hand liggende redenen, van Sovjet-programmeurs aan dit project.

Er zijn tientallen miljarden dollars geïnvesteerd in de ontwikkeling van Ada's infrastructuur over de hele wereld. Dit leidde tot de opkomst van ambitieuze uitspraken als "de 20e eeuw zal voorbijgaan onder het teken van Ada", maar zoals gewoonlijk zette het leven alles op zijn plaats.

Helaas voor de Amerikaanse DoD (en dus gelukkig voor Amerika's "potentiële tegenstanders"), werd de ontwikkeling van een duidelijke standaard voor deze taal en de creatie van effectieve compilers voltooid net op het moment (begin jaren 80) toen het begon op te duiken de horizon van de software-industrie nieuwe C++-taal met objectideologie. Nu is het moeilijk te zeggen wat de ontwikkelingscommissie van Ada voelde toen ze de populariteit van C++ en het oude, goed vergeten objectparadigma van denken zagen groeien. Maar de toegewezen middelen waren al uitgegeven, de standaard was gecreëerd en er was geen weg meer terug.

De structuur van Ada lijkt erg op Pascal, en meer precies op Modula. De syntaxis van de meeste operatoren en beschrijvingen is bijna identiek aan die van Modula, hoewel het bijna tegelijkertijd met Ada verscheen, en het is moeilijk te zeggen wie wie heeft beïnvloed, en of ze überhaupt invloed hebben uitgeoefend. Met name in Ada zijn nogal wat verschillende extensies toegevoegd, waardoor deze taal in vergelijking met dezelfde Pascal niet compact te noemen is. Qua aantal features lijkt het eerder op PL/1. Maar aangezien de makers van Ada vooral de nadruk legden op het voldoen aan de wensen van de Amerikaanse "eerste afdelingen", de middelen voor gegevensprivacy (zichtbaarheid) en de mogelijkheid om afzonderlijke blokken te maken met alleen specificaties (interfacebeschrijvingen van modules) van andere ontwikkelaars waren de meest perfecte voor hun tijd. Een programmeur die daadwerkelijk code schreef voor het berekenen van de vliegbaan van een kruisraket had bijvoorbeeld geen idee waar en voor welke doeleinden zijn module zou worden gebruikt, hoewel hij toegang had tot de vereiste specificaties van andere medewerkers en zijn codegedeelte gemakkelijk kon debuggen . Door de strikte afbakening van toegang tot verschillende niveaus van specificaties, is het soms zelfs onmogelijk om te bepalen waarvoor en met welke middelen een bepaalde procedure zal worden aangeroepen. Dit verlangen naar onafhankelijke softwareontwikkeling heeft echter geleid tot een zeer complex systeem van relaties tussen modulespecificaties en het ontstaan ​​van enkele "gaten" die bijwerkingen kunnen veroorzaken, waarvan de aanwezigheid echter door het Amerikaanse DoD zelfs nuttig werd gevonden.

De elementen van het typen van gegevens zijn aanzienlijk versterkt en de typen zelf zijn meer geformaliseerd. Alle I/O-gerelateerde functies zijn verwijderd uit de standaardsyntaxis en het afhandelen van uitzonderingen werd een integraal onderdeel van de taal. Bovendien werd de kracht van controlestructuren tot het uiterste gedreven, waardoor Ada de meest geavanceerde van andere Pascal-achtige talen werd.

Borland bracht al snel zijn Turbo Pascal uit, waarin het concept van een module was ingebouwd, en bracht zijn versie van Pascal dichter bij Ada in termen van mogelijkheden, maar verdere pogingen om 3e generatie non-object programmeertalen te creëren bedoeld voor de ontwikkeling van supergrote projecten zijn gelukkig niet gemaakt. Dus maakte Ada een einde aan een lange reeks eenvoudige proceduretalen, te beginnen met Fortran en Algol. In feite was alles wat in het kader van de ideologie van gestructureerd programmeren kon worden bedacht, in Ada belichaamd. Daarna bloeide objectprogrammering snel op en verdween Ada naar de achtergrond.

Deze taal bezet echter nog steeds een niche waarin het zijn gelijke nog niet kent. Naast de afzonderlijke compilatie van modules en het waarborgen van de hiërarchische geheimhouding van specificaties, implementeerde deze taal een functie als ondersteuning voor parallel programmeren. Uitgevoerd op min of meer hoog niveau in Algol-68, vervolgens ontwikkeld in Module-2, werd het belichaamd in zeer krachtige Ada-faciliteiten, de zogenaamde taken, die onafhankelijk van elkaar op parallelle computers kunnen worden uitgevoerd. Dit leidde tot de geboorte van een hele programmeerideologie gebaseerd op taken die "pseudo-parallel" konden worden uitgevoerd - op een computer met een enkele processor. Tegelijkertijd werd het probleem dat werd opgelost opgedeeld in een reeks simultaan werkende procedures, die onafhankelijk van elkaar op elkaar inwerkten. Het was een beetje als een manier om een ​​probleem op te lossen in Prolog: een bepaalde virtuele wereld wordt simpelweg beschreven, en dan wordt hij als het ware in werking 'gelanceerd', en de oplossing is vanzelf gevonden.

Het is des te verrassender dat het Amerikaanse Ministerie van Defensie om de een of andere reden afstand heeft gedaan van de objectideologie, die perfect was belichaamd in

60s in Simula-67, en heb er waarschijnlijk meer dan eens spijt van gehad. Toegegeven, er werd een zielige vervanging geïntroduceerd voor een aantal functies die worden geboden door objectgeoriënteerd programmeren in de Ada-taal - de zogenaamde sjablonen, dat wil zeggen procedures met parameters van ongedefinieerde typen. Maar toch, de belangrijkste voordelen van Ada, waardoor het de aanval van meer ontwikkelde talen van vandaag kan weerstaan, waren, naast krachtige financiering, ingebouwde ondersteuning voor de parallelle uitvoering van taken en krachtige middelen om hun interactie te coördineren. Opgemerkt moet worden dat de belangrijkste oriëntatie van Ada geenszins boekhoudkundige automatiseringssystemen in het Amerikaanse ministerie van Defensie zijn, maar puur gevechtstaken van het soort, bijvoorbeeld microprocessorgebaseerde navigatie in realtime van een homing-raket, waar het is vereist om gelijktijdig continu informatie te verwerken die afkomstig is van verschillende sensoren. Voorheen werden dergelijke taken geschreven in assembler, wat leidde tot veel fouten en problemen bij het onderhoud. Voor dergelijke taken past Ada natuurlijk perfect.

Ada blijft zichzelf echter positioneren als een goed hulpmiddel voor het ontwikkelen van grote softwaresystemen. Toegegeven, nu klinken de stemmen ter ondersteuning van deze taal al stiller, zoiets als dit: "Ada is minstens zo goed als C". Het Amerikaanse ministerie van Defensie heeft, rekening houdend met zijn grootste blunder - het ontbreken van objecten, in overeenstemming met de moderne vereisten voor, een nieuwe taalstandaard ISO / IEC 8652: 1985 (E) ontwikkeld. Het beschrijft de taalversie Ada95 (of Ada9X). Het meest interessante is dat deze versie 's werelds eerste objectgeoriënteerde programmeersysteem is, waarvoor de internationale standaard blijkbaar in opdracht is geïntroduceerd (dit is nog niet mogelijk met C ++). Daarnaast is het systeem voor het afstemmen van de zichtbaarheid van gegevens in modulespecificaties verbeterd in de taal en zijn er tools toegevoegd om de efficiëntie van parallelle taken te verbeteren.

De Amerikaanse DoD is behoorlijk jaloers op zijn dure geesteskind en registreerde zelfs het woord "Ada" als handelsmerk. Toegegeven, later besloot de MO in plaats van een handelsmerk "Ada" te gebruiken als haar interne gecertificeerde markering. De Amerikaanse DoD is niet bijzonder blij met het verschijnen van commerciële versies van deze taal. Natuurlijk heeft niemand het recht om u te verbieden uw eigen compiler te schrijven, maar om commerciële erkenning te krijgen, moet het voldoen aan de militaire standaard en wordt het testen alleen uitgevoerd door de AJPO-commissie van het Amerikaanse ministerie van Defensie. , die zeer strikt controleert of de compiler aan veel vereisten voldoet, waaronder uiteraard en puur politiek.

Desalniettemin kunnen verschillende versies van Ada gratis worden verkregen, zoals meestal het geval is met programmeertalen, dat wil zeggen gratis, maar niet op illegale wijze, maar gewoon freeware-versies, en natuurlijk voor geld.

Van de vrij verspreide versies is het allereerst noodzakelijk om de GNAT-compiler - GNU Ada95 - uit te kiezen. Als onderdeel van het GNU-project (gratis software) kan het in broncode worden verkregen. Het kan ook werken op een computer met één processor, het is alleen nodig dat het besturingssysteem multitasking ondersteunt. Dit kan bijvoorbeeld een versie van UNIX of OS/2 zijn. Wat betreft MS DOS - raad het zelf maar. Als u echter echt honderd of twee parallelle processen op uw pc wilt uitvoeren onder MS DOS 6.x, dan kunt u Ada / Ed proberen - de compiler en interpreter van de 1987-versie van de taal, die echter volledig is onverenigbaar met de norm en heeft een aantal essentiële elementen niet.

Als er geld is, wordt de situatie natuurlijk gefaciliteerd. Binnen het maandsalaris van een gemiddelde Russische programmeur kun je bijvoorbeeld FirstAda kopen en een koelkastbesturingssysteem schrijven. Voor duurdere DOD-gecertificeerde Windows-, OS/2- of UNIX-systemen kunt u proberen rechtstreeks bij een tiental leveranciers te kopen.

Interessant genoeg was niet alleen de taal zelf gestandaardiseerd, wat het mogelijk maakte om gemakkelijk overdraagbare programma's te maken, maar ook een reeks ontwikkelaarshulpmiddelen - verschillende I / O-bibliotheken en GUI-organisaties, preprocessors, verifiers, codegeneratoren, logische structuuranalyzers van broncode, programma's voor het testen van compilers enz. Natuurlijk zijn er grote pakketten die alle gestandaardiseerde ontwikkeltools bevatten, maar die lijken erg duur te zijn.

Het zou heel interessant zijn om te weten of de USSR werkte aan talen die waren ontworpen om soortgelijke militaire taken op te lossen. Of schreven onze specialisten alleen in Assembler?

Taal kenmerken

"Hallo Wereld!" op de hel

Verschillende versies van de "Hello, world!" is te zien op Wikibooks. De verschillen zijn te wijten aan de noodzaak om de bibliotheekfunctie Put_Line te gebruiken - er zijn drie verschillende manieren in deze taal om dit gebruik te organiseren.

met Ada.Text_IO;

procedure Hallo is

Gebruik Ada.Text_IO;

Put_Line("Hallo wereld!");

einde Hallo;

Hier, om de Put_Line-functie toe te passen, wordt het Ada.Text_IO-pakket dat het bevat, geïmporteerd met behulp van de use-constructie, wat het mogelijk maakt om de functie bij naam aan te roepen zonder kwalificatie - waarbij de naam van het pakket dat de functie bevat in de aanroep wordt gespecificeerd.

Verhaal

De ontwikkeling van de taal werd uitgevoerd als onderdeel van een internationale wedstrijd georganiseerd en gefinancierd door het Amerikaanse ministerie van Defensie. Het doel van de ontwikkeling was om een ​​programmeertaal te verkrijgen die één enkele taal zou kunnen worden voor het ontwikkelen van projecten in opdracht van de militaire afdeling , voornamelijk voor de ontwikkeling van militaire embedded systemen en voor grote militaire computers (gebaseerd op iAPX 432-processor van Intel). Het werk begon in 1975 met het opstellen van een reeks vereisten voor de taal, die de ontwikkelaars van dit soort systemen volledig tevreden zou stellen. De eerste lijst met vereisten, uitgegeven onder de codenaam "Straw", werd ter beoordeling voorgelegd aan een aantal organisaties en firma's, werd in de loop van twee jaar consequent verfijnd en veranderde uiteindelijk in een definitief document genaamd "Steel".

Nadat de formatie van de eisen was afgerond, is er een analyse uitgevoerd waaruit bleek dat geen van de bestaande programmeertalen in voldoende mate aan de eisen voldeed, dus werd besloten om een ​​nieuwe taal te ontwikkelen. Een wedstrijd voor de oprichting ervan werd aangekondigd in 1977, de ontwikkelaars werd gevraagd om zich te baseren op een van de drie talen: Pascal, Algol-68 of PL / 1.

Van de 15 ingediende projecten voor de competitie werden er 4 geselecteerd (allemaal op basis van Pascal). Deze projecten werden verzonden voor verdere ontwikkeling. In de volgende fase werden van de 4 projecten er twee geselecteerd, waarvan er na nog een herziening één werd geselecteerd. Deze taal kreeg de naam "Ada" - de groep die het ontwikkelde, geleid door de Fransman Jean Ishbia, noemde de taal ter ere van Augusta Ada King Lovelace (dochter van de dichter J. Byron), die wordt beschouwd als de eerste programmeur ter wereld voor het ontwikkelen van programma's voor Babbage's computer.

Dijkstra betwijfelde in een van zijn artikelen of een taal van zo'n complexiteit als het Ada wel te overzien en te beheersen was. Hij merkte op: “Als Ada een norm gaat uitgeven, is het wenselijk dat die ondubbelzinnig wordt gedocumenteerd. Ten minste twee groepen hebben geprobeerd dit te doen; als resultaat produceerden beide ongeveer 600 pagina's formele tekst. Dit is veel meer dan nodig is om ervoor te zorgen dat het onmogelijk is om zelfs maar vast te stellen dat beide documenten dezelfde taal definiëren. De fout in de schijnbare onhandelbaarheid van deze twee documenten ligt noch in de twee groepen die ze hebben samengesteld, noch in het formalisme dat ze hebben aangenomen, maar alleen in de taal zelf: door geen formele definitie te geven van of de ontwikkelaars kunnen verbergen dat ze een onhandelbaar monster. Dat Ada programmeerproblemen zal verminderen en de betrouwbaarheid van onze ontwerpen tot acceptabele limieten zal verhogen, is slechts een van die sprookjes waar alleen mensen met een militaire achtergrond in kunnen geloven.

Hoare sprak zijn spijt uit dat "rammelaars en snuisterijen voorrang hebben op de fundamentele vereisten van betrouwbaarheid en veiligheid" en waarschuwde voor "een armada van raketten die de verkeerde kant op vliegen als gevolg van een onopgemerkte fout in de Ada-compiler." Niklaus Wirth sprak terughoudender, maar ook negatief. Hij zei: "Er wordt te veel naar de programmeur gegooid. Ik denk niet dat je normaal kunt werken als je een derde van Ada hebt bestudeerd. Als u niet alle details van de taal beheerst, kunt u er in de toekomst over struikelen, en dit zal tot onaangename gevolgen leiden. Jean Ishbia, de leider van het ontwikkelingsteam van Ada, sprak weliswaar zijn "respect en bewondering" uit voor Wirth, maar was het daar niet mee eens en zei: "Wirt gelooft in eenvoudige oplossingen voor complexe problemen. Ik geloof niet in zulke wonderen. Complexe problemen vragen om complexe oplossingen.”

De procedure voor het controleren van de conformiteit van de compiler met de taalstandaard door testen roept ook twijfels op. Uit algemene overwegingen blijkt duidelijk dat testen inconsistenties kan vinden, maar de juistheid niet kan garanderen. Een praktische bevestiging hiervan is het feit dat gecertificeerde samenstellers bij het testen op een andere reeks tests niet-naleving van de .

Aanhangers van Ada beweren dat het enige alternatief voor een grote en complexe taal in grote projecten het gebruik van verschillende compacte talen is, wat onvermijdelijk compatibiliteitsproblemen veroorzaakt, waarvoor Ada is uitgevonden om er vanaf te komen. Ze merken ook op dat het begrip complexiteit in Ada-ontwikkeling slechts ten dele waar is: het schrijven van een eenvoudig programma in Ada kost meer tijd dan in andere minder formele talen zoals C, maar het debuggen en onderhouden van programma's, vooral grote en complexe programma's, is sterk vereenvoudigd. Volgens Stephen Zeiger van de Rational Software Corporation is softwareontwikkeling in Ada over het algemeen 60% goedkoper en heeft het ontwikkelde programma 9 keer minder defecten dan het gebruik van de C-taal.

Distributie, vooruitzichten

In de praktijk bleek dat Ada, nadat ze de daarvoor bestemde niche had ingenomen in de militaire en aanverwante ontwikkelingen van ingebedde systemen, niet verder ging dan deze niche, noch in het Westen, noch in de USSR, noch in de post-Sovjet-ruimte . Daar zijn veel redenen voor. Tegenstanders van de taal berusten op de complexiteit en tekortkomingen ervan, aanhangers spreken in de eerste plaats over de objectieve omstandigheden van het uiterlijk van de taal en de negatieve aspecten van het implementatieproces. De mening van S. I. Rybin, senior onderzoeker aan het Onderzoeks- en Ontwikkelingscentrum van de Staatsuniversiteit van Moskou, adviseur van AdaCore EU, een expert op het gebied van de Ada-taal van de ISO-werkgroep over de taalstandaard, is interessant. Hij gelooft dat Ada zijn mislukkingen te danken heeft aan twee belangrijke redenen:

  • Tijdens het ontwerp van de taal ging het Pentagon ervan uit dat alle nieuwe software alleen in Ada zou worden gemaakt. Hierdoor kreeg Ada uiterst primitieve middelen om met programma's in andere talen om te gaan. In de praktijk bleek dat alles schrijven in Ada in het algemeen onrealistisch is (al was het maar omdat er behoefte was aan interactie met kant-en-klare ontwikkelingen in andere talen). Daarom hadden in bedrijfstakken waar er geen strikte eis was om "alleen in Ada te schrijven", de voorkeur aan andere talen, meer aangepast aan de meertalige omgeving. In de standaard van 1995 was het probleem van interoperabiliteit met andere talen opgelost, maar er ging tijd verloren.
  • Paradoxaal genoeg werd de verspreiding van Ada verhinderd door de financiële en organisatorische steun van het Pentagon. Ada-programma's die voor het leger waren geschreven, draaiden op de krachtigste beschikbare computertechnologie, dus compilerontwikkelaars gaven er eerst om de ACVC-tests te doorstaan, en pas daarna om de efficiëntie van de compiler en de code die deze creëerde. Begin jaren tachtig begon de opkomst van microcomputers en werden vertalers voor veelgebruikte talen (Pascal, C, BASIC) snel geoptimaliseerd voor energiezuinige systemen. Voor Ada was er geen stimulans voor een dergelijke modernisering, met als gevolg dat personal computers die een paar jaar later het grootste deel van het computerpark ter wereld werden, zonder een hoogwaardige Ada-vertaler kwamen te zitten. Natuurlijk verloor Ada dit marktsegment. Het was pas relatief recent dat de GNAT-compiler verscheen, van hoge kwaliteit en productief, maar ook hier ging tijd verloren.

Momenteel is Ada vrij stevig verankerd in de ontwikkeling van grote ingebedde systemen met verhoogde betrouwbaarheid, hier heeft ze praktisch geen sterke concurrenten. Het gebruik van de taal groeit gestaag, zij het vrij langzaam. Volgens sommige voorzichtige prognoses, met goedkopere hardware en de verspreiding van ingebedde systemen met complexe software, kan de markt voor programma's in Ada aanzienlijk groeien, evenals het gebruik van de taal.

Daarnaast kent Ada, zij het zeer beperkte, toepassingen in het hoger onderwijs. Speciale cursussen over Ada worden gegeven aan de Staatsuniversiteit van Moskou en de Universiteit van Kharkov. Echter, volgens dezelfde S.I. Rybin,

... nu heeft zich in de post-Sovjet-ruimte op het gebied van de software-industrie en het onderwijs een duidelijke vicieuze cirkel ontwikkeld: in de industrie weten ze praktisch niets van Ada, respectievelijk, er is geen vraag vanuit de industrie naar onderwijs om Ada-specialisten opleiden, en er komen nieuwe mensen van universiteiten naar de industrie, die praktisch niets van Ada weten.

Besturingssystemen geschreven in Ada

Ingebedde systemen

  • RTEMS is een open source besturingssysteem dat is ontwikkeld door DARPA, het Amerikaanse ministerie van Defensie
  • Ravenskar
  • RTOS-32 - eigen besturingssysteem

Systemen in ontwikkeling

  • AuroraUX (project om de OpenSolaris-kern te herschrijven naar Ada-taal)
  • Lovelace (kernel-besturingssysteem)

Niet meer bestaande systemen

  • BiiN™
  • Puls™
  • AdaOS

Hel samenstellers

NaamBedrijfVersiebesturingssysteemWebsite
AdaMagicSofCheckAda 95 ? www.sofcheck.com
AdaMULTIGreen Hills-softwareAda 83, Ada 95,