EBOOKI WYDAWCY
Autor:
Wydawca:
Format:
epub, mobi, ibuk
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. |
EBOOKI WYDAWCY
POLECAMY
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 | |