Facebook - konwersja
  • promocja

Ekstremalny kod w języku C. Współbieżność i programowanie zorientowane obiektowo - ebook

Wydawnictwo:
Data wydania:
20 kwietnia 2021
Format ebooka:
EPUB
Format EPUB
czytaj
na czytniku
czytaj
na tablecie
czytaj
na smartfonie
Jeden z najpopularniejszych formatów e-booków na świecie. Niezwykle wygodny i przyjazny czytelnikom - w przeciwieństwie do formatu PDF umożliwia skalowanie czcionki, dzięki czemu możliwe jest dopasowanie jej wielkości do kroju i rozmiarów ekranu. Więcej informacji znajdziesz w dziale Pomoc.
Multiformat
E-booki w Virtualo.pl dostępne są w opcji multiformatu. Oznacza to, że po dokonaniu zakupu, e-book pojawi się na Twoim koncie we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu.
, PDF
Format PDF
czytaj
na laptopie
czytaj
na tablecie
Format e-booków, który możesz odczytywać na tablecie oraz laptopie. Pliki PDF są odczytywane również przez czytniki i smartfony, jednakze względu na komfort czytania i brak możliwości skalowania czcionki, czytanie plików PDF na tych urządzeniach może być męczące dla oczu. Więcej informacji znajdziesz w dziale Pomoc.
Multiformat
E-booki w Virtualo.pl dostępne są w opcji multiformatu. Oznacza to, że po dokonaniu zakupu, e-book pojawi się na Twoim koncie we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu.
, MOBI
Format MOBI
czytaj
na czytniku
czytaj
na tablecie
czytaj
na smartfonie
Jeden z najczęściej wybieranych formatów wśród czytelników e-booków. Możesz go odczytać na czytniku Kindle oraz na smartfonach i tabletach po zainstalowaniu specjalnej aplikacji. Więcej informacji znajdziesz w dziale Pomoc.
Multiformat
E-booki w Virtualo.pl dostępne są w opcji multiformatu. Oznacza to, że po dokonaniu zakupu, e-book pojawi się na Twoim koncie we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu.
(3w1)
Multiformat
E-booki sprzedawane w księgarni Virtualo.pl dostępne są w opcji multiformatu - kupujesz treść, nie format. Po dodaniu e-booka do koszyka i dokonaniu płatności, e-book pojawi się na Twoim koncie w Mojej Bibliotece we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu przy okładce. Uwaga: audiobooki nie są objęte opcją multiformatu.
czytaj
na laptopie
Pliki PDF zabezpieczone watermarkiem możesz odczytać na dowolnym laptopie po zainstalowaniu czytnika dokumentów PDF. Najpowszechniejszym programem, który umożliwi odczytanie pliku PDF na laptopie, jest Adobe Reader. W zależności od potrzeb, możesz zainstalować również inny program - e-booki PDF pod względem sposobu odczytywania nie różnią niczym od powszechnie stosowanych dokumentów PDF, które odczytujemy każdego dnia.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na tablecie
Aby odczytywać e-booki na swoim tablecie musisz zainstalować specjalną aplikację. W zależności od formatu e-booka oraz systemu operacyjnego, który jest zainstalowany na Twoim urządzeniu może to być np. Bluefire dla EPUBa lub aplikacja Kindle dla formatu MOBI.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na czytniku
Czytanie na e-czytniku z ekranem e-ink jest bardzo wygodne i nie męczy wzroku. Pliki przystosowane do odczytywania na czytnikach to przede wszystkim EPUB (ten format możesz odczytać m.in. na czytnikach PocketBook) i MOBI (ten fromat możesz odczytać m.in. na czytnikach Kindle).
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na smartfonie
Aby odczytywać e-booki na swoim smartfonie musisz zainstalować specjalną aplikację. W zależności od formatu e-booka oraz systemu operacyjnego, który jest zainstalowany na Twoim urządzeniu może to być np. iBooks dla EPUBa lub aplikacja Kindle dla formatu MOBI.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.

Ekstremalny kod w języku C. Współbieżność i programowanie zorientowane obiektowo - ebook

Jeśli uważasz, że język C dawno został odłożony do lamusa, jesteś w błędzie. Wielu inżynierów oprogramowania o nim zapomniało, jednak C wciąż cieszy się popularnością. Jest przy tym uważany za dość trudny język programowania, gdyż samo opanowanie jego składni to za mało, aby efektywnie go wykorzystywać. Właśnie dlatego ceni się programistów z wnikliwym i naukowym podejściem do reguł i praktyk. Tylko wtedy można wykorzystać możliwości języka C do tworzenia efektywnych systemów. W tym celu profesjonalny programista C musi tworzyć kod na bardzo wysokim poziomie.

To książka przeznaczona dla programistów, którzy chcą stać się ekspertami języka C. Przedstawia zasady pracy z dyrektywami preprocesora, makrami, kompilacją warunkową i ze wskaźnikami. Omawia ważne aspekty projektowania algorytmów, funkcji i struktur. Sporo miejsca poświęcono tu kwestii uzyskiwania maksimum wydajności z aplikacji działających w środowisku o ograniczonych zasobach. Starannie opisano, jak C współpracuje z systemem Unix, w jaki sposób zaimplementowano reguły zorientowane obiektowo w języku C, a także jak wykorzystać wieloprocesowość. To świetny materiał bazowy do samodzielnego badania, zadawania pytań i eksperymentowania z kodem.

W książce między innymi:

  • zaawansowane elementy języka C
  • struktury pamięci i proces kompilacji
  • programowanie zorientowane obiektowo w proceduralnym kodzie C
  • tworzenie kodu na niskim poziomie
  • współbieżność, wielowątkowość i integracja z innymi językami programowania
  • testy jednostkowe i debugowanie oraz komunikacja międzyprocesowa

Programowanie w C: przejdź na najwyższy poziom!

Spis treści


O autorze 11

O recenzentach technicznych 13

Wprowadzenie 15

Rozdział 1. Funkcje podstawowe 23

  • Dyrektywy preprocesora 25
    • Makra 26
    • Kompilacja warunkowa 39
  • Wskaźniki zmiennych 42
    • Składnia 43
    • Operacje arytmetyczne na wskaźnikach zmiennych 45
    • Wskaźniki ogólne 48
    • Wielkość wskaźnika 51
    • Zapomniany wskaźnik 51
  • Wybrane informacje szczegółowe dotyczące funkcji 54
    • Anatomia funkcji 54
    • Waga projektu 55
    • Zarządzanie stosem 55
    • Przekazywanie przez wartość kontra przekazywanie przez referencję 56
  • Wskaźniki funkcji 59
  • Struktury 61
    • Dlaczego struktura? 62
    • Dlaczego typ zdefiniowany przez użytkownika? 62
    • Jakie możliwości oferuje struktura? 63
    • Układ pamięci 64
    • Struktury zagnieżdżone 68
    • Wskaźniki struktur 69
  • Podsumowanie 70

Rozdział 2. Od kodu źródłowego do pliku binarnego 73

  • Proces kompilacji 74
    • Kompilacja projektu w języku C 76
    • Etap 1. Uruchomienie preprocesora 83
    • Etap 2. Kompilacja 84
    • Etap 3. Uruchomienie asemblera 87
    • Etap 4. Linkowanie 90
  • Preprocesor 93
  • Kompilator 97
    • Drzewo składniowe 98
  • Asembler 100
  • Linker 101
    • Jak działa linker? 102
    • Można oszukać linkera! 110
    • Dekorowanie nazw C++ 114
  • Podsumowanie 116

Rozdział 3. Pliki obiektowe 117

  • Interfejs binarny aplikacji 118
  • Formaty plików obiektowych 120
  • Relokowane pliki obiektowe 121
  • Wykonywalne pliki obiektowe 126
  • Biblioteki statyczne 130
  • Biblioteki dynamiczne 138
    • Ręczne wczytywanie bibliotek współdzielonych 143
  • Podsumowanie 145

Rozdział 4. Struktura pamięci procesu 147

  • Układ pamięci procesu 148
  • Określanie struktury pamięci 149
  • Analiza statycznego układu pamięci 150
    • Segment BSS 152
    • Segment data 154
    • Segment text 158
  • Analiza dynamicznego układu pamięci 160
    • Mapowanie pamięci 161
    • Segment stack 165
    • Segment sterty 167
  • Podsumowanie 170

Rozdział 5. Stos i sterta 173

  • Stos 174
    • Analizowanie stosu 175
    • Kwestie związane z używaniem pamięci stosu 182
  • Sterta 185
    • Alokacja i zwalnianie pamięci na stercie 187
    • Reguły dotyczące pamięci sterty 196
  • Zarządzanie pamięcią w ograniczonym środowisku 199
    • Środowiska o ograniczonej ilości pamięci 200
    • Środowisko charakteryzujące się większą wydajnością działania 202
  • Podsumowanie 208

Rozdział 6. Programowanie zorientowane obiektowo i hermetyzacja 211

  • Myślenie w sposób zorientowany obiektowo 214
    • Koncepcje myślowe 215
    • Mapowanie idei w głowie i modele obiektowe 216
    • Obiekty nie znajdują się w kodzie 218
    • Atrybuty obiektu 219
    • Domena 220
    • Relacje między obiektami 221
    • Operacje zorientowane obiektowo 222
    • Obiekt ma zdefiniowane zachowanie 224
  • Dlaczego język C nie jest zorientowany obiektowo? 225
  • Hermetyzacja 226
    • Hermetyzacja atrybutu 226
    • Hermetyzacja zachowania 229
    • Ukrywanie informacji 239
  • Podsumowanie 246

Rozdział 7. Kompozycja i agregacja 247

  • Związki między klasami 247
  • Obiekt kontra klasa 248
  • Kompozycja 250
  • Agregacja 256
  • Podsumowanie 263

Rozdział 8. Dziedziczenie i polimorfizm 265

  • Dziedziczenie 266
    • Natura dziedziczenia 267
  • Polimorfizm 281
    • Czym jest polimorfizm? 281
    • Do czego jest potrzebny polimorfizm? 284
    • Jak w języku C zaimplementować zachowanie polimorficzne? 285
  • Podsumowanie 292

Rozdział 9. Abstrakcja i programowanie zorientowane obiektowo w C++ 293

  • Abstrakcja 294
  • Zorientowane obiektowo konstrukcje w C++ 297
    • Hermetyzacja 298
    • Dziedziczenie 301
    • Polimorfizm 306
    • Klasa abstrakcyjna 309
  • Podsumowanie 311

Rozdział 10. UNIX - historia i architektura 313

  • Historia systemu UNIX 314
    • Systemy operacyjne Multics i UNIX 314
    • Języki BCPL i B 316
    • Droga do powstania języka C 317
  • Architektura systemu UNIX 318
    • Filozofia systemu UNIX 319
    • Warstwy systemu UNIX 320
  • Interfejs powłoki dla aplikacji użytkownika 323
  • Interfejs jądra do warstwy powłoki 327
  • Jądro 333
  • Sprzęt 337
  • Podsumowanie 339

Rozdział 11. Jądro i wywołania systemowe 341

  • Wywołania systemowe 342
    • Wywołania systemowe pod mikroskopem 342
    • Pominięcie standardu C - bezpośrednie wykonanie wywołania systemowego 344
    • Wewnątrz funkcji wywołania systemowego 346
    • Dodanie nowego wywołania systemowego do systemu Linux 348
  • Jądro systemu UNIX 361
    • Jądro monolityczne kontra mikrojądro 362
    • Linux 364
    • Moduły jądra 364
  • Podsumowanie 370

Rozdział 12. Najnowsza wersja C 371

  • C11 372
  • Określenie obsługiwanej wersji standardu języka C 372
  • Usunięcie funkcji gets() 374
  • Zmiany wprowadzone w funkcji fopen() 374
  • Funkcje sprawdzające granice bufora 376
  • Funkcja niekończąca działania 377
  • Makra typu generycznego 378
  • Unicode 378
  • Unie i struktury anonimowe 384
  • Wielowątkowość 386
  • Słowo o standardzie C18 386
  • Podsumowanie 386

Rozdział 13. Współbieżność 389

  • Wprowadzenie do współbieżności 390
  • Równoległość 391
  • Współbieżność 392
  • Jednostka zarządcy zadań 393
  • Procesy i wątki 395
  • Ograniczenie typu "zachodzi wcześniej" 396
  • Kiedy należy używać współbieżności 398
  • Stan współdzielony 405
  • Podsumowanie 410

Rozdział 14. Synchronizacja 411

  • Problemy związane ze współbieżnością 412
  • Wrodzone problemy ze współbieżnością 413
  • Problemy pojawiające się po synchronizacji 423
  • Techniki synchronizacji 424
    • Techniki busy-waiting i spinlock 425
    • Mechanizm uśpienia-powiadomienia 428
    • Semafory i muteksy 431
    • Wiele jednostek procesora 436
  • Blokada typu spinlock 441
    • Zmienne warunkowe 442
  • Współbieżność w standardzie POSIX 444
    • Obsługa współbieżności przez jądro 445
  • Wieloprocesowość 447
  • Wielowątkowość 450
  • Podsumowanie 451

Rozdział 15. Wykonywanie wątków 453

  • Wątki 454
  • Wątki POSIX 457
  • Tworzenie wątków POSIX 458
  • Przykład stanu wyścigu 463
  • Przykład wyścigu danych 471
  • Podsumowanie 474

Rozdział 16. Synchronizacja wątków 477

  • Kontrola współbieżności w standardzie POSIX 478
    • Muteksy POSIX 478
    • Zmienne warunkowe POSIX 481
    • Bariery POSIX 485
    • Semafory POSIX 487
  • Wątki POSIX i pamięć 495
    • Pamięć stosu 495
    • Pamięć sterty 500
    • Widoczność pamięci 504
  • Podsumowanie 506

Rozdział 17. Wykonywanie procesów 507

  • API wykonywania procesu 507
    • Tworzenie procesu 510
    • Wykonywanie procesu 515
    • Porównanie tworzenia procesu i wykonywania procesu 517
  • Procedura wykonania procesu 518
  • Stan współdzielony 519
    • Techniki współdzielenia 520
    • Pamięć współdzielona w standardzie POSIX 522
    • System plików 531
  • Wielowątkowość kontra wieloprocesowość 534
    • Wielowątkowość 534
    • Wieloprocesowość w pojedynczym komputerze 535
    • Wieloprocesowość rozproszona 535
  • Podsumowanie 536

Rozdział 18. Synchronizacja procesów 537

  • Kontrola współbieżności w pojedynczym hoście 538
  • Nazwane semafory POSIX 539
  • Nazwane muteksy 543
    • Przykład pierwszy 543
    • Przykład drugi 547
  • Nazwane zmienne warunkowe 556
    • Etap 1. Klasa pamięci współdzielonej 557
    • Etap 2. Klasa współdzielonego licznika w postaci 32-bitowej liczby całkowitej 560
    • Etap 3. Klasa muteksu współdzielonego 562
    • Etap 4. Klasa współdzielonej zmiennej warunkowej 565
    • Etap 5. Logika funkcji main() 568
  • Kontrola współbieżności rozproszonej 572
  • Podsumowanie 574

Rozdział 19. Gniazda i IPC w pojedynczym hoście 577

  • Techniki IPC 578
  • Protokół komunikacyjny 580
    • Cechy charakterystyczne protokołu 582
    • Sekwencyjność 584
  • Komunikacja w pojedynczym hoście 584
    • Deskryptory plików 585
    • Sygnały POSIX 585
    • Potoki POSIX 589
    • Kolejka komunikatów POSIX 592
    • Gniazda domeny systemu UNIX 594
  • Wprowadzenie do programowania gniazd 595
    • Sieci komputerowe 595
    • Na czym polega programowanie gniazda? 607
  • Podsumowanie 614

Rozdział 20. Programowanie oparte na gniazdach 615

  • Podsumowanie informacji o programowaniu gniazd 616
  • Projekt kalkulatora 618
    • Hierarchia kodu źródłowego 619
    • Zbudowanie projektu 623
    • Uruchomienie projektu 623
    • Protokół aplikacji 624
    • Biblioteka serializacji i deserializacji 627
    • Usługa kalkulatora 632
  • Gniazda domeny systemu UNIX 634
    • Serwer strumienia UDS 634
    • Klient strumienia UDS 641
    • Serwer datagramu nasłuchujący na gnieździe UDS 644
    • Klient datagramu używającego gniazda UDS 648
  • Gniazda sieciowe 650
    • Serwer TCP 650
    • Klient TCP 652
    • Serwer UDP 653
    • Klient UDP 654
  • Podsumowanie 655

Rozdział 21. Integracja z innymi językami programowania 657

  • Dlaczego integracja w ogóle jest możliwa? 658
  • Pobranie niezbędnych materiałów 659
  • Biblioteka stosu 660
  • Integracja z C++ 666
    • Dekorowanie nazw w C++ 667
    • Kod C++ 669
  • Integracja z Javą 673
    • Utworzenie kodu w Javie 674
    • Przygotowanie części natywnej 679
  • Integracja z Pythonem 686
  • Integracja z Go 689
  • Podsumowanie 692

Rozdział 22. Testy jednostkowe i debugowanie 695

  • Testowanie oprogramowania 696
    • Poziomy testowania 697
  • Testy jednostkowe 698
    • Dublery używane podczas testów 706
  • Testowanie komponentu 707
  • Biblioteki testowania kodu w C 709
    • Framework CMocka 710
    • Google Test 718
  • Debugowanie 722
    • Kategorie błędów 724
    • Debugery 724
    • Narzędzia profilowania pamięci 726
    • Debugery wątków 728
    • Narzędzia do profilowania wydajności działania 729
  • Podsumowanie 730

Rozdział 23. Systemy kompilacji 731

  • Czym jest system kompilacji? 732
  • Make 733
  • CMake - to nie jest system kompilacji! 740
  • Ninja 745
  • Bazel 747
  • Porównanie systemów kompilacji 750
  • Podsumowanie 750
  • Epilog 751
Kategoria: Programowanie
Zabezpieczenie: Watermark
Watermark
Watermarkowanie polega na znakowaniu plików wewnątrz treści, dzięki czemu możliwe jest rozpoznanie unikatowej licencji transakcyjnej Użytkownika. E-książki zabezpieczone watermarkiem można odczytywać na wszystkich urządzeniach odtwarzających wybrany format (czytniki, tablety, smartfony). Nie ma również ograniczeń liczby licencji oraz istnieje możliwość swobodnego przenoszenia plików między urządzeniami. Pliki z watermarkiem są kompatybilne z popularnymi programami do odczytywania ebooków, jak np. Calibre oraz aplikacjami na urządzenia mobilne na takie platformy jak iOS oraz Android.
ISBN: 978-83-283-7467-6
Rozmiar pliku: 4,7 MB

BESTSELLERY

Kategorie: