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