Znajdź błąd. Sztuka analizowania kodu - Helion
Tytuł oryginału: Find the Bug : A Book of Incorrect Programs
Tłumaczenie: Bartłomiej Garbacz
ISBN: 83-7361-855-4
stron: 288, Format: B5, okładka: miękka
Data wydania: 2005-06-09
Księgarnia: Helion
Cena książki: 37,89 zł
Wyszukiwanie błędów w kodzie to czynność, którą programiści wykonują niemal równie często, jak pisanie kodu. Narzędzia do wykrywania i poprawiania błędów tylko częściowo rozwiązują problem. W wielu przypadkach błąd nie tkwi w nieprawidłowo sformułowanym poleceniu lub źle zdefiniowanej zmiennej, ale w miejscu, którego nawet najlepsze narzędzie nie znajdzie. Programista musi się nauczyć samemu bronić przed ukrytymi pomyłkami i nieprzyjemnymi niespodziankami. Błędy trzeba znaleźć, zanim one znajdą nas.
Książka "Znajdź błąd. Sztuka analizowania kodu" to zbiór 50 programów napisanych w językach Perl, C, Java, Python i asembler x86. Każdy z nich zawiera jeden, trudny do znalezienia, ale jak najbardziej realistyczny błąd. Wykrycie go wymaga przewidzenia sposobu, w jaki program będzie wykonywany, i prześledzenia krok po kroku jego działania. Każdy przykład opatrzony jest wskazówkami pomocnymi przy wyszukiwaniu błędów. Książka przedstawia sposoby analizowania programów i przewidywania miejsc, w których może wystąpić błąd.
- Klasyfikacja błędów
- Metody analizy kodu
- Błędy w programach w języku C
- Analiza aplikacji napisanych w języku Python
- Wyszukiwanie błędów w programach w języku Java
- Programy w języku Perl i asembler x86
Wykonując zadania zawarte w tej książce, nie tylko nauczysz się odnajdywać błędy, ale także udoskonalisz swoje umiejętności w zakresie pisania aplikacji.
Osoby które kupowały "Znajdź błąd. Sztuka analizowania kodu", wybierały także:
- Superinteligencja. Scenariusze, strategie, zagro 66,67 zł, (14,00 zł -79%)
- Poradnik design thinking - czyli jak wykorzysta 48,28 zł, (14,00 zł -71%)
- Kosymulacja. Elastyczne projektowanie i symulacja wielodomenowa 38,39 zł, (11,90 zł -69%)
- F# 4.0 dla zaawansowanych. Wydanie IV 96,45 zł, (29,90 zł -69%)
- Systemy reaktywne. Wzorce projektowe i ich stosowanie 65,31 zł, (20,90 zł -68%)
Spis treści
Znajdź błąd. Sztuka analizowania kodu -- spis treści
O Autorze (9)
Wstęp (11)
Rozdział 1. Klasyfikacja błędów (17)
Rozdział 2. Wskazówki dotyczące analizy kodu (19)
- Podział kodu na sekcje o określonych celach działania (20)
- Identyfikacja sekcji w kodzie (21)
- Identyfikacja celów działania każdej sekcji (22)
- Komentarze (23)
- Identyfikacja znaczenia każdej zmiennej (24)
- Nazwy zmiennych (24)
- Określenie sposobów użycia każdej zmiennej (24)
- Zmienne ograniczone (26)
- Warunki niezmiennicze (27)
- Åšledzenie zmian zmiennych ograniczonych (28)
- Wyszukanie znanych pułapek (28)
- Liczniki pętli (28)
- Wyrażenia występujące po lewej oraz po prawej stronie instrukcji przypisania (30)
- Sprawdzenie operacji sprzężonych (30)
- Wywołania funkcji (31)
- Wartości zwracane (32)
- Kod podobny do istniejącego błędu (33)
- Wybór danych wejściowych dla celów analizy działania (33)
- Pokrycie kodu (35)
- Puste dane wejściowe (36)
- Banalne dane wejściowe (37)
- Gotowe dane wejściowe (38)
- Błędne dane wejściowe (38)
- Pętle (39)
- Liczby losowe (39)
- Analiza działania każdej sekcji kodu (40)
- Śledzenie wartości zmiennych (41)
- Układ kodu (41)
- Pętle (43)
- Podsumowanie (44)
Rozdział 3. C (45)
- Krótkie omówienie języka C (45)
- Typy danych i zmienne (45)
- Ciągi znaków (47)
- Wskaźniki (47)
- Struktury (48)
- Instrukcje warunkowe (49)
- Pętle (50)
- Funkcje (51)
- Sortowanie przez wybieranie (51)
- Wstawianie pozycji na liście jednokierunkowej (54)
- Usuwanie pozycji z listy jednokierunkowej (57)
- Kopiowanie obszaru pamięci (60)
- Rozkład ciągu znaków na podciągi (63)
- Mechanizm przydzielania pamięci (66)
- Zwalnianie pamięci (69)
- Rekurencyjne odwracanie zdania (72)
- Określanie wszystkich możliwych tras (76)
- Znak cofania w alfabecie Kanji (78)
Rozdział 4. Python (83)
- Krótkie omówienie języka Python (83)
- Typy danych i zmienne (83)
- Ciągi znaków (84)
- Listy i krotki (85)
- SÅ‚owniki (87)
- Instrukcje warunkowe (88)
- Pętle (88)
- Funkcje (89)
- Klasy (89)
- WyjÄ…tki (90)
- Importowanie kodu (91)
- Dane wyjściowe (91)
- Określanie liczby pierwszej (91)
- Znajdowanie podciÄ…gu (93)
- Sortowanie alfabetyczne wyrazów (95)
- Kodowanie ciągów znaków za pomocą tablicy znaków (97)
- Wyświetlanie miesiąca i dnia (100)
- Gra "Go Fish", część I: pobieranie karty z talii (102)
- Gra "Go Fish", część II: sprawdzenie posiadania karty przez drugą rękę (105)
- Gra "Go Fish", część III: pełna gra (108)
- Analiza składniowa liczb zapisanych w języku angielskim (112)
- Przypisywanie prezentów do obdarowywanych (115)
Rozdział 5. Java (119)
- Krótkie omówienie języka Java (119)
- Typy danych i zmienne (119)
- Ciągi znaków (i obiekty) (120)
- Tablice (122)
- Instrukcje warunkowe (124)
- Pętle (124)
- Klasy (125)
- WyjÄ…tki (127)
- Importowanie kodu (128)
- Aplikacje wiersza poleceń i aplety (129)
- Określanie roku przestępnego (129)
- Konwersja liczby na tekst (132)
- Rysowanie trójkąta na ekranie, część I (135)
- Rysowanie trójkąta na ekranie, część II (139)
- Odwracanie listy jednokierunkowej (141)
- Sprawdzenie, czy lista zawiera pętlę (143)
- Sortowanie szybkie (146)
- Gra Pong, część I (149)
- Gra Pong, część II (153)
- Obliczanie wyników w grze w kręgle (156)
Rozdział 6. Perl (161)
- Krótkie omówienie języka Perl (161)
- Typy danych i zmienne (161)
- Ciągi znaków (162)
- Listy (163)
- Skróty (165)
- Warunki logiczne (165)
- Pętle (167)
- Podprogramy (168)
- Kontekst skalarny i listowy (168)
- Uchwyty plików (169)
- Wyrażenia regularne (170)
- Dane wyjściowe (171)
- Parametry wywołania z wiersza poleceń (171)
- Sortowanie pliku według długości wierszy (172)
- Wyświetlanie czynników pierwszych liczby (174)
- Rozwijanie znaków tabulacji (176)
- Prosta baza danych (178)
- Znajdowanie powtarzającej się części ułamka (181)
- Rozszerzanie listy plików z wcięciami na pełne ścieżki dostępu (183)
- Sortowanie wszystkich plików w drzewie struktury katalogów (186)
- Obliczanie średnich ocen z testów (189)
- Sortowanie przez scalanie wielu plików (192)
- Gra Mastermind (195)
Rozdział 7. Język asemblera x86 (201)
- Krótkie omówienie języka asemblera x86 (201)
- Typy danych i zmienne (201)
- Operacje arytmetyczne (204)
- Znaczniki, warunki i skoki (206)
- Pętle (208)
- Procedury (210)
- Wyjście (213)
- Reszta z dolara (213)
- Mnożenie dwóch liczb przy użyciu operacji przesunięcia (215)
- Złączanie ciągów znaków z separatorem (217)
- Obliczanie wartości ciągu Fibonacciego (220)
- Sprawdzanie, czy dwa wyrazy sÄ… anagramami (222)
- Konwersja 64-bitowej liczby na ciąg znaków z jej zapisem dziesiętnym (226)
- Suma wartości w tablicy liczb ze znakiem (230)
- Gra symulacyjna Życie (234)
- Sprawdzenie dopasowania nawiasów w kodzie źródłowym (238)
- Sortowanie przez zamianÄ™ w podstawie (242)
Dodatek A Klasyfikacja błędów (247)
- Składnia a semantyka (248)
- Klasyfikacja używana w książce (249)
- A - Algorytm (251)
- A.przesunięcie-o-jeden (251)
- A.logika (252)
- A.walidacja (253)
- A.wydajność (255)
- D - Dane (255)
- D.indeks (255)
- D.limit (256)
- D.liczba (257)
- D.pamięć (259)
- Z - Zapomniane (261)
- Z.inicjalizacja (261)
- Z.pominięcie (262)
- Z.lokalizacja (263)
- P - Pomyłka (264)
- P.zmienna (264)
- P.wyrażenie (265)
- P.język (266)
- Podsumowanie (267)
Dodatek B Indeks błędów według typu (269)
Dodatek C Materiały źródłowe (273)
- Klasyfikacja błędów (273)
- Ogólne pozycje poświęcone typom błędów (274)
- C (274)
- Python (275)
- Java (275)
- Perl (275)
- Język asemblera x86 (275)
Skorowidz (277)