ebook Zrozumieć programowanie - Gynvael Coldwind

Zrozumieć programowanie

Książka jest techniczno-popularyzacyjną pozycją traktującą o programowaniu oraz tematach pokrewnych i jest napisana z myślą o początkujących oraz średniozaawansowanych programistach. Celem publikacji jest przedstawienie ciekawych elementów programowania oraz ekosystemu programistycznego, a także przedstawienie sposobów radzenia sobie z podstawowymi problemami, oraz wyjaśnienia w przystępny sposób pewnych elementów, z którymi często osoby początkujące oraz średniozaawansowane mają trudności. Z książki dowiesz się: - jak poradzić sobie z trudnościami napotykanymi podczas programowania, - jak operować na danych tekstowych, binarnych, plikach, strumieniach, pakietach danych, oraz jakie są najczęściej popełniane błędy, - jakie są różnice pomiędzy językami programowania w kwestiach, które na pierwszy rzut oka wydawały się identyczne, - jak wybrane, często używane, mechanizmy, funkcje czy biblioteki działają "od kuchni", - o wielu detalach, które normalnie pozostałyby niezauważone, - zaprzyjaźnisz się z niskopoziomowymi aspektami informatyki. Powinieneś: - znać podstawy programowania (np. wiedzieć czym jest pętla), - mieć w swoim dorobku przynajmniej 1 program dłuższy niż 50 linii.Przedmowa 11 Wstęp 15 O autorze, o książce 15 Podziękowania 18 Zgłaszanie błędów i errata 18 Część I. Kilka codziennych czynności 21 1. Konsola i interpreter poleceń 23 1.1. Wykorzystanie interpretera 27 1.2. Przekierowania 28 1.3. Przykładowe polecenia wykorzystujące przekierowania 32 1.4. Bieżący katalog roboczy 33 1.5. Zmienne środowiskowe 34 1.6. Skrypt startowy 38 1.7. Konsola okiem programisty 40 Ćwiczenia 44 Bibliografia 44 2. Czytanie nieznanego języka 45 2.1. Podobieństwa i różnice 48 2.2. Studium przypadku 49 2.3. Uwagi na koniec 53 Ćwiczenia 54 Bibliografia 56 Część II. Podstawy 57 3. Podstawy architektury komputerów 59 3.1. Własny (wirtualny) komputer 62 3.2. Rejestry procesora 63 3.3. Kod maszynowy 65 3.4. Zestaw instrukcji 67 3.5. Pamięć operacyjna 84 3.6. Komunikacja z urządzeniami 86 3.7. Przerwania 88 3.8. Konsola znakowa 90 3.9. Programowalny timer 90 3.10. Przykładowy „kompilator” 91 3.11. Emulator 96 Ćwiczenia 102 Bibliografia 104 4. Typy liczb naturalnych i całkowitych 105 4.1. Zapis binarny i heksadecymalny 108 4.2. Typy liczb naturalnych 111 4.3. Liczby całkowite 114 4.4. Little i Big Endian 120 4.5. Przepełnienie zmiennych naturalnych i całkowitych 122 4.6. Przycięcie wyniku 126 4.7. Saturacja 127 4.8. Zasygnalizowane przepełnienie 128 4.9. Niezdefiniowane zachowanie 128 4.10. Awans zmiennej 130 4.11. Duże liczby 130 4.12. Obsługa przepełnienia w praktyce 131 Ćwiczenia 132 Bibliografia 133 5. Typy pseudorzeczywiste 135 5.1. Wstęp do liczb zmiennoprzecinkowych 137 5.2. Ułamki binarne 139 5.3. IEEE 754 i zmienne binarne 142 5.4. Kodowanie IEEE 754 Double Precision 143 5.5. Wartości specjalne i zdenormalizowane 149 5.6. Istotne wartości zmiennoprzecinkowe 155 5.7. Porównanie liczb zmiennoprzecinkowych 160 5.8. Dziesiętne typy zmiennoprzecinkowe 163 5.9. Typy stałoprzecinkowe 166 Ćwiczenia 169 Bibliografia 170 6. Znaki i łańcuchy znaków 173 6.1. ASCII i strony kodowe 176 6.2. Unicode 182 6.3. Łańcuchy znaków 191 6.4. Konwersja kodowań 203 Ćwiczenia 205 Bibliografia 206 Część III. Wykonywanie programu 209 Bibliografia 212 7. Procesy 213 7.1. Procesy w systemie operacyjnym GNU/Linux 216 7.2. Procesy w systemie operacyjnym Windows 222 7.3. Programowe tworzenie nowego procesu 226 7.4. Plik wykonywalny a nowy proces 234 7.5. API debuggera 240 7.6. Dziedziczenie po procesie rodzicu 249 7.7. Inne operacje na zewnętrznych procesach 250 Ćwiczenia 251 Bibliografia 252 8. Wątki 253 8.1. Tworzenie nowych wątków 255 8.2. Typy wątków i ich przełączanie 262 8.3. Kontekst wątku 267 8.4. Zmienne lokalne dla wątku 272 8.5. Pula wątków 274 Bibliografia 278 9. Synchronizacja 279 9.1. Blokujące atomowe bariery 287 9.2. Spinlocki – wirujące blokady 292 9.3. Muteksy i sekcje krytyczne 296 9.4. Zdarzenia i zmienne warunkowe 308 9.5. Problemy w synchronizacji 321 Ćwiczenia 329 Bibliografia 329 Część IV. Pliki i formaty danych 331 Bibliografia 332 10. System plików 333 10.1. Podstawowe operacje na systemie plików 336 10.2. Prawa dostępu 347 10.3. Operacje na plikach i danych 364 10.4. Ciekawe mechanizmy systemu plików 374 Ćwiczenia 378 Bibliografia 380 11. Pliki binarne i tekstowe 383 11.1. Pliki tekstowe 385 11.2. Pliki binarne 392 11.3. Wstęp do serializacji 404 11.4. Formaty plików 406 Ćwiczenia 407 Bibliografia 408 12. Format BMP i wstęp do bitmap 409 12.1. Grafika rastrowa 411 12.2. Canvas, surface, image, ... 418 12.3. Przegląd popularnych formatów pikseli 419 12.4. Wyświetlenie bitmapy 423 12.5. Ogólna struktura pliku BMP 429 12.6. Nagłówek BITMAPFILEHEADER 430 12.7. Nagłówek BITMAPINFOHEADER 433 12.8. Słowo o implementacji 436 12.9. Implementacja 24-bitowego BI_RGB 437 12.10. Paleta kolorów 447 12.11. Kompresja RLE w wydaniu BMP 448 12.12. Implementacja RLE8 450 12.13. Podsumowanie 453 Ćwiczenia 453 Bibliografia 456 13. Format PNG 457 13.1. Struktura PNG 459 13.2. Bloki IHDR oraz IEND 463 13.3. Blok IDAT, kompresja i filtry adaptacyjne 466 13.4. Prosty dekoder 470 Ćwiczenia 475 Bibliografia 476 Część V. Komunikacja 477 Bibliografia 485 14. Komunikacja międzyprocesowa 487 14.1. Potoki 489 14.2. Nazwane potoki 499 14.3. Gniazda domeny UNIX i socketpair 512 14.4. Pamięć współdzielona 520 14.5. Wiadomości w WinAPI 526 Ćwiczenia 531 Bibliografia 531 15. Komunikacja sieciowa 533 15.1. Wstęp do sieci TCP/IP 535 15.2. Gniazda TCP oraz DNS 550 15.3. Nasłuchujące gniazda TCP oraz HTTP 567 15.4. Gniazda UDP i peer-to-peer 592 Ćwiczenia 599 Bibliografia 601 Programowanie dla zabawy 603 Ćwiczenia 617 Bibliografia 617 Zakończenie 619 Indeks 621

Dodaj komentarz


Brak komentarzy

  Pobierz fragment (ePub)   lub czytaj