Ada Resource Association
przegląd Ada
Ada jest nowoczesnym językiem programowania zaprojektowanym dla dużych, długotrwałych aplikacji-w szczególności systemów wbudowanych – gdzie niezawodność i wydajność są niezbędne. Został pierwotnie opracowany na początku lat 80. (Ta wersja jest ogólnie znana jako Ada 83) przez zespół kierowany przez dr Jean Ichbiah w CII-Honeywell-Bull we Francji. Język został poprawiony i ulepszony w sposób zgodny z rozwojem na początku lat 90., pod kierownictwem Pana Tuckera tafta z Intermetrics w USA. Powstały w ten sposób język, Ada 95, był pierwszym międzynarodowo znormalizowanym (ISO) językiem obiektowym. Pod auspicjami ISO zakończono kolejną (drobną) rewizję standardu; ta wersja języka jest znana jako Ada 2005. Bardziej znacząca wersja została ukończona (w tym wsparcie dla adnotacji programu) i jest znana jako Ada 2012. Oczekuje się, że kolejna istotna zmiana zostanie zakończona w 2022 r.
nazwa ” Ada ” nie jest akronimem; został wybrany na cześć Augusty ady Lovelace (1815-1852), matematyczki, która jest czasami uważana za pierwszą programistkę na świecie ze względu na jej pracę z Charlesem Babbage ‘ em. Była również córką poety Lorda Byrona.
Ada dostrzega znaczące zastosowanie na całym świecie w dziedzinach o wysokiej integralności / krytycznym bezpieczeństwie / wysokim poziomie bezpieczeństwa, w tym komercyjnej i wojskowej awioniki Lotniczej, kontroli ruchu lotniczego, systemów kolejowych i urządzeń medycznych. Dzięki ucieleśnieniu nowoczesnych zasad inżynierii oprogramowania Ada jest doskonałym językiem nauczania zarówno dla kursów wprowadzających, jak i zaawansowanych informatyki, i była przedmiotem znaczących badań uniwersyteckich, szczególnie w dziedzinie technologii czasu rzeczywistego.
przegląd języka
Ada jest wieloaspektowy. Z jednej strony jest to klasyczny język ogólnego przeznaczenia oparty na stosie, niezwiązany z żadną konkretną metodologią rozwoju. Ma prostą składnię, ustrukturyzowane instrukcje kontrolne, elastyczne funkcje składu danych, silne sprawdzanie typów, tradycyjne funkcje modularyzacji kodu (“podprogramy”) oraz mechanizm wykrywania i reagowania na wyjątkowe warunki czasu pracy (“Obsługa wyjątków”).
ale zawiera też znacznie więcej:
zakresy skalarne
w przeciwieństwie do języków opartych na składni C (takich jak C++, Java i C#), Ada pozwala programiście na proste i jawne określenie zakresu wartości, które są dozwolone dla zmiennych typów skalarnych (integer, floating-point, fixed-point lub enumeration). Próba przypisania wartości poza zakresem powoduje błąd w czasie wykonywania. Możliwość określania kontrargumentów zakresu sprawia, że intencja programisty jest jawna i ułatwia wykrywanie głównego źródła błędów kodowania i wprowadzania przez użytkownika.
Programowanie w dużym
oryginalny projekt Ada 83 wprowadził konstrukcję pakietu, funkcję, która obsługuje hermetyzację (“ukrywanie informacji”) i modularyzację, i która pozwala deweloperowi kontrolować przestrzeń nazw dostępną w danej jednostce kompilacji. Ada 95 wprowadziła koncepcję “child units”, zwiększając znacznie elastyczność i ułatwiając projektowanie bardzo dużych systemów. Ada 2005 rozszerzyła możliwości modularyzacji języka, umożliwiając wzajemne odniesienia między specyfikacjami pakietów, ułatwiając w ten sposób współpracę z takimi językami jak Java.
Szablony ogólne
kluczem do komponentów wielokrotnego użytku jest mechanizm parametryzacji modułów w odniesieniu do typów danych i innych jednostek programu, na przykład pakietu stosu dla dowolnego typu elementu. Ada spełnia ten wymóg poprzez obiekt znany jako” generics”; ponieważ parametryzacja odbywa się w czasie kompilacji, wydajność w czasie wykonywania nie jest karana.
Programowanie obiektowe (OOP)
Ada 83 była oparta na obiektach, umożliwiając partycjonowanie systemu na moduły odpowiadające abstrakcyjnym typom danych lub abstrakcyjnym obiektom. Pełne wsparcie dla OOP nie było zapewnione, ponieważ po pierwsze wydawało się, że nie jest wymagane w domenie czasu rzeczywistego, która była głównym celem Ada, a po drugie, pozorna potrzeba automatycznego usuwania śmieci w języku OO zakłóciłaby przewidywalną i wydajną wydajność.
jednak duże systemy czasu rzeczywistego często mają komponenty, takie jak GUI, które nie mają ograniczeń w czasie rzeczywistym i które mogłyby być najbardziej efektywnie opracowane przy użyciu funkcji OOP. Po części z tego powodu, Ada 95 zapewnia kompleksowe wsparcie dla OOP, poprzez swoją funkcję “tagged type”: klasy, polimorfizm, dziedziczenie i Wiązanie dynamiczne. Ada 95 nie wymaga automatycznego odśmiecania pamięci, ale raczej dostarcza definicjonalne funkcje umożliwiające deweloperowi dostarczanie specyficznych dla danego typu operacji rekultywacji pamięci (“finalizacja”). Ada 2005 dostarczyła dodatkowe funkcje OOP, w tym Interfejsy podobne do Javy i tradycyjną notację wywoływania operacji.
Ada jest neutralna metologicznie i nie narzuca “rozproszonego narzutu” dla OOP. Jeśli aplikacja nie potrzebuje OOP, to funkcje OOP nie muszą być używane i nie ma kary za run-time.
Programowanie współbieżne
Ada dostarcza ustrukturyzowane, wysokopoziomowe narzędzie do współbieżności. Jednostką współbieżności Jest jednostka programu znana jako ” zadanie.”Zadania mogą komunikować się pośrednio za pomocą udostępnionych danych lub bezpośrednio za pomocą synchronicznego mechanizmu sterowania znanego jako rendezvous. Współdzielona pozycja danych może być zdefiniowana abstrakcyjnie jako “obiekt chroniony” (funkcja wprowadzona w Ada 95), z operacjami wykonywanymi pod wzajemnym wykluczeniem, gdy są wywoływane z wielu zadań. Obsługiwane są również asynchroniczne interakcje zadań, w szczególności timeouts i zakończenie zadania. Takie asynchroniczne zachowanie jest odroczone podczas niektórych operacji, aby zapobiec możliwości pozostawienia udostępnionych danych w niespójnym stanie. Najnowsze wersje Ada zawierają lekkie mechanizmy wykorzystujące architektury wielordzeniowe, pozwalające na wysoce wydajne przetwarzanie równoległe, zachowując przenośność i pozostając w bezpiecznym i dobrze zdefiniowanym modelu współbieżności Ada.
programowanie systemów
zarówno w języku “core”, jak i w załączniku do programowania systemów, Ada zapewnia niezbędne funkcje, aby programista mógł zbliżyć się do sprzętu. Można na przykład określić układ bitów dla pól w rekordzie, określić wyrównanie i rozmiar, umieścić dane w określonych adresach maszyn i wyrazić wyspecjalizowane lub krytyczne czasowo sekwencje kodu w języku asemblacji. W Ada można również pisać procedury obsługi przerwań, korzystając z funkcji protected type.
programowanie w czasie rzeczywistym
funkcje taskingu Ada pozwalają na wyrażanie wspólnych idiomów czasu rzeczywistego (zadania okresowe, zadania sterowane zdarzeniami), a Real-Time Annex zapewnia kilka udogodnień, które pozwalają uniknąć nieograniczonych inwersji priorytetów. Zdefiniowana jest polityka blokowania chronionych obiektów, która wykorzystuje pułapy priorytetów; ma to szczególnie wydajną implementację w Ada (muteksy nie są wymagane), ponieważ chronione operacje nie mogą być blokowane. Ada 95 zdefiniowała politykę wysyłania zadań, która zasadniczo wymaga, aby zadania działały do momentu zablokowania lub uprzedzenia, a Ada 2005 wprowadziła kilka innych, w tym najwcześniejszy termin.
Systemy o wysokiej integralności
kładąc nacisk na solidne zasady inżynierii oprogramowania Ada wspiera rozwój aplikacji o wysokiej integralności, w tym tych, które muszą być certyfikowane zgodnie z normami bezpieczeństwa, takimi jak DO-178B i standardami bezpieczeństwa, takimi jak Common Criteria. Na przykład silne pisanie oznacza, że dane przeznaczone do jednego celu nie będą dostępne za pomocą niewłaściwych operacji; zapobiega się błędom, takim jak traktowanie wskaźników jako liczb całkowitych (lub odwrotnie). A sprawdzanie granic tablic ada zapobiega lukom w przepełnieniu bufora, które są powszechne w C i C++.
jednak pełny język jest niewłaściwy w aplikacji o krytycznym znaczeniu dla bezpieczeństwa, ponieważ ogólność i elastyczność mogą kolidować z wymogami dotyczącymi identyfikowalności / certyfikacji. Ada rozwiązuje ten problem, dostarczając dyrektywę kompilatora, pragma Restrictions, która pozwala ograniczyć funkcje języka do dobrze zdefiniowanego podzbioru (na przykład, z wyłączeniem dynamicznych funkcji OOP).
ewolucja Ada spowodowała ciągły wzrost wsparcia dla aplikacji o znaczeniu krytycznym i o wysokim poziomie bezpieczeństwa. Ada 2005 ustandaryzował profil Ravenscar, zbiór funkcji współbieżności, które są wystarczająco potężne do programowania w czasie rzeczywistym, ale wystarczająco proste, aby certyfikacja była praktyczna. Ada 2012 wprowadziła funkcje adnotacji do dodawania warunków wstępnych, warunków PO i niezmienników do programów. Ada 2022 rozszerza je o dodatkowe adnotacje dotyczące domyślnych warunków początkowych, stabilnych właściwości, nieblokowania i globalnego użycia obiektów. Mogą one służyć zarówno do sprawdzania czasu pracy, jak i jako dane wejściowe do narzędzi do analizy statycznej.
podsumowanie korzyści Ada
- pomaga zaprojektować bezpieczny i niezawodny kod
- zmniejsza koszty rozwoju
- obsługuje nowe i zmieniające się technologie
- ułatwia rozwój złożonych programów
- pomaga uczynić kod czytelnym i przenośnym
- zmniejsza koszty certyfikacji w zakresie bezpieczeństwa oprogramowanie
podsumowanie funkcji Ada
- programowanie obiektowe
- silne typowanie
- abstrakcje pasujące do domeny programu
- programowanie ogólne/szablony
- wyjątek obsługa
- urządzenia do modułowej organizacji kodu
- standardowe biblioteki We/Wy, obsługa łańcuchów, obliczenia numeryczne, kontenery
- programowanie systemów
- Programowanie współbieżne
- Programowanie w czasie rzeczywistym
- programowanie systemów rozproszonych
- przetwarzanie Numeryczne
- interfejsy do innych języków (C, COBOL, Fortran)
w skrócie, Ada jest międzynarodowym językiem standaryzowanym łączącym obiektowe funkcje programowania, dobrze zaprojektowane funkcje współbieżności, wsparcie w czasie rzeczywistym i wbudowane niezawodność. Odpowiednie narzędzie do rozwiązywania rzeczywistych problemów, przed którymi stoją obecnie Programiści, Ada jest używana w wielu głównych branżach do projektowania oprogramowania, które chroni firmy i życie.
Leave a Reply