Piekny_kod_Tajemnice_mistrzow_programowania_szppps.pdf

(833 KB) Pobierz
Piķkny kod. Tajemnice
mistrzw programowania
Autor: Andy Oram, Greg Wilson
TĀumaczenie: ÿukasz Piwko, Marcin RogŃ
ISBN: 978-83-246-1408-0
Programmers Explain How They Think
Format: 168x237, stron: 564
Poznaj techniki pracy guru programowania!
¤ Jak tworzyě czytelny i pozbawiony bĀķdw kod?
¤ W jaki sposb projektowaě architekturķ systemw?
¤ Jak zbudowaě uniwersalne interfejsy uŃytkownika?
Wbrew pozorom programowanie to nie tylko nauka ľcisĀa, to takŃe sztuka! Trudna
sztuka! Napisanie kodu poprawnie dziaĀajĴcego czy kodu speĀniajĴcego oczekiwania
uŃytkownikw programu to niewĴtpliwie wyzwanie! Wymaga bowiem doskonaĀego
zaplanowania architektury, skutecznej optymalizacji kodu łrdĀowego oraz umiejķtnoľci
przewidywania potencjalnych problemw i ich odpowiednio wczesnej eliminacji.
WĀaľnie w tej ksiĴŃce prawdziwi mistrzowie programowania podzielĴ siķ z TobĴ swoimi
doľwiadczeniami, przemyľleniami i spostrzeŃeniami dotyczĴcymi tworzenia
profesjonalnych rozwiĴzaĺ. Znajdziesz tu wiele praktycznych porad dotyczĴcych pisania
kodu, rozwiĴzywania problemw programistycznych, projektowania architektury,
tworzenia interfejsw uŃytkownika i pracy w zespole projektowym. Dowiesz siķ, kiedy
naleŃy postķpowaě dokĀadnie wedĀug wskazaĺ metodologii, a kiedy âpjľcie na skrtyÒ
moŃe okazaě siķ najlepszym rozwiĴzaniem. Poznasz sposb myľlenia i zasady pracy
najlepszych programistw ľwiata, dziķki czemu uŃytkownikom Twoich aplikacji
zapewnisz maksymalny komfort.
¤ Korzystanie z wyraŃeĺ regularnych
¤ Dobr odpowiedniego poziomu abstrakcji
¤ Ocena jakoľci kodu łrdĀowego
¤ Testowanie
¤ Techniki analizy skĀadni
¤ Zabezpieczanie komunikacji sieciowej
¤ Dostosowywanie architektury systemu do architektury komputerw
¤ Praca zespoĀowa
¤ Projektowanie systemw w oparciu o komponenty OpenSource
¤ Usuwanie bĀķdw
¤ UĀatwianie pracy osobom niepeĀnosprawnym
DoĀĴcz do grona mistrzw programowania!
Wydawnictwo Helion
ul. Koľciuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl
1098288890.051.png 1098288890.052.png 1098288890.053.png 1098288890.054.png 1098288890.001.png 1098288890.002.png 1098288890.003.png 1098288890.004.png 1098288890.005.png 1098288890.006.png 1098288890.007.png 1098288890.008.png 1098288890.009.png 1098288890.010.png 1098288890.011.png 1098288890.012.png 1098288890.013.png 1098288890.014.png 1098288890.015.png 1098288890.016.png 1098288890.017.png 1098288890.018.png 1098288890.019.png 1098288890.020.png 1098288890.021.png 1098288890.022.png 1098288890.023.png 1098288890.024.png 1098288890.025.png 1098288890.026.png 1098288890.027.png 1098288890.028.png 1098288890.029.png 1098288890.030.png 1098288890.031.png 1098288890.032.png 1098288890.033.png 1098288890.034.png 1098288890.035.png 1098288890.036.png 1098288890.037.png 1098288890.038.png 1098288890.039.png 1098288890.040.png 1098288890.041.png 1098288890.042.png 1098288890.043.png 1098288890.044.png 1098288890.045.png 1098288890.046.png 1098288890.047.png 1098288890.048.png 1098288890.049.png 1098288890.050.png
 
SPIS TREŚCI
Słowo wstępne
13
Wstęp
15
1. Wyrażenia regularne
19
Programowanie w praktyce
20
Implementacja
21
Omówienie
22
Alternatywy
24
Rozszerzanie
25
Podsumowanie
27
2.
Edytor delty w Subversion — interfejs jako ontologia
29
Kontrola wersji i transformacja drzewa
30
Prezentacja różnic pomiędzy drzewami
34
Interfejs edytora delty
35
Ale czy to jest sztuka?
40
Abstrakcja jako sport widowiskowy
43
Wnioski
45
3.
Najpiękniejszy kod, którego nigdy nie napisałem
47
Najpiękniejszy kod, jaki kiedykolwiek napisałem
47
Coraz więcej za pomocą coraz mniejszych środków
49
Perspektywa
54
Co to jest pisanie
57
Zakończenie
57
Podziękowania
59
4.
Wyszukiwanie
61
Na czas
61
Problem — dane z pamiętnika sieciowego
62
Problem — kto zażądał, czego i kiedy
70
Wyszukiwanie na dużą skalę
75
Podsumowanie
77
5
5.
Poprawny, piękny, szybki (w takiej kolejności)
— lekcje z projektowania weryfikatorów XML
79
Znaczenie walidacji XML
79
Problem
80
Wersja 1. Naiwna implementacja
82
Wersja 2. Imitacja gramatyki BNF O(N)
83
Wersja 3. Pierwsza optymalizacja O(log N)
84
Wersja 4. Druga optymalizacja — nie sprawdzaj dwa razy
85
Wersja 5. Trzecia optymalizacja O(1)
87
Wersja 6. Czwarta optymalizacja — buforowanie
91
Morał
93
6.
Framework for Integrated Test — piękno poprzez delikatność
95
Acceptance Testing Framework w trzech klasach
96
Wyzwanie zaprojektowania środowiska
98
Otwarte środowisko
99
Jak prosty może być parser HTML
100
Podsumowanie
103
7.
Piękne testy
105
To niesforne wyszukiwanie binarne
106
Wstęp do JUnit
109
Rozprawić się z wyszukiwaniem binarnym
111
Podsumowanie
122
8.
Generowanie w locie kodu do przetwarzania obrazów
125
9.
Kolejność wykonywania operatorów
147
JavaScript
148
Tablica symboli
149
Tokeny
150
Kolejność
151
Wyrażenia
152
Operatory wrostkowe
152
Operatory przedrostkowe
154
Operatory przypisania
155
Stałe
155
Zakres
156
Instrukcje
157
Funkcje
160
Literały tablicowe i obiektowe
161
Rzeczy do zrobienia i przemyślenia
162
10.
Poszukiwanie szybszych metod zliczania bitów w stanie wysokim
163
Podstawowe metody
164
Dziel i zwyciężaj
165
Inne metody
167
6
SPIS TREŚCI
Suma i różnica liczb ustawionych bitów w dwóch słowach
169
Porównywanie liczby ustawionych bitów w dwóch słowach
169
Zliczanie jedynek w tablicy
170
Zastosowania
175
11.
Bezpieczna komunikacja — technologia wolności
177
Początki
178
Rozwikłać tajemnicę bezpiecznego przesyłania wiadomości
180
Klucz to użyteczność
181
Podstawa
184
Zestaw testów
188
Działający prototyp
189
Oczyść, podłącz i używaj
190
Hakowanie w Himalajach
194
Niewidoczne ruchy ręką
199
Prędkość ma znaczenie
201
Prywatność komunikacji dla praw jednostki
202
Hakowanie cywilizacji
203
12.
Hodowanie pięknego kodu w języku BioPerl
205
BioPerl i moduł Bio::Graphics
206
Proces projektowania modułu Bio::Design
210
Rozszerzanie modułu Bio::Graphics
228
Wnioski i lekcje
232
13.
Projekt programu Gene Sorter
235
Interfejs użytkownika programu Gene Sorter
236
Podtrzymywanie dialogu z użytkownikiem przez internet
237
Nieco polimorfizmu
239
Filtrowanie w celu znalezienia odpowiedniego genu
242
Ogólna teoria pięknego kodu
243
Podsumowanie
246
14.
Jak elegancki kod ewoluuje wraz ze sprzętem — przypadek eliminacji Gaussa
247
Wpływ architektury komputerów na algorytmy macierzowe
248
Metoda dekompozycyjna
250
Prosta wersja
251
Podprocedura DGEFA biblioteki LINPACK
252
Procedura LAPACK DGETRF
255
Rekursywna dekompozycja LU
257
Procedura ScaLAPACK PDGETRF
260
Wielowątkowość w systemach wielordzeniowych
265
Słowo na temat analizy błędów i liczby operacji
267
Przyszłe kierunki badań
268
Literatura zalecana
269
SPIS TREŚCI
7
15.
Długoterminowe korzyści z pięknego projektu
271
Moje wyobrażenie o pięknym kodzie
271
Wprowadzenie do biblioteki CERN
272
Zewnętrzne piękno
273
Piękno wewnętrzne
278
Podsumowanie
284
16.
Model sterowników jądra systemu Linux — korzyści płynące ze współpracy
285
Skromne początki
286
Redukcja do jeszcze mniejszych rozmiarów
290
Skalowanie do tysięcy urządzeń
293
Małe, luźno połączone obiekty
294
17.
Inny poziom pośredniości
297
Od kodu do wskaźników
297
Od argumentów funkcji do wskaźników argumentów
300
Od systemów plików do warstw systemów plików
303
Od kodu do języka konkretnej domeny
305
Multipleksacja i demultipleksacja
307
Na zawsze warstwy?
308
18.
Implementacja słownika w Pythonie — być wszystkim dla wszystkich
311
Wewnątrz słownika
313
Warunki specjalne
314
Kolizje
316
Zmiana rozmiaru
317
Iteracje i zmiany dynamiczne
318
Podsumowanie
319
Podziękowania
319
19.
Wielowymiarowe iteratory w NumPy
321
Kluczowe wyzwania w operacjach na N-wymiarowych tablicach
322
Modele pamięci dla tablicy N-wymiarowej
323
Początki iteratora NumPy
324
Interfejs iteratora
331
Wykorzystanie iteratora
332
Podsumowanie
336
20.
System korporacyjny o wysokim stopniu niezawodności dla misji Mars Rover NASA
337
Misja i Collaborative Information Portal
338
Wymagania misji
339
Architektura systemu
340
Studium przypadku — usługa strumieniowa
343
Niezawodność
346
Solidność
353
Podsumowanie
355
8
SPIS TREŚCI
Zgłoś jeśli naruszono regulamin