Ada-Hulpbronassociatie

Ada – overzicht

Ada is een moderne programmeertaal die is ontworpen voor grote, langlevende applicaties – en met name embedded systemen-waar betrouwbaarheid en efficiëntie essentieel zijn. Het werd oorspronkelijk ontwikkeld in de vroege jaren 1980 (deze versie is algemeen bekend als Ada 83) door een team onder leiding van Dr.Jean Ichbiah op CII-Honeywell-Bull In Frankrijk. De taal werd herzien en verbeterd in een opwaartse compatibele manier in de vroege jaren 1990, onder leiding van de Heer Tucker Taft van Intermetrics in de VS. De resulterende taal, Ada 95, was de eerste internationaal gestandaardiseerde (ISO) objectgeoriënteerde taal. Onder auspiciën van ISO werd een verdere (kleine) herziening voltooid als een wijziging van de standaard; deze versie van de taal is bekend als Ada 2005. Een meer significante herziening werd voltooid (inclusief ondersteuning voor programma annotaties) en staat bekend als Ada 2012. Een andere belangrijke herziening zal naar verwachting in 2022 worden afgerond.

de naam “Ada” is geen acroniem; het werd gekozen ter ere van Augusta Ada Lovelace (1815-1852), een wiskundige die soms wordt beschouwd als ‘ s werelds eerste programmeur vanwege haar werk met Charles Babbage. Ze was ook de dochter van de dichter Lord Byron.

Ada ziet wereldwijd een significant gebruik in domeinen met hoge integriteit / veiligheidskritische / hoge beveiliging, waaronder commerciële en militaire luchtvaartelektronica, luchtverkeersleiding, spoorwegsystemen en medische hulpmiddelen. Met zijn belichaming van moderne software engineering principes Ada is een uitstekende onderwijstaal voor zowel inleidende en geavanceerde Informatica cursussen, en het is het onderwerp van belangrijke universitaire onderzoek vooral op het gebied van real-time technologieën.

Language Overview

Ada is veelzijdig. Vanuit één perspectief is het een klassieke stack-gebaseerde algemene taal, niet gebonden aan een specifieke ontwikkelingsmethodologie. Het heeft een eenvoudige syntaxis, gestructureerde controle statements, flexibele data samenstelling faciliteiten, sterke Type controle, traditionele functies voor code modularisatie (“subprogramma ‘ s”), en een mechanisme voor het detecteren en reageren op uitzonderlijke runtime omstandigheden (“exception handling”).

maar het omvat ook veel meer:

scalaire bereiken

in tegenstelling tot talen gebaseerd op C-syntaxis (zoals C++, Java en C#), staat Ada de programmeur toe om eenvoudig en expliciet het bereik van waarden te specificeren dat is toegestaan voor variabelen van scalaire types (integer, floating-point, fixed-point, of enumeration types). De poging om een waarde buiten bereik toe te wijzen, veroorzaakt een runtime-fout. De mogelijkheid om range contraints te specificeren maakt programmeur Intentie expliciet en maakt het gemakkelijker om een belangrijke bron van codering en gebruikersinvoer fouten te detecteren.

programmeren in het grote

introduceerde het oorspronkelijke ontwerp van Ada 83 de package construct, een functie die encapsulatie (“informatie verbergen”) en modularisatie ondersteunt, en die de ontwikkelaar in staat stelt om de naamruimte te beheren die toegankelijk is binnen een bepaalde compilatie-eenheid. Ada 95 introduceerde het concept van “kindeenheden”, wat aanzienlijke Flexibiliteit toevoegt en het ontwerp van zeer grote systemen vergemakkelijkt. Ada 2005 breidde de modularisatiefaciliteiten van de taal uit door wederzijdse verwijzingen toe te staan tussen pakketspecificaties, waardoor het gemakkelijker werd om te communiceren met talen zoals Java.

Generieke sjablonen

een sleutel voor herbruikbare componenten is een mechanisme voor het parametreren van modules met betrekking tot gegevenstypen en andere programma-entiteiten, bijvoorbeeld een stack-pakket voor een willekeurig elementtype. Ada voldoet aan deze eis door middel van een faciliteit bekend als “generics”; aangezien de parametrering wordt gedaan tijdens het compileren, runtime prestaties worden niet bestraft.

Object-Oriented Programming (OOP)

Ada 83 was object-based, waardoor de partitionering van een systeem in modules die overeenkomen met abstracte gegevenstypen of abstracte objecten. Volledige OOP-ondersteuning werd niet geboden, omdat het in de eerste plaats niet nodig leek te zijn in het real-time domein dat het primaire doel van Ada was, en in de tweede plaats de schijnbare behoefte aan automatische vuilnisophaling in een OO-taal voorspelbare en efficiënte prestaties zou hebben verstoord.

echter, grote real-time systemen hebben vaak componenten zoals GUI ‘ s die geen real-time beperkingen hebben en die het meest effectief kunnen worden ontwikkeld met behulp van OOP-functies. Voor een deel om deze reden, Ada 95 levert uitgebreide ondersteuning voor OOP, door middel van zijn “tagged type” faciliteit: klassen, polymorfisme, overerving, en dynamische binding. Ada 95 vereist geen automatische garbage collection, maar levert definitiefuncties waarmee de ontwikkelaar type-specifieke opslag terugwinning operaties (“finalization”) leveren. Ada 2005 bood extra OOP-functies, waaronder Java-achtige interfaces en traditionele operation invocation notation.

Ada is methologisch neutraal en legt geen “distributed overhead” voor OOP op. Als een applicatie OOP niet nodig heeft, dan hoeven de OOP-functies niet te worden gebruikt, en er is geen run-time penalty.

gelijktijdige programmering

Ada levert een gestructureerde faciliteit op hoog niveau voor concurrency. De eenheid van concurrency is een programma entiteit bekend als een ” taak.”Taken kunnen impliciet communiceren via gedeelde data of expliciet via een synchrone besturingsmechanisme dat bekend staat als de rendezvous. Een gedeeld gegevensitem kan abstract worden gedefinieerd als een” beschermd object ” (een functie die is geïntroduceerd in Ada 95), waarbij bewerkingen worden uitgevoerd onder wederzijdse uitsluiting wanneer ze worden aangeroepen vanuit meerdere taken. Asynchrone taakinteracties worden ook ondersteund, met name timeouts en taakbeëindiging. Zoals asynchrone gedrag wordt uitgesteld tijdens bepaalde bewerkingen, om de mogelijkheid van het verlaten van gedeelde gegevens in een inconsistente staat te voorkomen. De nieuwste versies van Ada bevatten lichtgewicht mechanismen om te profiteren van multicore architecturen, waardoor zeer efficiënte parallelle computing mogelijk is, terwijl de draagbaarheid behouden blijft en binnen het veilige en goed gedefinieerde Ada concurrency-model blijft.

systeemprogrammering

zowel in de “kern” – taal als in de bijlage bij systeemprogrammering levert Ada de nodige functies om de programmeur in de buurt van de hardware te laten komen. U kunt bijvoorbeeld de bitlay-out voor velden in een record opgeven, de uitlijning en grootte definiëren, gegevens op specifieke machineadressen plaatsen en gespecialiseerde of tijdkritische codesequenties in de assembleertaal uitdrukken. U kunt ook interrupt handlers schrijven in Ada, met behulp van de protected type faciliteit.

Real-time programmering

met de taakfuncties van Ada kunt u gemeenschappelijke real-time idiomen (periodieke taken, event-driven taken) uitdrukken, en de real-Time bijlage biedt verschillende faciliteiten waarmee u grenzeloze prioriteitsinversies kunt vermijden. Er wordt een vergrendelingsbeleid voor beveiligde objecten gedefinieerd dat prioriteitsplafonds gebruikt; dit heeft een bijzonder efficiënte implementatie in Ada (mutexes zijn niet vereist) omdat beveiligde bewerkingen niet mogen blokkeren. Ada 95 definieerde een taak dispatching beleid dat in principe vereist taken uit te voeren tot Geblokkeerd of voorkomen, en Ada 2005 introduceerde een aantal anderen, waaronder vroegste Deadline eerst.

systemen met hoge integriteit

met de nadruk op solide software engineering principes ondersteunt Ada de ontwikkeling van toepassingen met hoge integriteit, met inbegrip van toepassingen die moeten worden gecertificeerd volgens veiligheidsnormen zoals DO-178B en beveiligingsnormen zoals de Common Criteria. Sterk typen betekent bijvoorbeeld dat gegevens die voor één doel bestemd zijn niet toegankelijk zijn via ongepaste bewerkingen; fouten zoals het behandelen van pointers als gehele getallen (of vice versa) worden voorkomen. En Ada ‘ s array bounds controle voorkomt buffer overschrijding kwetsbaarheden die gebruikelijk zijn in C en c++.

de volledige taal is echter niet geschikt voor een veiligheidskritieke toepassing, aangezien de algemeenheid en flexibiliteit de traceerbaarheids – / certificeringsvoorschriften kunnen verstoren. Ada lost dit probleem op door het leveren van een compiler directive, pragma Restrictions, die je in staat stelt om de taalfuncties te beperken tot een goed gedefinieerde subset (bijvoorbeeld, met uitzondering van dynamische OOP faciliteiten).

de ontwikkeling van Ada heeft geleid tot een voortdurende toename van de ondersteuning voor veiligheidskritische en hoogbeveiligingsapplicaties. Ada 2005 gestandaardiseerde het Ravenscar profiel, een verzameling van concurrency functies die krachtig genoeg zijn voor real-time programmering, maar eenvoudig genoeg om certificering praktisch te maken. Ada 2012 introduceerde annotatiefaciliteiten voor het toevoegen van pre-voorwaarden, post-Voorwaarden en invarianten aan programma ‘ s. Ada 2022 breidt deze uit met extra annotaties voor de standaard initiële voorwaarden, stabiele eigenschappen, niet-blokkering en globaal objectgebruik. Deze kunnen zowel dienen voor runtime controle als als input voor statische analyse tools.

Ada Overzicht van de Voordelen

  • Helpt u bij het ontwerpen van veilige en betrouwbare code
  • Vermindert de kosten voor de ontwikkeling
  • Ondersteunt de nieuwe en veranderende technologieën
  • Vergemakkelijkt de ontwikkeling van complexe programma ‘ s
  • zorgt ervoor dat de code leesbaar en draagbare
  • Vermindert de kosten verbonden aan de certificering voor de veiligheid kritieke software

Ada Functies Samenvatting

  • Object georiënteerd programmeren
  • Strong typing
  • Abstracties te passen programma domein
  • Generic programming/sjablonen
  • Uitzondering behandeling
  • Faciliteiten voor modulaire organisatie van de code
  • Standaard bibliotheken voor I/O, string handling, numerieke computing, containers
  • Systemen programmeren
  • Gelijktijdige programmering
  • Real-time programmering
  • Gedistribueerde systemen programmeren
  • Numerieke verwerking
  • Interfaces naar andere talen (C, COBOL, Fortran)

In het kort, Ada is een internationaal gestandaardiseerde taal combineren van object-georiënteerd programmeren functies, goed ontworpen gelijktijdigheid faciliteiten, real-time ondersteuning en ingebouwde betrouwbaarheid. Een geschikt hulpmiddel voor het aanpakken van de echte problemen waarmee software-ontwikkelaars vandaag de dag, Ada wordt gebruikt in een aantal grote industrieën om software te ontwerpen die bedrijven en levens beschermt.

Delen en Genieten:
  • e-mail
  • LinkedIn
  • Twitter
  • Facebook
  • Digg
  • RSS

Leave a Reply