UNIX. Sztuka programowania, fragmenty-ksiazek-heliona

[ Pobierz całość w formacie PDF ]
IDZ DO
PRZYK£ADO
UNIX. Sztuka
SPIS TRECI
programowania
KATALOG KSI¥¯EK
Autor: Eric S. Raymond
T³umaczenie: Grzegorz Werner (wstêp, rozdz. 1 – 10),
Wojciech Moch (rozdz. 11 – 20, dod. A – D)
ISBN: 83-7361-419-2
Tytu³ orygina³
Format: B5, stron: 504
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
TWÓJ KOSZYK
UNIX to nie tylko system operacyjny, to tak¿e spo³ecznoæ i kultura
• Obszerne omówienie niezliczonych problemów zwi¹zanych z programowaniem
w systemie Unix
• Niekonwencjonalne przedstawienie kulturotwórczych aspektów programowania
• Wszechstronny opis sprawdzonych regu³ i wzorców projektowych
• Wnioski wyp³ywaj¹ce z historii Uniksa i jego porównanie z innymi
systemami operacyjnymi
• Liczne „studia przypadków” (case studies) przedstawiaj¹ce komponenty
systemu Unix w kontekcie programistycznym
• Omówienie problematyki przenonoci i wieloplatformowoci oprogramowania
Unix to nie tylko system operacyjny; to tak¿e kultura i tradycja. Grzechem wielu
programistów s¹ programy spe³niaj¹ce wprawdzie swe funkcje, lecz zaprojektowane
w popiechu, niedbale, a przez to trudne w utrzymaniu i rozwoju, oporne przy
przenoszeniu na inn¹ platformê i (z biegiem czasu) nieczytelne nawet dla swych
autorów. Na temat dobrego programowania napisano ju¿ bardzo wiele; z tej ksi¹¿ki
dowiesz siê nie tylko tego, jakie rozwi¹zania programistyczne warto poznaæ
i naladowaæ, lecz tak¿e — dlaczego warto to robiæ.
Ta ksi¹¿ka zawiera spor¹ dawkê wiedzy, lecz jej treæ koncentruje siê przede wszystkim
na dowiadczeniu programistycznym. Programowanie przestaje byæ tylko dyscyplin¹
techniczn¹, a staje siê zagadnieniem o charakterze kulturotwórczym.
Doceniaj¹c nale¿ycie ten fakt, autor nie ogranicza siê do technicznego wyk³adu.
Prezentuje poszczególne aspekty profesjonalnego projektowania i implementacji
programów w kontekcie filozofii i historii Uniksa z jednej strony, a spo³ecznymi
uwarunkowaniami kultury uniksowej z drugiej.
Warto przeczytaæ tê ksi¹¿kê tak¿e z tej przyczyny, ¿e ma³o który podrêcznik dla
programistów dostarcza tyle historii, folkloru i dygresji — elementów co prawda
niekoniecznych z punktu widzenia meritum (choæ i nad t¹ kwesti¹ mo¿na by d³ugo
dyskutowaæ), lecz znakomicie uprzyjemniaj¹cych lekturê i byæ mo¿e u³atwiaj¹cych
zrozumienie tego, co w „suchym”, technicznym tekcie mo¿e nieraz wydawaæ siê
zagadkowe.
Je¿eli wiêc jeste programist¹ (niekoniecznie w systemie Unix) albo tylko interesuj¹ Ciê
zagadnienia zwi¹zane z programowaniem, niniejsza ksi¹¿ka z pewnoci¹ bêdzie
stanowiæ interesuj¹c¹ lekturê, a byæ mo¿e równie¿ sk³oni Ciê do spojrzenia w inny
sposób na sw¹ codzienn¹ pracê.
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
O NOWOCIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
 Spis treci
Przedmowa......................................................................................13
Kto powinien przeczyta t ksik? ................................................................................14
Jak korzysta z tej ksiki? ...............................................................................................15
Pokrewne ródła................................................................................................................16
Konwencje uywane w tej ksice....................................................................................17
Nasze studia przypadków..................................................................................................18
Cz I Kontekst........................................................................19
Rozdział 1. Filozofia: filozofia ma znaczenie........................................................21
1.1. Kultura? Jaka kultura?................................................................................................21
1.2. Trwało) Uniksa.........................................................................................................22
1.3. Argumenty przeciwko nauce kultury uniksowej........................................................23
1.4. Co w Uniksie jest złe?................................................................................................24
1.5. Co w Uniksie jest dobre? ...........................................................................................25
1.5.1. Oprogramowanie o otwartych ródłach............................................................25
1.5.2. Midzyplatformowa przeno)no) i otwarte standardy .....................................25
1.5.3. Internet i World Wide Web...............................................................................26
1.5.4. Społeczno) Open Source.................................................................................26
1.5.5. Prawdziwa elastyczno)....................................................................................27
1.5.6. Programowanie Uniksa jest przyjemne ............................................................27
1.5.7. Do)wiadczenie zdobyte w Uniksie mona zastosowa gdzie indziej...............28
1.6. Podstawy filozofii uniksowej .....................................................................................29
1.6.1. Reguła modularno)ci: Pisz proste cz)ci połczone przejrzystymi interfejsami ......31
1.6.2. Reguła przejrzysto)ci: przejrzysto) jest lepsza ni spryt ................................32
1.6.3. Reguła kompozycji: Projektuj programy tak, aby dało si je łczy z innymi.....32
1.6.4. Reguła oddzielania: Oddzielaj polityk od mechanizmu;
oddzielaj interfejsy od głównej cz)ci programu....................................................33
1.6.5. Reguła prostoty: Projektuj pod ktem prostoty;
uciekaj si do złoono)ci tylko tam, gdzie to konieczne ........................................34
1.6.6. Reguła pow)cigliwo)ci: Pisz duy program tylko wtedy,
gdy zostanie jasno udowodnione, e nie da si inaczej ..........................................35
1.6.7. Reguła przezroczysto)ci: Dbaj o zrozumiało) kodu,
aby ułatwi badanie i debugowanie programów .....................................................35
1.6.8. Reguła odporno)ci: odporno) jest pochodn przezroczysto)ci i prostoty.......36
1.6.9. Reguła reprezentacji: Przełó wiedz na dane,
aby logika programu mogła by prosta i odporna...................................................37
1.6.10. Reguła najmniejszego zaskoczenia: Projektujc interfejs,
zawsze postpuj w najmniej zaskakujcy sposób ...................................................37
 6
UNIX. Sztuka programowania
1.6.11. Reguła milczenia: Kiedy program
nie ma nic nieoczekiwanego do powiedzenia, nie powinien mówi nic.................38
1.6.12. Reguła naprawy: Naprawiaj, co si da, ale je)li program musi zawie),
niech zawiedzie z hukiem i jak najszybciej ............................................................38
1.6.13. Reguła ekonomii: Czas programisty jest drogi;
oszczdzaj go zamiast czasu komputera .................................................................39
1.6.14. Reguła generacji: Unikaj programowania rcznego;
je)li to moliwe, pisz programy piszce programy .................................................40
1.6.15. Reguła optymalizacji: Napisz prototyp, zanim zaczniesz dopracowywa
program. Sprawd, czy działa, zanim zaczniesz go optymalizowa ............................40
1.6.16. Reguła rónorodno)ci: Nie ufaj adnym deklaracjom
o „jedynym słusznym sposobie” .............................................................................42
1.6.17. Reguła rozszerzalno)ci: Projektuj programy z my)l o przyszło)ci,
bo nadejdzie ona wcze)niej, ni si spodziewasz ...................................................42
1.7. Filozofia uniksowa w jednej lekcji.............................................................................43
1.8. Stosowanie filozofii uniksowej ..................................................................................43
1.9. Liczy si te nastawienie............................................................................................44
Rozdział 2. Historia: Opowie o dwóch kulturach..............................................45
2.1. Pochodzenie i historia Uniksa, lata 1969 – 1995 .......................................................45
2.1.1. Geneza: lata 1969 – 1971..................................................................................46
2.1.2. Exodus: lata 1971 – 1980..................................................................................48
2.1.3. TCP/IP i Wojny Uniksowe: lata 1980 – 1990 ..................................................50
2.1.4. Uderzenia w Imperium: lata 1991 – 1995.........................................................56
2.2. Pochodzenie i historia hakerów, lata 1961 – 1995.....................................................58
2.2.1. Zabawa w gajach Akademii: lata 1961 – 1980 .....................................................58
2.2.2. Fuzja internetowa i ruch wolnego oprogramowania: lata 1981 – 1991............60
2.2.3. Linux i reakcja pragmatyków: lata 1991 – 1998 ....................................................62
2.3. Ruch Open Source — od roku 1998 do chwili obecnej................................................64
2.4. Lekcje płynce z historii Uniksa ................................................................................66
Rozdział 3. Kontrasty: porównanie filozofii uniksowej z innymi ............................67
3.1. Elementy stylu systemu operacyjnego .......................................................................67
3.1.1. Jaka jest idea unifikujca system operacyjny?..................................................68
3.1.2. Wielozadaniowo) ............................................................................................68
3.1.3. Współpracujce procesy ...................................................................................69
3.1.4. Granice wewntrzne..........................................................................................70
3.1.5. Atrybuty plików i struktury rekordów ..............................................................71
3.1.6. Binarne formaty plików ....................................................................................72
3.1.7. Preferowany styl interfejsu uytkownika..........................................................72
3.1.8. Zamierzone grono odbiorców ...........................................................................73
3.1.9. Bariera oddzielajca uytkownika od programisty...........................................73
3.2. Porównanie systemów operacyjnych .........................................................................74
3.2.1. VMS..................................................................................................................76
3.2.2. MacOS ..............................................................................................................77
3.2.3. OS/2 ..................................................................................................................78
3.2.4. Windows NT.....................................................................................................80
3.2.5. BeOS .................................................................................................................83
3.2.6. MVS..................................................................................................................85
3.2.7. VM/CMS...........................................................................................................87
3.2.8. Linux .................................................................................................................89
3.3. Co odchodzi, to wraca................................................................................................90
Spis treci
7
Cz II Projekt ..........................................................................93
Rozdział 4. Modularno: czysto i prostota.....................................................95
4.1. Hermetyzacja i optymalny rozmiar modułu...............................................................97
4.2. Zwarto) i ortogonalno) ...........................................................................................98
4.2.1. Zwarto)............................................................................................................99
4.2.2. Ortogonalno) .................................................................................................100
4.2.3. Reguła SPOT ..................................................................................................102
4.2.4. Zwarto) i jedno silne centrum .......................................................................103
4.2.5. Zalety niezaangaowania ................................................................................105
4.3. Oprogramowanie ma wiele warstw..........................................................................105
4.3.1. Od góry w dół czy od dołu w gór? ................................................................106
4.3.2. Warstwy spajajce ..........................................................................................108
4.3.3. Studium przypadku: jzyk C jako cienka warstwa kleju ................................108
4.4. Biblioteki..................................................................................................................110
4.4.1. Studium przypadku: wtyczki programu GIMP...............................................111
4.5. Unix i jzyki obiektowe ...........................................................................................112
4.6. Kodowanie z my)l o modularno)ci............................................................................114
Rozdział 5. Tekstowo: dobre protokoły to dobra praktyka..............................115
5.1. Dlaczego tekstowo) jest wana? ............................................................................117
5.1.1. Studium przypadku: format uniksowego pliku haseł......................................118
5.1.2. Studium przypadku: format pliku .newsrc......................................................120
5.1.3. Studium przypadku: format pliku graficznego PNG ......................................121
5.2. Metaformaty plików danych ....................................................................................122
5.2.1. Styl DSV .........................................................................................................122
5.2.2. Format RFC 822 .............................................................................................123
5.2.3. Format „słoika ciasteczek” .............................................................................124
5.2.4. Format „słoika rekordów”...............................................................................125
5.2.5. XML................................................................................................................126
5.2.6. Format plików INI systemu Windows ............................................................128
5.2.7. Uniksowe konwencje dotyczce formatu plików tekstowych ........................129
5.2.8. Zalety i wady kompresji plików .....................................................................130
5.3. Projektowanie protokołów aplikacyjnych................................................................131
5.3.1. Studium przypadku: SMTP, protokół transferu poczty ..................................132
5.3.2. Studium przypadku: POP3, protokół skrzynki pocztowej ..............................133
5.3.3. Studium przypadku: IMAP, internetowy protokół dostpu do poczty ...............134
5.4. Metaformaty protokołów aplikacyjnych ..................................................................135
5.4.1. Klasyczny internetowy metaprotokół aplikacyjny..........................................136
5.4.2. HTTP jako uniwersalny protokół aplikacyjny ................................................136
5.4.3. BEEP: Blocks Extensible Exchange Protocol ................................................138
5.4.4. XML-RPC, SOAP i Jabber .............................................................................139
Rozdział 6. Przezroczysto: niech stanie si. wiatło....................................141
6.1. Studia przypadków...................................................................................................143
6.1.1. Studium przypadku: audacity .........................................................................143
6.1.2. Studium przypadku: opcja -v programu fetchmail .........................................144
6.1.3. Studium przypadku: GCC...............................................................................146
6.1.4. Studium przypadku: kmail ..............................................................................147
6.5.1. Studium przypadku: SNG ...............................................................................148
6.1.6. Studium przypadku: baza danych terminfo ....................................................150
6.1.7. Studium przypadku: pliki danych gry Freeciv................................................153
6.2. Projektowanie pod ktem przezroczysto)ci i odkrywalno)ci...................................154
6.2.1. Zen przezroczysto)ci.......................................................................................155
6.2.2. Kodowanie pod ktem przezroczysto)ci i odkrywalno)ci ..............................156
6.2.3. Przezroczysto) i unikanie nadopiekuPczo)ci ................................................157
8
UNIX. Sztuka programowania
6.2.4. Przezroczysto) i edytowalne reprezentacje ...................................................158
6.2.5. Przezroczysto), diagnozowanie błdów i usuwanie skutków błdu .............159
6.3. Projektowanie pod ktem konserwowalno)ci ..........................................................160
Rozdział 7. Wieloprogramowo: wyodr.bnianie procesów
w celu oddzielenia funkcji ..............................................................163
7.1. Oddzielanie kontroli złoono)ci od dostrajania wydajno)ci ....................................165
7.2. Taksonomia uniksowych metod IPC...........................................................................166
7.2.1. Przydzielanie zadaP wyspecjalizowanym programom ...................................166
7.2.2. Potoki, przekierowania i filtry ........................................................................167
7.2.3. Nakładki ..........................................................................................................171
7.2.4. Nakładki zabezpieczajce i łczenie Bernsteina.............................................172
7.2.5. Procesy podrzdne ..........................................................................................174
7.2.6. Równorzdna komunikacja midzyprocesowa...............................................174
7.3. Problemy i metody, których naley unika ..............................................................181
7.3.1. Przestarzałe uniksowe metody IPC.................................................................182
7.3.2. Zdalne wywołania procedur............................................................................183
7.3.3. Wtki — groba czy niebezpieczePstwo? ......................................................185
7.4. Dzielenie procesów na poziomie projektu ...............................................................186
Rozdział 8. Minij.zyki: jak znale2 notacj., która piewa..................................189
8.1. Taksonomia jzyków................................................................................................191
8.2. Stosowanie minijzyków..........................................................................................193
8.2.1. Studium przypadku: sng .................................................................................193
8.2.2. Studium przypadku: wyraenia regularne ......................................................193
8.2.3. Studium przypadku: Glade .............................................................................196
8.2.4. Studium przypadku: m4 ..................................................................................198
8.2.5. Studium przypadku: XSLT .............................................................................198
8.2.6. Studium przypadku: warsztat dokumentatora.................................................199
8.2.7. Studium przypadku: składnia pliku kontrolnego programu fetchmail ...............204
8.2.8. Studium przypadku: awk ................................................................................205
8.2.9. Studium przypadku: PostScript.......................................................................206
8.2.10. Studium przypadku: bc i dc ..........................................................................207
8.2.11. Studium przypadku: Emacs Lisp ..................................................................209
8.2.12. Studium przypadku: JavaScript ....................................................................209
8.3. Projektowanie minijzyków.....................................................................................210
8.3.1. Wybór odpowiedniego poziomu złoono)ci...................................................210
8.3.2. Rozszerzanie i osadzanie jzyków..................................................................212
8.3.3. Pisanie własnej gramatyki...............................................................................213
8.3.4. Makra — strze si! ........................................................................................214
8.3.5. Jzyk czy protokół aplikacyjny? .....................................................................215
Rozdział 9. Generacja: podwy5szanie poziomu specyfikacji ...............................217
9.1. Programowanie sterowane danymi ..........................................................................218
9.1.1. Studium przypadku: ascii................................................................................219
9.1.2. Studium przypadku: statystyczne filtrowanie spamu .....................................220
9.1.3. Studium przypadku: modyfikowanie metaklas w programie fetchmailconf .....221
9.2. Dorana generacja kodu ...........................................................................................226
9.2.1. Studium przypadku: generowanie kodu
wy)wietlajcego tabel znaków w programie ascii ..............................................226
9.2.2. Studium przypadku: generowanie kodu HTML
na podstawie listy tabelarycznej............................................................................228
Rozdział 10. Konfiguracja: jak zacz7 od właciwej nogi.....................................231
10.1. Co powinno by konfigurowalne? .........................................................................231
10.2. Gdzie znajduj si dane konfiguracyjne?...............................................................233
[ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • emaginacja.xlx.pl
  •