Polskie Towarzystwo Informatyczne
NUMER ARCHIWALNY:     3-4 / 33-34 rok IV | marzec-kwiecień 1985
Archiwum
Menu chronologiczne Menu tematyczne


Polskie Towarzystwo Informatyczne

Recenzje o książkach
 
A. N. Habermann, D. E. Perry: Ada for Experienced Programmers. Reading, Mass., Addison–Wesley 1983, 479 s.
 
                Zawartość merytoryczną książki można podzielić na 3 części: wprowadzenie, część dotyczącą sekwencyjnych konstrukcji języka (rozdz. 2–10) oraz część dotyczącą współbieżności (rozdz. 11–16).
                We wprowadzeniu przedstawiono ogólną charakterystykę języków programowania na tle ich rozwoju, omówiono pokrótce podobieństwa i główne różnice między Pascalem i Adą oraz typowe konstrukcje obu języków (deklaracje, wyrażenia, instrukcje sterujące, podprogramy i reguły zasięgu), a także właściwości Ady stanowiące odbicie nowoczesnych tendencji w inżynierii oprogramowania (modularność, różne rodzaje abstrahowania, współbieżność, obsługę wyjątków i reprezentację sprzętu).
                W części dotyczącej konstrukcji sekwencyjnych skoncentrowano się na omówieniu typów danych w Pascalu i abstrahowania danych w Adzie. Poszczególne rozdziały dotyczą kolejno: kapsułkowania danych, typów tablicowych, parametryzowania typów, tworzenia i przesłaniania struktur danych, operowania funkcjami, pakietów rodzajowych, rekurencyjnych struktur danych, operowania zbiorami w sensie teoriomnogościowym, rekordów wariantowych.
                Wszystkie rozdziały tej części książki są oparte na przykładach i mają identyczny układ treści: postawienie problemu, omówienie algorytmu rozwiązania, rozwiązanie i program w Pascalu, rozwiązanie i program w Adzie, zwarte przypomnienie wprowadzonych pojęć oraz zdania do samodzielnego rozwiązania (wskazówki do rozwiązań podano oddzielnie w dodatku B).
                Jako przykłady ilustrujące użycie poszczególnych pojęć języka rozważono kolejno następujące problemy:
   konwersję daty na dzień miesiąca (rozdz. 2, pakiet CALENDAR);
   implementację operacji arytmetycznych dla wektorów i tablic (rozdz. 3, pakiety VECMANAGEMENT i MATMANAGEMENT);
   przeszukiwanie tekstów i usuwanie napisów (rozdz. 4, pakiet StringExtension);
   łączną implementację typu zespolonego, ułamkowego i dwuwymiarowo–wektorowego (rozdz. 5, pakiety PAIRS, COMPLARITH, FRACARITH, PLANEVECARITH);
   obliczanie zera i całkowanie funkcji (rozdz. 6, funkcje BISEARCH, ZEROPOINT, NEWTON, SIMPSON, APPROX);
   implementację kolejek dla dowolnego typu elementów (rozdz. 7, pakiet QueueManager, RealQueue, pakiet rodzajowy Queue);
   tworzenie leksykonu napisów przy użyciu definiowanego rekurencyjnie etykietowanego drzewa binarnego (rozdz. 8, pakiety VariableString, LabeledBTree, pakiet rodzajowy LabeledBinaryTree);
   obsługę przerwań (rozdz. 9, pakiet rodzajowy SetManager, pakiety PSManager, InterruptManager);
   generowanie kodu maszynowego dla wyrażeń arytmetycznych (rozdz. 10, pakiety LEXEMES, INSTRUCTIONS, CODEGEN, procedury GENERATE, MONAD, DYAD).
                Trzecia część książki dotyczy typowych problemów współbieżności, tj. synchronizacji, komunikacji i wzajemnego wykluczania, a także cech języka odpowiadających poziomowi maszyny. Poszczególne przykłady odnoszą się do: obliczeń równoległych (problem współdziałania producentów i konsumentów), klasycznych zagadnień szeregowania (zapisywanie i odczytywanie bazy danych, problem pięciu filozofów), podziału zasobów, specyfikacji reprezentacji fizycznej (dla programu obsługi klawiatury), wejścia–wyjścia na poziomie maszyny (program obsługi dysków) oraz zadań równoległych (do wyszukiwania indeksów struktury danych odpowiadających określonym kluczom).
                W tej części rezygnowano na ogół z podawania przykładów w Pascalu (ze względu na jego ograniczenia), utrzymując przykłady w Adzie. W poszczególnych rozdziałach, w miarę potrzeb, wprowadzano stopniowo wszystkie pojęcia dotyczące współbieżności (tj. zadania i typy zadaniowe, instrukcje accept i select, spotkania, wejścia, instrukcje dozorowane itd.) i reprezentacji w Adzie, demonstrując ich użycie łącznie z konstrukcjami wprowadzonymi w części drugiej. W dodatku A opisano szczegółowo ogólny schemat programu szeregującego w Adzie, użytecznego w większości przykładów występujących w tej części.
                Zakres tej książki odpowiada w pełni podręcznikowi języka Ada w wersji z lipca 1982, a poszczególne konstrukcje językowe są omówione we właściwych proporcjach. Jednakże jej istotną wadą jest nieuwzględnienie zmian wprowadzonych w ostatecznej wersji języka (z lutego 1983).
                Spośród kilkudziesięciu opublikowanych za granicą książek na temat Ady, z których dokładniej znam kilkanaście, praca Habermanna i Perry’ego znajduje się w wąskiej grupie charakteryzujących się dokładniejszym przedstawieniem tematyki i jest wyjątkowo wartościowa, jeżeli chodzi o dobór przykładów. Na tle znanych mi krajowych przedsięwzięć wydawniczych dotyczących języka Ada (przewidywane wydanie książki I. C. Pyle’a, skrypty akademickie), stanowi odrębną monografię, poruszającą najgłębiej zagadnienia programowania w tym języku.
                Oceniając książkę pod względem merytorycznym, należy podkreślić jej wysoki poziom, odpowiadający zaawansowanym programistom, zarówno systemowym, jak i aplikacyjnym. Uważam, że systematyczna praca upartego nowicjusza z tą książką, zwłaszcza studenta, może przynieść również jemu wiele korzyści. Gdyby opublikować jej przekład w “Bibliotece inżynierii oprogramowania”, byłaby z pewnością bardzo przydatna szerszemu gronu czytelników, gdyż kontakt z Adą grozi każdemu z nas nieuchronnie — w bliższej lub dalszej przyszłości.
Janusz Zalewski
Archiwum PTI Ewa Łukasik ( elukasik@cs.put.poznan.pl) Grzegorz Przybył ( grzegorz.przybyl@wp.pl ) www.pti.org.pl Kontakt PTI ( pti@pti.org.pl )
Tutorial


Tutorial

Wyszukiwanie

Całość
tylko prodialog
tylko biuletyny
tylko konferencje
tylko multimedia
tylko sprawozdania
tylko uchwały
tylko zawody
tylko zjazdy
pozostałe treści

Rodzaj przeszukiwania
Słowa kluczowe
Pełen tekst

pelen zakres dat
ograniczony zakres
od:

do:




Kontakty

Instytut Informatyki

Polskie Towarzystwo Informatyczne

Nasz Skrzynka Pocztowa

+ - D A