piękny kod. tajemnice mistrzów programowania pełna wersja.epub

(17313 KB) Pobierz
SPIS TREŚCI
Słowo wstępne
Wstęp
1. Wyrażenia regularne
Programowanie w praktyce
Implementacja
Omówienie
Alternatywy
Rozszerzanie
Podsumowanie
13
15
19
20
21
22
24
25
27
2. Edytor delty w Subversion — interfejs jako ontologia
Kontrola wersji i transformacja drzewa
Prezentacja różnic pomiędzy drzewami
Interfejs edytora delty
Ale czy to jest sztuka?
Abstrakcja jako sport widowiskowy
Wnioski
29
30
34
35
40
43
45
3. Najpiękniejszy kod, którego nigdy nie napisałem
Najpiękniejszy kod, jaki kiedykolwiek napisałem
Coraz więcej za pomocą coraz mniejszych środków
Perspektywa
Co to jest pisanie
Zakończenie
Podziękowania
47
47
49
54
57
57
59
4. Wyszukiwanie
Na czas
Problem — dane z pamiętnika sieciowego
Problem — kto zażądał, czego i kiedy
Wyszukiwanie na dużą skalę
Podsumowanie
61
61
62
70
75
77
5
Kup książkę
Poleć książkę
5. Poprawny, piękny, szybki (w takiej kolejności)
— lekcje z projektowania weryfikatorów XML
Znaczenie walidacji XML
Problem
Wersja 1. Naiwna implementacja
Wersja 2. Imitacja gramatyki BNF O(N)
Wersja 3. Pierwsza optymalizacja O(log N)
Wersja 4. Druga optymalizacja — nie sprawdzaj dwa razy
Wersja 5. Trzecia optymalizacja O(1)
Wersja 6. Czwarta optymalizacja — buforowanie
Morał
79
79
80
82
83
84
85
87
91
93
6. Framework for Integrated Test — piękno poprzez delikatność
Acceptance Testing Framework w trzech klasach
Wyzwanie zaprojektowania środowiska
Otwarte środowisko
Jak prosty może być parser HTML
Podsumowanie
95
96
98
99
100
103
7. Piękne testy
To niesforne wyszukiwanie binarne
Wstęp do JUnit
Rozprawić się z wyszukiwaniem binarnym
Podsumowanie
105
106
109
111
122
8. Generowanie w locie kodu do przetwarzania obrazów
9. Kolejność wykonywania operatorów
JavaScript
Tablica symboli
Tokeny
Kolejność
Wyrażenia
Operatory wrostkowe
Operatory przedrostkowe
Operatory przypisania
Stałe
Zakres
Instrukcje
Funkcje
Literały tablicowe i obiektowe
Rzeczy do zrobienia i przemyślenia
125
147
148
149
150
151
152
152
154
155
155
156
157
160
161
162
10. Poszukiwanie szybszych metod zliczania bitów w stanie wysokim
Podstawowe metody
Dziel i zwyciężaj
Inne metody
6
SPIS TREŚCI
163
164
165
167
Kup książkę
Poleć książkę
Suma i różnica liczb ustawionych bitów w dwóch słowach
Porównywanie liczby ustawionych bitów w dwóch słowach
Zliczanie jedynek w tablicy
Zastosowania
169
169
170
175
11. Bezpieczna komunikacja — technologia wolności
Początki
Rozwikłać tajemnicę bezpiecznego przesyłania wiadomości
Klucz to użyteczność
Podstawa
Zestaw testów
Działający prototyp
Oczyść, podłącz i używaj
Hakowanie w Himalajach
Niewidoczne ruchy ręką
Prędkość ma znaczenie
Prywatność komunikacji dla praw jednostki
Hakowanie cywilizacji
177
178
180
181
184
188
189
190
194
199
201
202
203
12. Hodowanie pięknego kodu w języku BioPerl
BioPerl i moduł Bio::Graphics
Proces projektowania modułu Bio::Design
Rozszerzanie modułu Bio::Graphics
Wnioski i lekcje
205
206
210
228
232
13. Projekt programu Gene Sorter
Interfejs użytkownika programu Gene Sorter
Podtrzymywanie dialogu z użytkownikiem przez internet
Nieco polimorfizmu
Filtrowanie w celu znalezienia odpowiedniego genu
Ogólna teoria pięknego kodu
Podsumowanie
235
236
237
239
242
243
246
14. Jak elegancki kod ewoluuje wraz ze sprzętem — przypadek eliminacji Gaussa
Wpływ architektury komputerów na algorytmy macierzowe
Metoda dekompozycyjna
Prosta wersja
Podprocedura DGEFA biblioteki LINPACK
Procedura LAPACK DGETRF
Rekursywna dekompozycja LU
Procedura ScaLAPACK PDGETRF
Wielowątkowość w systemach wielordzeniowych
Słowo na temat analizy błędów i liczby operacji
Przyszłe kierunki badań
Literatura zalecana
247
248
250
251
252
255
257
260
265
267
268
269
SPIS TREŚCI
7
Kup książkę
Poleć książkę
15. Długoterminowe korzyści z pięknego projektu
Moje wyobrażenie o pięknym kodzie
Wprowadzenie do biblioteki CERN
Zewnętrzne piękno
Piękno wewnętrzne
Podsumowanie
271
271
272
273
278
284
16. Model sterowników jądra systemu Linux — korzyści płynące ze współpracy
Skromne początki
Redukcja do jeszcze mniejszych rozmiarów
Skalowanie do tysięcy urządzeń
Małe, luźno połączone obiekty
285
286
290
293
294
17. Inny poziom pośredniości
Od kodu do wskaźników
Od argumentów funkcji do wskaźników argumentów
Od systemów plików do warstw systemów plików
Od kodu do języka konkretnej domeny
Multipleksacja i demultipleksacja
Na zawsze warstwy?
297
297
300
303
305
307
308
18. Implementacja słownika w Pythonie — być wszystkim dla wszystkich
Wewnątrz słownika
Warunki specjalne
Kolizje
Zmiana rozmiaru
Iteracje i zmiany dynamiczne
Podsumowanie
Podziękowania
311
313
314
316
317
318
319
319
19. Wielowymiarowe iteratory w NumPy
Kluczowe wyzwania w operacjach na N-wymiarowych tablicach
Modele pamięci dla tablicy N-wymiarowej
Początki iteratora NumPy
Interfejs iteratora
Wykorzystanie iteratora
Podsumowanie
321
322
323
324
331
332
336
20. System korporacyjny o wysokim stopniu niezawodności dla misji Mars Rover NASA
Misja i Collaborative Information Portal
Wymagania misji
Architektura systemu
Studium przypadku — usługa strumieniowa
Niezawodność
Solidność
Podsumowanie
337
338
339
340
343
346
353
355
8
SPIS TREŚCI
Kup książkę
Poleć książkę
Zgłoś jeśli naruszono regulamin