Ada (język programowania): Różnice pomiędzy wersjami

[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
EmausBot (dyskusja | edycje)
m r2.6.4) (Robot poprawił fr:Ada (langage)
przebudowa wstępu
Linia 1:
{{Dopracować|Przykłady wymagają rewizji i uporządkowania}}
 
[[Plik:Ada Lovelace 1838.jpg|thumb|Ada Lovelace]]
'''Ada''' to [[język strukturalny|strukturalny]], [[kompilacja (informatyka)|kompilowany]], [[Programowanie imperatywne|imperatywny]], [[Statyczna typizacja|statycznie typowany]] i [[Programowanie obiektowe|obiektowy]] [[język programowania]] opracowany przez Jean Ichbiaha i zespół z CII Honeywell Bull w latach 70. XX wieku. Język ten wygrał konkurs zorganizowany przez [[Departament Obrony Stanów Zjednoczonych|Departament Obrony USA]] (''U.S. Department of Defense'' – DoD), pokonując 19 innych projektów. [[Nazwa własna|Nazwa]] języka, nadana przez DoD, pochodzi od imienia [[Ada Lovelace|lady Augusty Ady Lovelace]], uważanej za pierwszą [[Programista|programistkę]] w historii.
 
== Właściwości językaHistoria ==
 
Wiele cech Ady zaprojektowanych zostało w celu zminimalizowania szans popełnienia trudnych do wykrycia [[Błąd (informatyka)|błędów]].
W latach 70. departament obrony [[USA]] zauważył problem w wykorzystywaniu dużej liczby różnych języków programowania używanych do [[Implementacja|implementacji]] wewnętrznych projektów oprogramowania dla [[System wbudowany|systemów wbudowanych]]. Wiele z nich było już przestarzałych lub mocno związanych ze sprzętem, a żaden z nich nie wspierał bezpiecznego programowania modułowego. W 1975 roku została powołana grupa robocza High Order Language Working Group (HOLWG), której zadaniem była redukcja używanych narzędzi lub zaprojektowanie nowego języka programowania, który spełniałby wymagania wszystkich dotychczas realizowanych projektów. Efektem działań grupy był język Ada, a liczba używanych języków spadła z ponad 450 w roku 1983 do 37 w 1996.
 
Grupa robocza HOLWG rozpoczęła prace od wydania [[Wymagania językowe Stellmana|Wymagań językowych Stellmana]] (ang. ''Steelman Language Requirements''), serii dokumentów opisujących założenia, które poszczególne języki programowania powinny spełniać. Następnie dokonano formalnej weryfikacji wielu istniejących języków, lecz w 1977 stwierdzono, że każdy z nich posiada w świetle tych dokumentów poważne mankamenty, które go eliminują. Wobec tego ogłoszony został konkurs na stworzenie nowego języka. Do startu zaproszono cztery zespoły, którym nadano oznaczenia kolorystyczne:
 
* Czerwony ([[Intermetrics|Intermetrics]], pod przewodnictwem Benjamina Brosgola),
* Zielony ([[Groupe Bull|CII Honeywell Bull]], pod przewodnictwem Jeana Ichbiaha),
* Niebieski ([[SofTech]], pod przewodnictwem Johna Goodenough),
* Żółty ([[SRI International|SRI International]], pod przewodnictwem Jaya Spitzena).
 
W kwietniu 1978, po publicznych badaniach, propozycje zespołu czerwonego i zielonego przeszły do kolejnej fazy. Rok później ostateczne zwycięstwo przyznano koncepcji zielonej opracowanej przez [[Groupe Bull|CII Honeywell Bull]]. Otrzymała ona nazwę Ada na cześć [[Ada Lovelace|lady Augusty Ady Lovelace]], uważanej za pierwszą [[Programista|programistkę]] w historii. Zwycięska propozycja czerpała pomysły z języka [[LIS]], który Ichbiah i jego grupa zaprojektowali w latach 70. Pierwsze wydanie dokumentacji języka Ada zostało opublikowane w ACM SIGPLAN Notices w czerwcu 1979 roku. Dokumentacja standardu wojskowego została zatwierdzona 10 grudnia 1980 roku (urodziny Ady Lovelace) i otrzymała number MIL-STD-1815.
 
W roku 1981 [[C. A. R. Hoare]] skrytykował Adę w swojej mowie podczas odbioru [[Nagroda Turinga|Nagrody Turinga]] jako język zbyt skomplikowany, a przez to zawodny, lecz później prawdopodobnie zmienił zdanie, czego wyrazem jest przedmowa, którą napisał dla podręcznika Ady.
 
Pojawienie się Ady wywołało duże zainteresowanie wśród społeczności programistów w pierwszych latach swojego istnienia. Wśród zwolenników pojawiały się opinie, że może ona zostać głównym językiem programowania ogólnego przeznaczenia. Jean Ichbiah publicznie stwierdził, że w przeciągu 10 lat na rynku pozostaną jedynie dwa języki: Ada i [[Lisp]]. Wczesne kompilatory Ada z trudem radziły sobie z implementacją dużego, złożonego języka, a wydajność zarówno generowanego kodu, jak i procesu kompilacji, podobnie jak jakość narzędzi, pozostawiały wiele do życzenia. Twórcy kompilatorów skierowali swoje wysiłki ku uzyskaniu certyfikacji ACVC wymaganej przez agencje rządowe. Pierwszą certyfikowaną implementacją Ady był translator NYU Ada/Ed, który uzyskał ten status 11 kwietnia 1983 roku. Był on zaimplementowany w wysokopoziomowym języku SETL.
 
W 1987 roku Departament Obrony USA wydał zarządzenie wymagające użycia Ady w każdym projekcie programistycznym, gdzie nowy kod stanowił więcej niż 30% ogólnego wyniku, aczkolwiek często zezwalano na wyjątki od tej reguły. Reguła została zniesiona 10 lat później.
 
Przez lata 80. i 90. poprawiono ogólną jakość i wydajność kompilatorów Ady, lecz wciąż pojawiały się poważne problemy na drodze do pełnego wykorzystania możliwości języka. Jednym z nich był zaproponowany model wielozadaniowości, który znacząco odbiegał od dotychczasowych rozwiązań znanych programistom. Z uwagi na obecność wielu kluczowych mechanizmów bezpieczeństwa, Ada jest obecnie używana nie tylko w aplikacjach wojskowych, ale także w projektach komercyjnych, gdzie błąd programistyczny może mieć kosztowne konsekwencje. Przykładami takich obszarów jest kontrola lotów, awionika samolotów, satelity, automatyczne systemy transportowe czy baknowość. Przykładowo, oprogramowanie systemu [[Fly-by-wire]] w samolocie [[Boeing 777]] zostało w całości napisane w Adzie.
 
== Właściwości ==
 
Ada jest [[Paradygmat programowania|wieloparadygmatowym]] językiem programowania ogólnego przeznaczenia. Jego składnia została zaprojektowana w taki sposób, aby zminimalizować szanse popełnienia trudnych do wykrycia błędów. Uzyskiwane jest to poprzez przemyślany i konsekwentny dobór poszczególnych elementów składni, a także ich jednoznaczność.
 
Wśród kluczowych właściwości języka można wymienić:
 
* bezpieczny, ścisły [[system typów]], nastawiony na semantykę, a nie na fizyczną reprezentację danych,
* wsparcie dla [[Programowanie obiektowe|programowania obiektowego]],
* zaawansowany mechanizm pakietów i modułów,
* wsparcie dla zaawansowanych modeli współbieżności,
* mechanizmy zarządzania pamięcią,
* wsparcie dla programowania kontraktowego,
* ustandaryzowane interfejsy do łączenia kodu Ady z językami [[C (język programowania)|C]], [[C++]], [[FORTRAN]] i [[COBOL]].
 
== Standaryzacja ==
 
Język został standardem [[ANSI]] w 1983 roku (ANSI/MIL-STD 1815A), a następnie bez żadnych dodatkowych modyfikacji — standardem [[ISO]] w 1987 roku (ISO-8652:1987). Ustandaryzowana wersja języka jest powszechnie nazywana Ada 83 lub Ada 87, zależnie od tego, którą datę ogłoszenia standardu weźmiemy.
Istnieją trzy [[standard]]y Ady: starszy [[Ada 83]], nowszy [[Ada 95]]
(w którym dodano m.in. obsługę obiektów) oraz najnowszy [[Ada 2005]]. Istniała też [[Ada++]].
 
Wspólny standard ANSI/ISO (ISO-8652:1995) Ada 95 został opublikowany w lutym 1995 roku, przez co Ada stała się pierwszym o[[Programowanie obiektowe|biektowo zorientowanym]], ustandaryzowanym językiem programowania. Aby pomóc w dopracowaniu i przyjęciu standardu, [[US Air Force]] sfinansowała prace nad [[Kompilator|kompilatorem]] GNAT. Obecnie GNAT jest częścią pakietu [[GNU Compiler Collection]].
Ada jest obsługiwana m.in. przez kompilator [[GNAT]], oparty na [[GNU Compiler Collection|GCC]].
 
Prace nad standaryzacją Ady są nieustannie kontynuowane. W październiku 2001 ukazała się techniczna errata do standardu Ada 95, a w 2007 — pierwsza znacząca poprawka ISO/IEC 8652:1995/Amd 1:2007. Nowy, ujednolicony tekst standardu został opublikowany 9 marca 2007 roku. Ukończenie kolejnej rewizji jest planowane na rok 2012 (ISO/IEC 8652:201z Ed. 3).
Ponieważ wiele rzeczy w Adzie jest zaprojektowane wbrew [[Unix|tradycji uniksowej]], nie cieszy się ona popularnością wśród programistów uniksowych (w szczególności wśród programistów [[Otwarte oprogramowanie|open source]]). Do nielicznych programów open source napisanych w Adzie należy wizualny debuger [[GNU Visual Debugger|GNU Visual Debugger (GVD)]].
 
== Przykłady ==
Istnieją warianty języka Ada ([[SPARK (informatyka)|SPARK]]) posiadające funkcje formalnej weryfikacji oraz [[Dowód poprawności algorytmu|dowodzenie poprawności kodu]]. Dzięki swoim właściwościom język Ada jest wykorzystywany w dziedzinach, w których krytyczna jest stabilność kodu oraz brak błędów logicznych i programistycznych - w [[Wojskowość|wojsku]], [[Medycyna|medycynie]], [[Energetyka|energetyce]] itd.
 
Oto prosty przykład ([[funkcja Ackermanna]]) kodu w Adzie demonstrujący kilka jej cech.