- -5%
ebook Sekretne życie programów
Joanathan E. Steinhart
Wydawca:
Wydawnictwo Naukowe PWN
Rok wydania:
2021
W Sekretnym życiu programów doświadczony inżynier oprogramowania Jonathan E. Steinhart bada – i to dogłębnie – technologie i idee leżące u podstaw maszyn, na których pracujemy. Bada m.in. sprzęt komputerowy, zachowanie oprogramowania na konkretnym sprzęcie, a także sposób, w jaki różni ludzie rozwiązywali w przeszłości różne zawiłe problemy.
Spis treści ebooka Sekretne życie programów
PODZIĘKOWANIA xixWSTĘP xxi
WPROWADZENIE xxv
Dlaczego dobre programowanie jest ważne xxvi
Nauka programowania to dopiero początek xxvii
Znaczenie podstawowej wiedzy xxviii
Kto powinien przeczytać tę książkę? xxix
Czym jest komputer? xxix
Czym jest programowanie? xxx
Kodowanie, programowanie, inżynieria i informatyka xxxii
Krajobraz xxxiv
Co się znajduje w tej książce xxxvi
1. JĘZYK WEWNĘTRZNY KOMPUTERÓW 1
Czym jest język? 2
Język pisany 2
Bit 3
Operacje logiczne 3
Algebra boolowska 4
Prawo de Morgana 5
Przedstawianie liczb naturalnych za pomocą bitów 6
Przedstawianie liczb dodatnich 6
Dodawanie binarne 9
Przedstawianie liczb ujemnych 11
Przedstawianie liczb rzeczywistych 15
Postać stałoprzecinkowa 15
Postać zmiennoprzecinkowa 17
Standard liczb zmiennoprzecinkowych IEEE 18
Zapis dziesiętny kodowany dwójkowo 19
Łatwiejsze sposoby pracy z liczbami dwójkowymi 20
Postać ósemkowa 20
Postać szesnastkowa 20
Przedstawienie kontekstu 21
Nazewnictwo grup bitów 22
Przedstawianie tekstu 23
Amerykański standardowy kod do wymiany informacji (ASCII) 24
Rozwój innych standardów 26
8-bitowy format transformacji Unicode 26
Używanie znaków do przedstawiania liczb 28
Kodowanie Quoted-Printable 28
Kodowanie Base64 28
Kodowanie URL 29
Przedstawianie barw 30
Dodanie przejrzystości 32
Kodowanie kolorów 33
Podsumowanie 33
2. UKŁADY KOMBINACYJNE 35
W obronie komputerów cyfrowych 36
Różnica między analogowym a cyfrowym 37
Dlaczego rozmiar sprzętu ma znaczenie 39
Cyfrowe urządzenia są stabilniejsze 40
Cyfrowe urządzenia w analogowym świecie 41
Dlaczego używamy bitów zamiast cyfr 43
Krótkie wprowadzenie do elektryczności 44
Analogia hydrauliczna 44
Przełączniki elektryczne 47
Budowanie sprzętu do obsługi bitów 50
Przekaźniki 50
Lampy próżniowe 53
Tranzystory 54
Układy scalone 55
Bramki logiczne 56
Histereza jako sposób na zwiększenie odporności na szum 57
Przesyłanie różnicowe 59
Czas propagacji 60
Rodzaje wyjść 61
Budowa bardziej skomplikowanych obwodów 64
Budowa sumatora 64
Budowa dekoderów 67
Budowa demultiplekserów 68
Budowa selektorów 69
Podsumowanie 71
3. UKŁADY SEKWENCYJNE 73
Przedstawianie czasu 74
Oscylatory 74
Zegary 75
Przerzutniki 76
Przerzutniki bramkowane 77
Flip-flopy 79
Liczniki 82
Rejestry 84
Organizacja i adresowanie pamięci 84
Pamięć o dostępie swobodnym (RAM) 87
Pamięć tylko do odczytu (ROM) 89
Urządzenia blokowe 91
Pamięć typu Flash oraz napędy SSD 94
Wykrywanie i naprawianie błędów 94
Sprzęt kontra oprogramowanie 96
Podsumowanie 97
4. ANATOMIA KOMPUTERA 99
Pamięć 100
Wejście i wyjście 102
Jednostka centralna 103
Jednostka arytmetyczno-logiczna 103
Przesuwalność 106
Jednostka wykonawcza 107
Plan instrukcji 109
Instrukcje 109
Tryby adresowania 111
Instrukcje kodów warunkowych 112
Instrukcje rozgałęzienia 112
Ostateczny plan instrukcji 113
Ostateczny projekt 116
Rejestr instrukcji 116
Ścieżki danych i sygnały kontrolne 117
Sterowanie ruchem 118
Zbiory instrukcji RISC i CISC 121
Procesor graficzny 122
Podsumowanie 122
5. ARCHITEKTURA KOMPUTERA 123
Podstawowe elementy architektoniczne 124
Rdzenie procesora 124
Mikroprocesory i mikrokomputery 125
Procedury, podprogramy i funkcje 126
Stosy 128
Przerwania 132
Adresowanie względne 134
Jednostki zarządzania pamięcią 136
Pamięć wirtualna 138
Przestrzeń użytkownika i przestrzeń systemowa 139
Hierarchia pamięci i wydajność 140
Koprocesory 142
Układ danych w pamięci 143
Wykonywanie programów 144
Zasilanie pamięci 146
Podsumowanie 146
6. ANALIZA KOMUNIKACJI 147
Niskopoziomowe we/wy 148
Porty we/wy 148
Powciskaj mi przyciski 150
Niech się staną światełka 152
Światła, akcja, 154
Jaśnie oświeceni 155
2n twarzy Graya 155
Kwadratura 157
Komunikacja równoległa 158
Komunikacja szeregowa 159
Złap falę 161
Uniwersalna magistrala szeregowa 163
Sieć 163
Współczesne sieci LAN 165
Internet 165
TCP/IP 166
Adresy IP 166
System nazw domen 166
World Wide Web (WWW) 166
Urządzenia analogowe w świecie cyfrowym 167
Konwersja cyfrowego na analogowe 168
Konwersja analogowego na cyfrowe 170
Cyfrowy dźwięk 173
Obrazy cyfrowe 181
Filmy 183
Urządzenia do interakcji z człowiekiem 184
Terminale 185
Terminale graficzne 186
Grafika wektorowa 187
Grafika rastrowa 188
Klawiatura i mysz 190
Podsumowanie 190
7. ORGANIZACJA DANYCH 191
Podstawowe typy danych 192
Tablice 193
Bitmapy 195
Łańcuchy tekstowe 196
Złożone typy danych 197
Listy powiązane 200
Dynamiczna alokacja pamięci 204
Wydajniejsza alokacja pamięci 206
Zbieranie śmieci 206
Listy podwójnie powiązane 207
Hierarchiczne struktury danych 208
Magazyny dla mas 213
Bazy danych 215
Indeksy 216
Przenoszenie danych 217
Wektorowane wejście/wyjście 221
Pułapki programowania obiektowego 222
Sortowanie 223
Mieszanie 225
Wydajność oprogramowania a parametry sprzętowe 227
Podsumowanie 228
8. PRZETWARZANIE JĘZYKA 229
Język asemblera 229
Języki wysokopoziomowe 231
Programowanie strukturalne 232
Analiza leksykalna 233
Maszyny stanowe 235
Wyrażenia regularne 236
Od słów do zdań 239
Klub języka dnia 240
Drzewa wyprowadzenia 241
Interpretery 244
Kompilatory 246
Optymalizacja 248
Ostrożnie ze sprzętem 249
Podsumowanie 250
9. PRZEGLĄDARKI INTERNETOWE 251
Języki znaczników 252
Ujednolicony format określania lokalizacji 254
Dokumenty HTML 255
DOM 256
Leksykon drzewa 257
Interpretacja DOM 258
Kaskadowe arkusze stylów (CSS) 259
XML i przyjaciele 263
JavaScript 266
jQuery 268
SVG 270
HTML5 271
JSON 271
Podsumowanie 272
10. PROGRAMOWANIE APLIKACYJNE I SYSTEMOWE 275
Zgadnij co to za zwierzę wersja 1: HTML i JavaScript 278
Szkielet poziomu aplikacji 279
Element strony internetowej 279
JavaScript 280
CSS 283
Zgadnij co to za zwierzę, wersja 2: C 283
Terminale i wiersz poleceń 284
Budowanie programu 284
Terminale i sterowniki urządzeń 285
Przełączanie kontekstów 285
Standardowe wejście/wyjście 287
Bufory cykliczne 288
Lepszy kod dzięki dobrym abstrakcjom 290
Nieco mechaniki 291
Przepełnienie bufora 292
Program w C 292
Trening 298
Podsumowanie 299
11. SKRÓTY I PRZYBLIŻENIA 301
Wyszukiwanie w tabeli 302
Konwersja 302
Teksturowanie 303
Klasyfikacja znaków 306
Metody typu całkowitego 308
Linie proste 310
Zakręcone krzywe 316
Wielomiany 319
Rekursywne podziały 319
Spirale 319
Geometria konstruktywna 323
Przesuwanie i maskowanie 330
Więcej unikania matmy 331
Przybliżenia za pomocą szeregu potęgowego 331
Algorytm CORDIC 332
Rzeczy nieco losowe 337
Krzywe wypełniające płaszczyznę 338
L-systemy 339
Wejście w stochastykę 341
Kwantyzacja 342
Podsumowanie 352
12. ZAKLESZCZENIA I WYŚCIGI 353
Co to jest wyścig? 354
Zasoby współdzielone 355
Wątki i procesy 355
Blokady 357
Transakcje i ziarnistość 358
Czekając na semafor 359
Zakleszczenia 360
Implementacja zamka krótkoterminowego 360
Implementacja zamka długoterminowego 361
JavaScript przeglądarki 361
Funkcje asynchroniczne i obietnice 365
Podsumowanie 369
13. BEZPIECZEŃSTWO 371
Przegląd zagadnień z tematyki bezpieczeństwa i prywatności 372
Model zagrożenia 373
Zaufanie 374
Zabezpieczenia fizyczne 376
Zabezpieczenia komunikacji 377
Współczesność 378
Metadane i nadzór 380
Kontekst społeczny 381
Uwierzytelnienie i autoryzacja 383
Kryptografia 384
Steganografia 384
Szyfry podstawieniowe 385
Szyfry przestawieniowe 388
Bardziej złożone szyfry 389
Szyfry z kluczem jednorazowym 389
Problem wymiany kluczy 390
Kryptografia klucza publicznego 391
Utajnianie w wyprzedzeniem 392
Kryptograficzne funkcje mieszające 392
Podpisy cyfrowe 393
Infrastruktura klucza publicznego 394
Blockchain 394
Zarządzanie hasłami 395
Higiena oprogramowania 396
Chroń właściwe rzeczy 396
Sprawdzaj logikę do upadłego 397
Szukaj błędów 397
Minimalizuj powierzchnię ataku 397
Pozostań w wyznaczonych granicach 398
Wygenerowanie dobrej liczby losowej jest trudne 399
Znaj kod swój 401
Skrajny spryt to twój wróg 402
Zrozum, co jest widoczne 403
Nie przesadzaj ze zbieraniem danych 403
Nie gromadź 404
Dynamiczna alokacja pamięci nie jest twoim przyjacielem 404
Zbieranie śmieci też nie jest twoim przyjacielem 406
Dane jako kod 407
Podsumowanie 409
14. SZTUCZNA INTELIGENCJA 411
Ogólny zarys 412
Uczenie się maszyn 415
Bayes 415
Gauss 417
Sobel 420
Canny 424
Ekstrakcja cech 426
Sieci neuronowe 427
Zastosowanie uczenia się maszyn 433
Sztuczna inteligencja 434
Big Data 437
Podsumowanie 439
15. ŚWIAT REALNY 441
Propozycja wartości 442
Jak się tu znaleźliśmy 444
Historia w skrócie 444
Otwarte oprogramowanie 447
Creative Commons 449
Gwałtowny wzrost przenośności 449
Systemy zarządzania pakietami 450
Kontenery 451
Java 451
Node.js 453
Chmura obliczeniowa 453
Maszyny wirtualne 454
Urządzenia mobilne 454
Środowisko programistyczne 455
Czy jesteś doświadczony? 455
Nauka szacowania 455
Planowanie projektów 456
Podejmowanie decyzji 457
Współpraca z różnymi osobowościami 458
Poruszanie się wśród kultury miejsca pracy 459
Podejmowanie decyzji na podstawie wiedzy 460
Metodologie rozwoju oprogramowania 460
Planowanie projektu 461
Spiszmy to 462
Szybkie prototypowanie 462
Projekt interfejsu 463
Ponowne użycie kodu kontra pisanie własnego 466
Rozwój projektu 467
Rozmowa 467
Dojrzała relacja z komputerami 467
Terminale i powłoki 468
Edytory tekstu 469
Kod przenośny 469
Kontrola wersji 470
Testowanie 471
Raportowanie i śledzenie błędów 472
Refaktoryzacja 472
Utrzymywanie 472
Dbaj o styl 473
Naprawiaj, a nie pisz od nowa 474
Podsumowanie 475
INDEKS
Szczegóły ebooka Sekretne życie programów
- Wydawca:
- Wydawnictwo Naukowe PWN
- Rok wydania:
- 2021
- Typ publikacji:
- Ebook
- Język:
- polski
- Format:
- mobi,epub
- ISBN:
- 978-83-01-21775-4
- ISBN wersji papierowej:
- 978-83-01-21603-0
- Wydanie:
- 1
- Autorzy:
- Joanathan E. Steinhart
- Tłumacze:
- Tomasz Lewandowski
- Liczba Stron:
- 516
Recenzje ebooka Sekretne życie programów
-
Reviews (0)
Na jakich urządzeniach mogę czytać ebooki?
Na czytnikach Kindle, PocketBook, Kobo i innych
Na komputerach stacjonarnych i laptopach
Na telefonach z systemem ANDROID lub iOS
Na wszystkich urządzeniach obsługujących format plików PDF, Mobi, EPub
- -5%
-5%
99,00 zł
94,17 zł
@CUSTOMER_NAME@
@COMMENT_TITLE@
@COMMENT_COMMENT@