Sekretne życie programów

Zrozumieć komputery – tworzyć lepsze kody

1 opinia

Format:

epub, mobi, ibuk

DODAJ DO ABONAMENTU

WYBIERZ RODZAJ DOSTĘPU

59,40  99,00

Format: epub, mobi

 

Dostęp online przez myIBUK

WYBIERZ DŁUGOŚĆ DOSTĘPU

Cena początkowa: 99,00 zł (-40%)

Najniższa cena z 30 dni: 59,40 zł  


59,40

w tym VAT

TA KSIĄŻKA JEST W ABONAMENCIE

Już od 24,90 zł miesięcznie za 5 ebooków!

WYBIERZ SWÓJ ABONAMENT

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.


Rok wydania2021
Liczba stron516
KategoriaProgramowanie
WydawcaWydawnictwo Naukowe PWN
TłumaczenieTomasz Lewandowski
ISBN-13978-83-01-21775-4
Numer wydania1
Język publikacjipolski
Informacja o sprzedawcyePWN sp. z o.o.

Ciekawe propozycje

Spis treści

  PODZIĘKOWANIA xix
  WSTĘ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
RozwińZwiń
Informacja o cookies
Strona ibuk.pl korzysta z plików cookies w celu dostarczenia Ci oferty jak najlepiej dopasowanej do Twoich oczekiwań i preferencji, jak również w celach marketingowych i analitycznych.
Nasi partnerzy również mogą używać ciasteczek do profilowania i dopasowywania do Ciebie pokazywanych treści na naszych stronach oraz w reklamach.
Poprzez kontynuowanie wizyty na naszej stronie wyrażasz zgodę na użycie tych ciasteczek. Więcej informacji, w tym o możliwości zmiany ustawień cookies, znajdziesz w naszej Polityce Prywatności.

Nie pokazuj więcej tego powiadomienia