Ada | |
---|---|
Sémantika | multiparadigma : konkurenční , zobecněné, imperativní , objektově orientované , distribuované programování, paralelní |
Jazyková třída | širokospektrální programovací jazyk [d] ,multiparadigmatický programovací jazyk,imperativní programovací jazyk,objektově orientovaný programovací jazykaprogramovací jazyk |
Typ provedení | sestaven |
Objevil se v | 1980 |
Autor |
|
Vývojář | Ishbia, Jean a S. Tucker Taft [d] [1] |
Uvolnění | Ada 2012 (10. prosince 2012 ) |
Testovací verze | Ada 2012 [3] (listopad 2011 ) |
Typový systém | statický , přísný , bezpečný , nominativní |
Hlavní implementace |
AdaCore GNAT , MapuSoft Ada-C/C++ Changer (AdaMagic) [4] , Green Hills Software Optimizing Ada 95 kompilátor, PTC ObjectAda [5] , skóre DDC-I |
Dialekty | SPARK , profil Ravenscar |
Byl ovlivněn | ALGOL 68 , Pascal , C++ (Ada 95), Smalltalk (Ada 95), Java (Ada 2005), Eiffel (Ada 2012) |
ovlivnil | C++, Eiffel , M10, M9.3, MAYA, Seed7 , PL/SQL , Nim |
webová stránka | adaic.org |
Mediální soubory na Wikimedia Commons |
Ada ( Ada ) je programovací jazyk vytvořený v letech 1979-1980 jako součást projektu ministerstva obrany USA s cílem vyvinout jednotný programovací jazyk pro vestavěné systémy (tedy systémy řízení v reálném čase pro automatizované systémy). V první řadě měli na mysli palubní řídicí systémy pro vojenská zařízení (lodě, letadla, tanky, střely, granáty atd.). Vývojáři neměli za úkol vytvořit univerzální jazyk, takže rozhodnutí učiněná autory Ady by měla být přijímána v kontextu vlastností zvolené oblasti. Jazyk je pojmenován po Adě Lovelace .
Ve své původní podobě, standardizované v roce 1983, je Ada strukturovaný modulární programovací jazyk obsahující nástroje pro programování paralelních procesů na vysoké úrovni. Adina syntaxe je zděděna z jazyků jako Algol nebo Pascal , ale je rozšířena a je přesnější a logičtější. Ada je silně typovaný jazyk , vylučuje práci s objekty, které nemají typy , a automatické převody typů jsou omezeny na absolutní minimum: je povoleno implicitně přetypovat hodnotu běžného celého čísla nebo skutečného číselného typu na kompatibilní číselný typ. [6] . Ve standardu 1995 byly k jazyku přidány základní objektově orientované programovací nástroje , ve standardu 2007 byly tyto nástroje doplněny, takže moderní Ada je objektově orientovaný programovací jazyk.
Jazyk nerozlišuje velká a malá písmena. Syntaxe je podobná Algolu, v duchu jazyků konce 70. let: všechny řídicí struktury, které začínají klíčovým slovem, končí klíčovým slovem a umožňují umístit dovnitř libovolný počet operátorů, což eliminuje často kritizovanou inherentní nevýhodu. v Algol-60 a Pascal: potřeba častého používání "operátorových závorek" begin-end. Podrobnosti syntaxe jsou navrženy tak, aby se snížila pravděpodobnost náhodných chyb. Například je zakázáno používat v identifikátorech několik podtržítek za sebou. Konečná klíčová slova pro různé řídicí struktury se liší: podmíněný příkaz ifkončí kombinací end if, smyčky kombinací end loop, operátor s více možnostmi end caseatd. Zpracování strukturálních výjimek je podporováno na úrovni syntaxe jazyka .
Jazyk má vyvinutý typový systém, vestavěný i generovaný programátorem. Existuje mnoho způsobů, jak vytvářet nové typy, jazyk podporuje dva různé koncepty: "podtyp" a "odvozený typ". Proměnné typu a podtypu jsou kompatibilní, proměnné typu a od něj odvozeného typu nikoli.
Procedury a funkce podporují vstupní a výstupní parametry, předávání parametrů podle názvu a parametrů s výchozími hodnotami. Podporována je redefinice procedur, funkcí a operátorů - vytvoření více variant procedury, funkce nebo operátoru se stejným názvem, ale různými signaturami (typy a počtem parametrů).
Programy jsou modulární, mechanismus pro řízení importu-exportu popisů mezi moduly zahrnuje dvě různé direktivy: jednu pro připojení dalšího modulu ( with), druhou pro import jeho popisů ( use). Modul je také možné přejmenovat při importu ( rename) - tato volba umožňuje použít identifikátory, které jsou pro programátora pohodlnější pro označení balíčku. Balíčky (jeden z typů modulů) mohou obsahovat hlavičku a privátní část – to, co je v ní obsaženo, se neexportuje a není dostupné pro ostatní moduly. Je podporován mechanismus zobecněných (generických) modulů : balíčky, procedury a funkce, které umožňují popisovat algoritmy zpracování dat bez uvedení konkrétního typu.
Struktury podpory paralelního programování jsou zabudovány do jazyka : jsou podporovány koncepty „úloha“ (paralelně prováděný fragment programu), „vstup úlohy“ (prostředek synchronizace a komunikace paralelních úloh), je podporován mechanismus setkání (protokol pro interakci paralelních úloh prostřednictvím vstupu jedné z nich) existuje výběrový operátor SELECTpro organizování podmíněné mezivláknové interakce (výběr paralelní úlohy, se kterou se bude interagovat, v závislosti na připravenosti na setkání a některých dalších podmínkách). V zásadě jsou nástroje paralelního programování dostupné v tomto jazyce dostatečné k řešení velké třídy úloh, které vyžadují paralelní zpracování, aniž by bylo nutné používat externí nástroje, jako jsou další knihovny nebo rozhraní API operačního systému.
Aby byly splněny požadavky na spolehlivost, je jazyk navržen tak, aby bylo ve fázi kompilace detekováno co nejvíce chyb . Navíc jedním z požadavků při vývoji jazyka byla co nejsnadnější čitelnost programových textů , a to i na úkor snadnosti psaní [7] . Výsledkem tohoto přístupu byla poněkud „těžká“ syntaxe a mnoho omezení, která chybí v nejběžnějších univerzálních jazycích (jako jsou C a C++ ), například stejně silné psaní . To vedlo k vytvoření myšlenky Ada jako složitého, nejasného a nepohodlného jazyka k použití [8] .
Ukázkový program Hello, world! »:
s Ada.Text_IO ; procedura Dobrý den , používám Ada.Text_IO ; begin Put_Line ( "Ahoj světe!" ); konec Ahoj ;Zde se pro použití funkce importuje Put_Linebalíček, který ji obsahuje, Ada.Text_IOpomocí konstruktu use, který umožňuje volat funkci jménem bez kvalifikace - zadáním názvu balíčku obsahujícího funkci ve volání.
Vývoj jazyka byl součástí mezinárodní soutěže organizované a financované ministerstvem obrany USA . Cílem vývoje bylo získat programovací jazyk , který by se mohl stát jednotným pro vývoj projektů zadávaných ministerstvem armády, zejména pro vývoj vestavěných vojenských systémů a pro velké vojenské počítače (na bázi procesoru iAPX 432 od Intel ). Práce začaly v roce 1975 vytvořením sady jazykových požadavků, které by plně uspokojily vývojáře systémů tohoto typu. Počáteční seznam požadavků, vydaný pod krycím názvem „Strawman“ („Straw“), byl předložen k posouzení řadě organizací a firem, po dobu dvou let byl důsledně zpřesňován a procházel přes „Woodenman“ („Wooden“). , "Tinman" ("Tin"), "Ironman" ("Iron") a nakonec se proměnil v konečný dokument s názvem "Steelman" ("Ocel"). Steelman byl propuštěn v červnu 1978 [DoD 1978] [9] .
Ještě před konečným dokončením tvorby požadavků analýza ukázala, že žádný ze stávajících programovacích jazyků dostatečně nesplňuje požadavky, a tak bylo rozhodnuto vyvinout jazyk nový. Soutěž na jeho vytvoření byla vyhlášena v roce 1977 , vývojáři byli požádáni, aby zakládali na jednom ze tří jazyků: Pascal , Algol-68 nebo PL/1 . Z 15 projektů přihlášených do soutěže byly vybrány 4 (všechny založené na Pascalu). Tyto projekty byly zaslány k dalšímu rozvoji. V další fázi byly ze 4 projektů vybrány dva, z nichž po další revizi byl vybrán jeden. Tento jazyk se nazýval „Ada“ – skupina, která jej vyvinula, vedená Francouzem Jeanem Ishbiou , pojmenovala jazyk na počest Augusty Ady King Lovelace (1815-1852), dcery básníka George Byrona , který vyvinul programy pro Babbageův počítač. a je považován za prvního programátora na světě.
V roce 1983 byl jazyk oficiálně standardizován ANSI . Jazyková norma ANSI /MIL-STD-1815-A-1983 byla schválena 17. února 1983. Americké ministerstvo obrany vytvořilo „Ada“ registrovanou ochrannou známkou, která zakazuje uvolnění překladatelů jazyka, kteří neprošli oficiálním testovacím postupem pro shodu s normami. Postup spočíval ve spuštění velkého množství (více než 1000) testovacích programů (tzv. ACVC set) přes testovaný kompilátor , u každého z nich byl jednoznačně určen výsledek testu: buď úspěšná kompilace, nebo vystavení velmi konkrétní chybová zpráva. Testování probíhalo podle principu „vše nebo nic“ – pokud došlo k chybě při zpracování alespoň jednoho testovacího případu, byl kompilátor považován za neprošel testem a testování bylo platné pouze na hardwarové a softwarové platformě na která byla provedena. Tímto způsobem byla v zárodku potlačena možnost tvorby dialektů jazyka Ada.
V roce 1987 byl jazyk Ada oficiálně standardizován organizací ISO . Od té doby ministerstvo obrany USA umístilo jazyk ve veřejné doméně .
V roce 1990 již bylo na světě asi 200 překladačů , které odpovídaly jazykovému standardu Ada.
V roce 1995 byl přijat nový standard Ada, známý jako Ada95. Do jazyka byly zavedeny nástroje objektového programování. Jazyk byl navíc doplněn o pokročilejší nástroje pro interakci s programy napsanými v jiných jazycích.
V březnu 2007 byly zveřejněny změny standardu Ada [10] . Dotkli se především možností objektově orientovaného programování : byla představena rozhraní , byla přijata syntaxe pro volání metody, která je běžná pro většinu hybridních jazyků, a byla provedena řada doplňků.
V roce 2012 ISO přijalo a zveřejnilo nový jazykový standard [11] .
V roce 1984 sovětský novinář Melor Sturua v novinách Izvestija uvedl následující hodnocení programovacího jazyka Ada:
Jazyk Pentagonu je nepřítelem světa. Jazyk "Ada" je hlasem termonukleárního pekla... V jazyce "Ada" člověk slyší kletbu na lidskou rasu.
- M. G. Sturua . 1984 a "1984" [12]V 80. letech 20. století byla pod Státním výborem SSSR pro vědu a techniku organizována pracovní skupina pro jazyk Ada . Skupina se zabývala studiem všech otevřených (a podle pověstí získaných tajnou rozvědkou) dat o jazyce Ada a zkoumala možnost a účelnost vývoje a použití Ady v SSSR. Činnost této skupiny vedla do konce 80. let k vývoji překladačů Ada pro téměř všechny počítače používané v SSSR. Několik knih o jazyce Ada bylo vydáno v ruštině.
Na Moskevské státní univerzitě se pracovalo na vytvoření vlastních balíčků pro testování překladačů reklam na shodu s normami. Na Leningradské státní univerzitě byl k vytvoření systému Ada použit systém Pallada, který byl dříve vyvinut pro implementaci Algol-68, který byl převeden na Ada. Systém obsahuje integrované vývojové prostředí, kompilátor, textový editor, debugger, knihovny, systém správy verzí a interpret příkazů.
Po rozpadu SSSR byly práce na distribuci Ady prakticky přerušeny. Je pravda, že byly přijaty tři programy pro vývoj softwaru na Ada (na ministerstvu obrany , ministerstvu civilního letectví a ministerstvu školství a vědy ), ale jejich vývoj je pomalý a nekoordinovaný. V důsledku toho je jazyk Ada v Rusku málo známý , většina moderních ruských programátorů jej považuje za „mrtvý jazyk“ a nic o něm neví. Ada je používán v Rusku a SNS jednotlivými nadšenci. Jazyk se však používá pro vývoj průmyslového softwaru. Existuje několik projektů vyvinutých na Ada a pracujících v Rusku. Mezi nimi:
Od svého vzniku byla Ada kritizována některými uznávanými autoritami v oblasti vývoje programovacích jazyků, především pro složitost syntaxe a velký objem. Konkrétně jazyk kritizovali Charles Hoare a Niklaus Wirth (kteří se se svým projektem této soutěže zúčastnili, ale po první fázi vypadli), stejně jako Edsger Dijkstra .
Dijkstra pochyboval, že jazyk tak složitý, jako je Ada, lze vidět a ovládat.
Pokud bude Ada standard vydávat, je žádoucí, aby byl jednoznačně doložen. Alespoň dvě skupiny se o to pokusily; v důsledku toho oba vyprodukovaly asi 600 stran formálního textu. To je mnohem více, než je nutné, aby bylo zajištěno, že není možné ani pevně stanovit, že oba dokumenty definují stejný jazyk. Chyba ve zjevné neovladatelnosti těchto dvou dokumentů nespočívá ve dvou skupinách, které je zkompilovaly, nikoli ve formalismu, který přijaly, ale pouze v jazyce samotném: aniž by poskytli formální definici, zda jeho vývojáři mohou skrývat, že nabízejí neovladatelné monstrum. . Že Ada omezí problémy s programováním a zvýší spolehlivost našich návrhů na přijatelné limity, je jen jedna z těch pohádek, kterým mohou věřit jen lidé s vojenským zázemím.
— Sci-fi a vědecká realita v informatice (Edsger W. Dijkstra, EWD952)Hoare vyjádřil lítost nad tím, že „chrastítka a cetky mají přednost před základními požadavky na spolehlivost a bezpečnost“ a varoval před „armádou raket letící špatným směrem kvůli neodhalené chybě v kompilátoru Ada“. Niklaus Wirth mluvil rezervovaněji, ale také negativně. Řekl: „Na programátora se hází příliš mnoho. Nemyslím si, že když má člověk nastudovanou třetinu Ady, může normálně pracovat. Pokud neovládáte všechny detaily jazyka, můžete o ně v budoucnu narazit, což povede k nepříjemným následkům . Jean Ishbia , vedoucí vývojového týmu Ada, když vyjádřil svůj „respekt a obdiv“ k Wirthovi, nesouhlasil a řekl: „Wirt věří v jednoduchá řešení složitých problémů. Na takové zázraky nevěřím. Složité problémy vyžadují komplexní řešení."
Pochybnosti vzbuzuje i postup kontroly shody překladače s jazykovou normou testováním. Z obecných úvah je zřejmé, že testování může najít nesrovnalosti, ale nemůže zaručit správnost. Praktickým potvrzením toho je skutečnost, že certifikovaní kompilátoři při testování na jiné sadě testů zjistili nesoulad s normou [14] .
Zastánci Ady tvrdí, že jedinou alternativou k velkému a složitému jazyku ve velkých projektech je použití několika kompaktních jazyků, což nevyhnutelně vytváří problémy s kompatibilitou, kterých byla Ada vynalezena, aby se zbavila. Poznamenávají také, že představa složitosti ve vývoji Ada je pravdivá jen částečně: psaní jednoduchého programu v Ada zabere více času než v jiných méně formálních jazycích, jako je C , ale ladění a údržba programů, zejména velkých a složitých programů, je značně zjednodušené. Podle Stephena Zeigera z Rational Software Corporation [15] je vývoj softwaru v Adě obecně o 60 % levnější a vyvinutý program má 9krát méně defektů než použití jazyka C.
V praxi se ukázalo, že Ada, která obsadila výklenek pro ni určený ve vojenství a souvisejícím vývoji vestavěných systémů, nepřekročila tento výklenek ani na Západě, ani v SSSR, ani v postsovětském prostoru. Důvodů je mnoho. Odpůrci jazyka spočívají na jeho složitosti a nedostatcích, zastánci hovoří především o objektivních okolnostech vzhledu jazyka a negativních aspektech procesu jeho implementace. Podle S. I. Rybina, vedoucího výzkumného pracovníka Moskevské státní univerzity, konzultanta AdaCore EU, experta na jazyk Ada pracovní skupiny ISO pro jazykovou normu [14] , vděčí Ada za své neúspěchy dvěma hlavním důvodům:
Nicméně podle některých opatrných předpovědí s levnějším hardwarem a rozšířením vestavěných systémů se složitým softwarem může trh s programy v Adě výrazně růst:
… Ada je docela pevně ve výklenku velkých vestavěných systémů s vysokými požadavky na spolehlivost a je nepravděpodobné, že by v dohledné době někomu v tomto výklenku ustoupila. Vzhledem k tomu, že výkon hardwarových komponent roste, zatímco jejich cena klesá, vestavěné systémy jsou stále složitější a může se ukázat, že potenciální trh pro aplikace Ada brzy výrazně poroste.
— Rozhovor se S.I. Rybina [14]Ada má navíc, i když velmi omezené, uplatnění ve vysokoškolském vzdělávání. Speciální kurzy o Adě se vyučují na Moskevské státní univerzitě a Charkovské univerzitě. Nicméně, podle stejného S.I. Rybina ,
... nyní se v postsovětském prostoru v oblasti softwarového průmyslu a vzdělávání rozvinul zjevný začarovaný kruh: v branži o Adě prakticky nevědí, respektive není ze strany průmyslu poptávka po vzdělání vyškolit specialisty Ada a do průmyslu přicházejí noví lidé z univerzit, kteří o Adě prakticky nic nevědí.
Řada operačních systémů je napsána v Ada, mezi nimi MaRTE Archived 10. července 2017 na Wayback Machine , RTEMS (open source systém vyvinutý společností DARPA , ministerstvo obrany USA , používaný v raketových systémech a na palubě Mars Reconnaissance Orbiter jako řídicí rádiový modul "Electra"), Ravenskar , RTOS-32 . Několik dalších projektů pro vytváření operačních systémů na Ada je ve vývoji, mezi nimi - AuroraUX - projekt přepsání jádra OpenSolaris a poté - DragonFly BSD , stejně jako projekt vytvoření systému Lovelace na mikrojádru L4 .
Dříve existovaly další operační systémy napsané v Ada, mezi nimi - BiiN, Pulse, AdaOS.
V současné době je vyvíjen operační systém Muen [16] , napsaný v Ada a SPARK, používá se výukový OS Ada Bare bones [17] , Microkernel Ada (TAMP [18] ).
název | Společnost | Verze | Cílové platformy | webová stránka |
---|---|---|---|---|
Kompilátory projektu DragonLace (GNAT AUX a budoucí kompilátory DRACO Ada) | komunitní projekt | Ada - všechny verze jazyka; verze kompilátoru: 4.9.x nebo 6.3.x (pro různé platformy) | LLVM, DragonFly, FreeBSD, NetBSD, OpenBSD, OmniOS, Android | http://www.dragonlace.net/ Archivováno 31. března 2018 na Wayback Machine |
Ada-C/C++ Changer (založený na technologii AdaMagic) | MapuSoft | Ada 83, Ada 95, podmnožina Ada 2005 | C, C++ | www.mapusoft.com Archivováno 21. listopadu 2016 na Wayback Machine |
Ada/Ed | New York University | Ada 83 | MS-DOS x86 , UnixWare | www2.informatik.uni-stuttgart.de |
AdaMagic | SofCheck | Ada 95 | ? | www.sofcheck.com Archivováno 4. března 2021 na Wayback Machine |
AdaMULTI | Software Green Hills | Ada 83, Ada 95, C , C++ , Fortran | Solaris SPARC , GNU / Linux x86 , Windows | www.ghs.com Archivováno 15. ledna 2021 na Wayback Machine |
DEC Ada | Hewlett Packard | Ada 83 | openvms | h71000.www7.hp.com |
KOMÁR | AdaCore | Ada 83, Ada 95, Ada 2005, Ada 2012, C | Solaris SPARC, Linux x86/ x86-64 , Windows, Java Virtual Machine , další | libre.adacore.com Archivováno 12. února 2005 na Wayback Machine |
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 Archivováno 2. května 2009 na Wayback Machine |
Janus/Ada | Software RR | Ada 83, Ada 95 | SCO , UnixWare , Interactive , MS-DOS , Windows | www.rrsoftware.com Archivováno 21. ledna 2022 na Wayback Machine |
MAXAda | Souběžné | Ada 95 | Linux/ Xeon , PowerPC | www.ccur.com Archivováno 3. září 2011 na Wayback Machine |
ObjectAda | PTC | Ada 95, Ravenskar | Solaris SPARC, VxWorks , HP-UX , IBM AIX , Linux, Windows, Java Virtual Machine /Java s podporou prohlížeče | www.ptc.com Archivováno 10. října 2016 na Wayback Machine |
PowerAda | OC systémy | Ada 83, Ada 95 | Linux, AIX (Ada 95); IBM System 370/390 (Ada 83) | www.ocsystems.com Archivováno 24. srpna 2010 na Wayback Machine |
Racionální Apex | IBM Rational | Ada 83, C, C++ | Solaris SPARC Linux | www-01.ibm.com Archivováno 27. září 2009 na Wayback Machine |
SKÓRE | DDC-I | Ada 83, Ada 95, C, Fortran | Solaris SPARC, Windows | www.ddci.com |
XD Ada | SWEP-EDS | Ada 83 | OpenVMS Alpha/VAX | www.swep-eds.com |
XGC Ada | Software XGC | Ada 83, Ada 95, C | Solaris SPARC, PC Linux, Windows ( Cygwin ) | www.xgc.com Archivováno z originálu 9. února 2013. |
LLVM ( nízkoúrovňový virtuální stroj ) | LLVM Developer Group | na většině systémů podobných UNIX a Windows | llvm.org | |
A# (port Ada na platformu Microsoft .NET ) | United States Air Force Academy ( GNU ) | Okna | asharp.martincarlisle.com Archivováno 2. července 2011 na Wayback Machine |
S výjimkou LLVM , GNAT a XGC (pro některé platformy) jsou výše uvedené kompilátory placené. Některé společnosti, jako například Aonix , nabízejí bezplatné ukázky, které jsou buď časově nebo funkčně omezené.
Vývojová prostředí NetBeans [19] a Eclipse mají pluginy pro práci s Adou.
Syntaxe Ady je z velké části reprodukována v jazycích jako PL/SQL (a později PL/pgSQL ), VHDL , SPARK .
V programovacích jazycích E [20] a Clarity [21] , pak v mnoha dalších: například v jazycích Erlang , Fortress , Chapel , X10 , D a Go , myšlenky distribuovaného, multitaskingu a vícevláknového počítání , které jsou implementovány samotným jazykem, byly dále rozvíjeny, a nikoli externími knihovnami, které byly poprvé v praxi široce používány v jazyce Ada.
Programovací jazyky | |
---|---|
|