Książka jest techniczno - popularyzacyjną pozycją traktującą o programowaniu oraz tematach pokrewnych, i jest napisana z myślą o początkujących oraz średnio-zaawansowanych programistach, a także osobach, które dopiero chcą rozpocząć przygodę z programowaniem.
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 średnio-zaawansowane 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";
Oraz o wielu detalach, które normalnie pozostałyby niezauważone;
A także zaprzyjaźnisz się z niskopoziomowymi aspektami informatyki;
Powinieneś:
znać podstawy programowania (np. wiedzieć czym jest pętla),
oraz mieć w swoim dorobku przynajmniej jeden program dłuższy niż 50 linii.
Książka Informatyczna Roku 2016 przyznana przez Polskie Towarzystwo Informatyczne.
Author(s): Gynvael Coldwind
Year: 0
Language: Polish
Pages: 797
Strona redakcyjna......Page 0
Spis treści......Page 2
Przedmowa......Page 7
O autorze, o książce......Page 11
Podziękowania......Page 14
Zgłaszanie błędów i errata......Page 15
Część I. Kilka codziennych czynności......Page 17
Rozdział 1. Konsola i interpreter poleceń......Page 18
1.1. Wykorzystanie interpretera......Page 20
1.2. Przekierowania......Page 21
1.3. Przykładowe polecenia wykorzystujące przekierowania......Page 27
1.4. Bieżący katalog roboczy......Page 28
1.5. Zmienne środowiskowe......Page 29
1.6. Skrypt startowy......Page 35
1.7. Konsola okiem programisty......Page 36
Bibliografia......Page 43
Rozdział 2. Czytanie nieznanego języka......Page 44
2.1. Podobieństwa i różnice......Page 45
2.2. Studium przypadku......Page 46
2.3. Uwagi na koniec......Page 51
Ćwiczenia......Page 52
Bibliografia......Page 55
Część II. Podstawy......Page 57
Rozdział 3. Podstawy architektury komputerów......Page 58
3.1. Własny (wirtualny) komputer......Page 59
3.2. Rejestry procesora......Page 60
3.3. Kod maszynowy......Page 63
3.4. Zestaw instrukcji......Page 65
3.5. Pamięć operacyjna......Page 89
3.6. Komunikacja z urządzeniami......Page 91
3.7. Przerwania......Page 94
3.8. Konsola znakowa......Page 97
3.9. Programowalny timer......Page 98
3.10. Przykładowy „kompilator”......Page 99
3.11. Emulator......Page 105
Ćwiczenia......Page 113
Bibliografia......Page 115
Rozdział 4. Typy liczb naturalnych i całkowitych......Page 117
4.1. Zapis binarny i heksadecymalny......Page 118
4.2. Typy liczb naturalnych......Page 122
4.3. Liczby całkowite......Page 126
4.4. Little i Big Endian......Page 134
4.5. Przepełnienie zmiennych naturalnych i całkowitych......Page 137
4.6. Przycięcie wyniku......Page 141
4.7. Saturacja......Page 143
4.8. Zasygnalizowane przepełnienie......Page 144
4.9. Niezdefiniowane zachowanie......Page 145
4.11. Duże liczby......Page 147
4.12. Obsługa przepełnienia w praktyce......Page 148
Ćwiczenia......Page 150
Bibliografia......Page 151
5.1. Wstęp do liczb zmiennoprzecinkowych......Page 152
5.2. Ułamki binarne......Page 154
5.3. IEEE 754 i zmienne binarne......Page 158
5.4. Kodowanie IEEE 754 Double Precision......Page 160
5.5. Wartości specjalne i zdenormalizowane......Page 167
5.6. Istotne wartości zmiennoprzecinkowe......Page 174
5.7. Porównanie liczb zmiennoprzecinkowych......Page 180
5.8. Dziesiętne typy zmiennoprzecinkowe......Page 184
5.9. Typy stałoprzecinkowe......Page 188
Ćwiczenia......Page 193
Bibliografia......Page 194
Rozdział 6. Znaki i łańcuchy znaków......Page 197
6.1. ASCII i strony kodowe......Page 198
6.2. Unicode......Page 206
6.3. Łańcuchy znaków......Page 216
6.4. Konwersja kodowań......Page 232
Ćwiczenia......Page 235
Bibliografia......Page 237
Część III. Wykonywanie programu......Page 239
Bibliografia......Page 243
Rozdział 7. Procesy......Page 245
7.1. Procesy w systemie operacyjnym GNU/Linux......Page 246
7.2. Procesy w systemie operacyjnym Windows......Page 255
7.3. Programowe tworzenie nowego procesu......Page 261
7.4. Plik wykonywalny a nowy proces......Page 273
7.5. API debuggera......Page 280
7.6. Dziedziczenie po procesie rodzicu......Page 291
7.7. Inne operacje na zewnętrznych procesach......Page 293
Ćwiczenia......Page 294
Bibliografia......Page 295
8.1. Tworzenie nowych wątków......Page 297
8.2. Typy wątków i ich przełączanie......Page 307
8.3. Kontekst wątku......Page 314
8.4. Zmienne lokalne dla wątku......Page 320
8.5. Pula wątków......Page 323
Bibliografia......Page 329
Rozdział 9. Synchronizacja......Page 331
9.1. Blokujące atomowe bariery......Page 338
9.2. Spinlocki – wirujące blokady......Page 346
9.3. Muteksy i sekcje krytyczne......Page 351
9.4. Zdarzenia i zmienne warunkowe......Page 366
9.5. Problemy w synchronizacji......Page 383
Ćwiczenia......Page 393
Bibliografia......Page 394
Część IV. Pliki i formaty danych......Page 395
Bibliografia......Page 396
Rozdział 10. System plików......Page 397
10.1. Podstawowe operacje na systemie plików......Page 398
10.2. Prawa dostępu......Page 411
10.3. Operacje na plikach i danych......Page 434
10.4. Ciekawe mechanizmy systemu plików......Page 446
Ćwiczenia......Page 451
Bibliografia......Page 455
11.1. Pliki tekstowe......Page 457
11.2. Pliki binarne......Page 466
11.3. Wstęp do serializacji......Page 484
11.4. Formaty plików......Page 487
Ćwiczenia......Page 488
Bibliografia......Page 489
12.1. Grafika rastrowa......Page 490
12.2. Canvas, surface, image, .........Page 499
12.3. Przegląd popularnych formatów pikseli......Page 500
12.4. Wyświetlenie bitmapy......Page 505
12.5. Ogólna struktura pliku BMP......Page 514
12.6. Nagłówek BITMAPFILEHEADER......Page 517
12.7. Nagłówek BITMAPINFOHEADER......Page 521
12.9. Implementacja 24-bitowego BI_RGB......Page 526
12.10. Paleta kolorów......Page 540
12.11. Kompresja RLE w wydaniu BMP......Page 541
12.12. Implementacja RLE8......Page 544
12.13. Podsumowanie......Page 547
Ćwiczenia......Page 548
Bibliografia......Page 551
13.1. Struktura PNG......Page 553
13.2. Bloki IHDR oraz IEND......Page 559
13.3. Blok IDAT, kompresja i filtry adaptacyjne......Page 564
13.4. Prosty dekoder......Page 570
Bibliografia......Page 577
Część V. Komunikacja......Page 579
Bibliografia......Page 591
14.1. Potoki......Page 592
14.2. Nazwane potoki......Page 605
14.3. Gniazda domeny UNIX i socketpair......Page 623
14.4. Pamięć współdzielona......Page 634
14.5. Wiadomości w WinAPI......Page 641
Bibliografia......Page 648
15.1. Wstęp do sieci TCP/IP......Page 650
15.2. Gniazda TCP oraz DNS......Page 672
15.3. Nasłuchujące gniazda TCP oraz HTTP......Page 693
15.4. Gniazda UDP i peer-to-peer......Page 728
Ćwiczenia......Page 737
Bibliografia......Page 738
Programowanie dla zabawy......Page 741
Ćwiczenia......Page 760
Bibliografia......Page 761
Zakończenie......Page 763
Przypisy......Page 764