POLECAMY
Autor:
Wydawca:
Format:
epub, mobi
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 wydania | 2021 |
---|---|
Liczba stron | 516 |
Kategoria | Programowanie |
Wydawca | Wydawnictwo Naukowe PWN |
Tłumaczenie | Tomasz Lewandowski |
ISBN-13 | 978-83-01-21775-4 |
Numer wydania | 1 |
Język publikacji | polski |
Informacja o sprzedawcy | ePWN sp. z o.o. |
POLECAMY
Ciekawe propozycje
Sekretne motywy lorda Sinclaira
do koszyka
Sekretne pożądanie
do koszyka
Sekretne pożądanie
do koszyka
Sekretne randki
do koszyka
Sekretne rozkosze
do koszyka
Sekretne schronisko
do koszyka
Sekretne schronisko
do koszyka
Sekretne słowa klucze.
do koszyka
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 | |