Download: Ksiazki

Transkrypt

Download: Ksiazki
Recenzje książek
RAPORT
Punkt widzenia twórców oprogramowania open source
CZYTANIE KODU
J
ak we wszystkich dziedzinach życia, tak
i w informatyce, jest wiele miejsca zarówno dla dyletantów jak i mistrzów. Aby pisać proste programy, nie trzeba być programistą ani mieć wykształcenia kierunkowego, niekiedy wystarczy sam zapał. Jednak z czasem,
kiedy zmierzamy się z coraz bardziej złożonymi problemami, powstaje potrzeba świadomego udoskonalenia własnych umiejętności.
Aby lepiej programować, możemy zapisać
się na kursy, warsztaty, konferencje, czytać
literaturę tradycyjną jak i dostępną w sieci.
Diomidis Spinellis, autor książki Czytanie
kodu – punkt widzenia twórców open source
proponuje inny sposób – analizę źródeł programów napisanych przez innych. Argumentuje, że dzięki temu możemy osiągnąć korzyści trudne do zdobycia inną drogą i w krótkim czasie znacznie udoskonalić swoje umiejętności.
„Chwilę” – zawoła ktoś – „Przecież kodu
źródłowego mamy pod dostatkiem. Po co mi
do tego książka?”. Otóż Czytanie kodu można
zakwalifikować jako przewodnik po ogromnych zasobach kodu, którym wszyscy dysponujemy. Wszystko, co opisano w książce, możemy odkryć sami, jednak znacznie łatwiej
i szybciej będzie skorzystać z pomocy podręcznika, zwłaszcza że autor dołożył wszelkich starań, by czytelnik wyniósł z niej jak najwięcej.
Kod nie istnieje w pustej przestrzeni.
W świecie Open Source wciąż niekwestionowanym liderem wśród języków programowania jest C, dlatego też pierwszych kilka rozdziałów to w zasadzie zaawansowany kurs
tego języka – począwszy od podstawowych
konstrukcji programistycznych (rozdział 2),
poprzez zaawansowane typy danych języka
C (rozdział 3) i implementacje struktury danych w C (rozdział 4 – wektory, macierze
i tabele, stosy, kolejki, mapy, zbiory, listy,
drzewa i grafy), aż po zaawansowane techniki sterowania przebiegiem programów (rozdział 5). Mimo że w centrum znajduje się C,
autor stara się często podawać przykłady
w innych popularnych językach, takich jak
Java, C++ czy Perl.
Dobre poznanie języka i sprawne posługiwanie się nim to jednak dopiero podstawa,
umożliwiająca zapoznanie się i zrozumienie
fragmentów kodu. Rozdział 6, zatytułowany
Metody analizy dużych projektów, zawiera
wskazówki pozwalające lepiej zrozumieć
problemy, na które natykają się osoby pracujące nad złożonymi projektami oraz popularne metody ich rozwiązania – wszystko to uzupełnione grafami i schematami,
najczęściej na przykładzie źródeł systemu
NetBSD. W kolejnym rozdziale znajdziemy omówienie standardów i konwencji pisania kodu, w tym dotyczące
nazewnictwa plików, funkcji, zmiennych i stałych, korzystania z wcięć,
formatowania, ogólnych praktyk programistycznych, jak również mechanizmów rozwojowych.
Rozdział 8 poświęcono dokumentacji. Jest on dość krótki i zawiera, oprócz
uwag ogólnych, pobieżne omówienie formatów dokumentacji używanych powszechnie
w projektach Open Source – troffa, Texinfo,
DocBooka, javadoc i Doxygen. Aby jednak
nauczyć się z nich korzystać, należy zapoznać się z zewnętrzną dokumentacją.
Najważniejszy i najbardziej rozbudowany
jest rozdział 9, poświęcony architekturze systemów. To właśnie dzięki niemu łatwiej nam będzie zorientować się w strukturze większych
projektów. Autor omawia zarówno struktury
systemów i modele sterowania, jak i pakietowanie elementów (moduły, przestrzenie nazw,
abstrakcyjne typy danych...) oraz wielokrotne
korzystanie z tego samego kodu (znajdziemy
tu m. in. pobieżne omówienie wzorców projektowych czy generatorów kodu).
Rozdział 10 to stosunkowo mało przydatny
dodatek – zawiera omówienie narzędzi przydatnych w czytaniu kodu, jak również przeglądarek i upiększaczy, jednak w praktyce
niemal każdy jest w stanie sobie doskonale
poradzić bez zawartych w nim informacji.
Pożyteczny jest natomiast kompletny przykład dodania mniej lub bardziej użytecznej
funkcjonalności do istniejącego projektu.
WWW.LINUX-MAGAZINE.PL
Autor wziął
na cel hsqldb, relacyjny system
bazodanowy napisany w Javie, porównywalny z IBM-owskim Cloudscape (Derby). Autor pokazuje, jak dodać wewnętrzną obsługę
nowej funkcji związanej z czasem – obliczenie fazy księżyca dla danej daty. Przykład
może wydawać się banalny, wymaga jednak
wgryzienia się i zrozumienia sporej części
z ponad 34 tys. wierszy linii kodu, które liczy
projekt.
Interesującym z punktu widzenia Czytelnika eksperymentem jest próba samodzielnej
implementacji owej funkcji, na podstawie
wiedzy zdobytej w poprzednich rozdziałach,
a dopiero później przejście do lektury rozdziału 11. W ten sposób można zweryfikować
własne zrozumienie zasad leżących u podstaw
projektu i przetestować swoje umiejętności –
niewykluczone, że uda nam się osiągnąć lepsze rezultaty, niż autor książki.
Reasumując: Czytanie kodu nie jest pozycją
„dla każdego”. Jest to jednak książka warta
polecenia wszystkim tym, którzy chcą się nauczyć lepiej programować, niekoniecznie przy
tworzeniu oprogramowania Open Source.
NUMER 15 KWIECIEŃ 2005
39