Ekstremalny kod w języku C. Współbieżność i programowanie zorientowane obiektowo
- Autor:
- Kamran Amini
- Wydawnictwo:
- Helion
- Ocena:
- 3.5/6 Opinie: 2
- Stron:
- 752
- Druk:
- oprawa twarda
- Dostępne formaty:
-
PDFePubMobi
Opis książki: Ekstremalny kod w języku C. Współbieżność i programowanie zorientowane obiektowo
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!
Wybrane bestsellery
-
Push the limits of what C - and you - can do, with this high-intensity guide to the most advanced capabilities of C
-
Po przyswojeniu zagadnień związanych z językiem C# i aplikacjami konsoli dowiesz się, jak tworzyć praktyczne aplikacje i usługi z wykorzystaniem biblioteki ASP.NET Core, a także wzorzec MVC i technologię Blazor. Zapoznasz się z metodami stosowania wielozadaniowości do poprawy wydajności i skalowa...
C# 10 i .NET 6 dla programistów aplikacji wieloplatformowych. Twórz aplikacje, witryny WWW oraz serwisy sieciowe za pomocą ASP.NET Core 6, Blazor i EF Core 6 w Visual Studio 2022 i Visual Studio Code. Wydanie VI C# 10 i .NET 6 dla programistów aplikacji wieloplatformowych. Twórz aplikacje, witryny WWW oraz serwisy sieciowe za pomocą ASP.NET Core 6, Blazor i EF Core 6 w Visual Studio 2022 i Visual Studio Code. Wydanie VI
(0,00 zł najniższa cena z 30 dni)111.30 zł
159.00 zł(-30%) -
Ta książka jest praktycznym i wyczerpującym przewodnikiem, dzięki któremu w pełni wykorzystasz możliwości Kali Linux. Opisano w niej wiele interesujących zagadnień związanych z przeprowadzaniem testów penetracyjnych. Dowiesz się, jak zbudować nowoczesne środowisko testowe z użyciem kontenerów Doc...(0,00 zł najniższa cena z 30 dni)
69.30 zł
99.00 zł(-30%) -
Oto intuicyjny przewodnik dla średnio zaawansowanych programistów Pythona, pomyślany tak, by przyswajać zasady programowania zorientowanego obiektowo podczas praktycznych ćwiczeń. Dowiesz się, jakie problemy wiążą się z zastosowaniem podejścia proceduralnego i jak dzięki podejściu obiektowemu pis...
Python zorientowany obiektowo. Programowanie gier i graficznych interfejsów użytkownika Python zorientowany obiektowo. Programowanie gier i graficznych interfejsów użytkownika
(0,00 zł najniższa cena z 30 dni)62.30 zł
89.00 zł(-30%) -
To drugie, zaktualizowane i poprawione wydanie bestsellerowego podręcznika Programowania w Pythonie pozwoli Ci błyskawicznie zacząć tworzyć kod, który działa! Zaczniesz od zrozumienia podstawowych koncepcji programistycznych, następnie nauczysz się zapewniać programom interaktywność i wykształcis...(0,00 zł najniższa cena z 30 dni)
69.30 zł
99.00 zł(-30%) -
Dzięki tej książce nauczysz się przekształcać suche dane liczbowe w pełną empatii narrację! Aby spełniły one swoje zadanie, ktoś musi przedstawić zawarte w nich informacje w postaci opowieści. W tej publikacji wyczerpująco i praktycznie opisano przebieg tego procesu. Jej lektura sprawi, że rozwin...
Opowieści ukryte w danych. Wyjaśnij dane i wywołaj działania za pomocą narracji Opowieści ukryte w danych. Wyjaśnij dane i wywołaj działania za pomocą narracji
(0,00 zł najniższa cena z 30 dni)20.90 zł
67.00 zł(-69%) -
To książka przeznaczona dla programistów, którzy chcą zacząć pracę z Gitem i GitHubem. W każdym rozdziale zawarto wyłącznie przydatne informacje, a te uzupełniono licznymi ćwiczeniami. Dzięki temu równocześnie możesz się uczyć Gita i nabierać sprawności w posługiwaniu się tym systemem. Przewodnik...
Git i GitHub. Kontrola wersji, zarządzanie projektami i zasady pracy zespołowej Git i GitHub. Kontrola wersji, zarządzanie projektami i zasady pracy zespołowej
(0,00 zł najniższa cena z 30 dni)48.30 zł
69.00 zł(-30%) -
Dzięki tej książce przekonasz się, jak wspaniałą przygodą jest programowanie i jak łatwo ją zacząć! Poznasz podstawy Pythona, dowiesz się, jak pisać i formatować kod, a także szybko nauczysz się uruchamiać swoje programy. Instrukcje sterujące, operatory, typy danych, funkcje, klasy i moduły nie b...
Python 3. Projekty dla początkujących i pasjonatów Python 3. Projekty dla początkujących i pasjonatów
(0,00 zł najniższa cena z 30 dni)41.93 zł
59.90 zł(-30%) -
Ta książka jest przystępnym wprowadzeniem do kryptografii i bibliotek kryptograficznych Pythona. Omówiono tu podstawowe koncepcje z tej dziedziny, najważniejsze algorytmy i niezbędny zakres podstaw matematycznych: liczby pierwsze, teorię grup czy generatory liczb pseudolosowych. Wyjaśniono, czym ...
Algorytmy kryptograficzne w Pythonie. Wprowadzenie Algorytmy kryptograficzne w Pythonie. Wprowadzenie
(0,00 zł najniższa cena z 30 dni)48.30 zł
69.00 zł(-30%) -
Dave Thomas i Andy Hunt napisali pierwsze wydanie tej wpływowej książki w 1999 roku, aby pomóc swoim klientom tworzyć lepsze oprogramowanie i na nowo odnaleźć radość z kodowania. Nauki płynące z tamtego wydania pomogły wielu pokoleniom programistów zbadać istotę rozwoju oprogramowania, niezależni...
Pragmatyczny programista. Od czeladnika do mistrza. Wydanie II Pragmatyczny programista. Od czeladnika do mistrza. Wydanie II
(0,00 zł najniższa cena z 30 dni)53.90 zł
77.00 zł(-30%)
O autorze książki
1 Kamran AminiKamran Amini specjalizuje się w programowaniu jądra systemu operacyjnego i tworzeniu rozwiązań osadzonych. Pracował dla wielu doskonale znanych firm irańskich. Pasjonuje się teorią obliczeń, systemami rozproszonymi, uczeniem maszynowym i informatyką kwantową. Interesuje się również powstaniem wszechświata, geometrią czarnych dziur, kwantową teorią pola i teorią strun.
Ebooka przeczytasz na:
-
czytnikach Inkbook, Kindle, Pocketbook i innych
-
systemach Windows, MacOS i innych
-
systemach Windows, Android, iOS, HarmonyOS
-
na dowolnych urządzeniach i aplikacjach obsługujących formaty: PDF, EPub, Mobi
Masz pytania? Zajrzyj do zakładki Pomoc »
Audiobooka posłuchasz:
-
w aplikacji Ebookpoint na Android, iOS, HarmonyOs
-
na systemach Windows, MacOS i innych
-
na dowolonych urządzeniach i aplikacjach obsługujących format MP3 (pliki spakowane w ZIP)
Masz pytania? Zajrzyj do zakładki Pomoc »
Kurs Video zobaczysz:
-
w aplikacji Ebookpoint na Android, iOS, HarmonyOs
-
na systemach Windows, MacOS i innych
-
na dowolonych urządzeniach i aplikacjach obsługujących format MP4 (pliki spakowane w ZIP)
Szczegóły książki
- Tytuł oryginału:
- Extreme C: Taking you to the limit in Concurrency, OOP, and the most advanced capabilities of C
- Tłumaczenie:
- Robert Górczyński
- ISBN Książki drukowanej:
- 978-83-283-7459-1, 9788328374591
- Data wydania książki drukowanej:
- 2021-04-20
- ISBN Ebooka:
- 978-83-283-7467-6, 9788328374676
- Data wydania ebooka:
-
2021-04-20
Data wydania ebooka często jest dniem wprowadzenia tytułu do sprzedaży i może nie być równoznaczna z datą wydania książki papierowej. Dodatkowe informacje możesz znaleźć w darmowym fragmencie. Jeśli masz wątpliwości skontaktuj się z nami sklep@helion.pl.
- Format:
- 164x239
- Numer z katalogu:
- 137673
- Rozmiar pliku Pdf:
- 6.1MB
- Rozmiar pliku ePub:
- 4.7MB
- Rozmiar pliku Mobi:
- 13.1MB
- Pobierz przykładowy rozdział PDF
- Przykłady na ftp
Ebook zawiera materiały dodatkowe, które możesz pobrać z serwera FTP - link znajdziesz na stronie redakcyjnej.
- Zgłoś erratę
- Kategorie:
Programowanie » C - Programowanie
Spis treści książki
- 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
- 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
- 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
- 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
- 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
- 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
- Związki między klasami 247
- Obiekt kontra klasa 248
- Kompozycja 250
- Agregacja 256
- Podsumowanie 263
- 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
- Abstrakcja 294
- Zorientowane obiektowo konstrukcje w C++ 297
- Hermetyzacja 298
- Dziedziczenie 301
- Polimorfizm 306
- Klasa abstrakcyjna 309
- Podsumowanie 311
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
O autorze 11
O recenzentach technicznych 13
Wprowadzenie 15
Rozdział 1. Funkcje podstawowe 23
Rozdział 2. Od kodu źródłowego do pliku binarnego 73
Rozdział 3. Pliki obiektowe 117
Rozdział 4. Struktura pamięci procesu 147
Rozdział 5. Stos i sterta 173
Rozdział 6. Programowanie zorientowane obiektowo i hermetyzacja 211
Rozdział 7. Kompozycja i agregacja 247
Rozdział 8. Dziedziczenie i polimorfizm 265
Rozdział 9. Abstrakcja i programowanie zorientowane obiektowo w C++ 293
Rozdział 10. UNIX - historia i architektura 313
Rozdział 11. Jądro i wywołania systemowe 341
Rozdział 12. Najnowsza wersja C 371
Rozdział 13. Współbieżność 389
Rozdział 14. Synchronizacja 411
Rozdział 15. Wykonywanie wątków 453
Rozdział 16. Synchronizacja wątków 477
Rozdział 17. Wykonywanie procesów 507
Rozdział 18. Synchronizacja procesów 537
Rozdział 19. Gniazda i IPC w pojedynczym hoście 577
Rozdział 20. Programowanie oparte na gniazdach 615
Rozdział 21. Integracja z innymi językami programowania 657
Rozdział 22. Testy jednostkowe i debugowanie 695
Rozdział 23. Systemy kompilacji 731
Oceny i opinie klientów: Ekstremalny kod w języku C. Współbieżność i programowanie zorientowane obiektowo Kamran Amini (2)
Weryfikacja opinii następuję na podstawie historii zamówień na koncie Użytkownika umieszczającego opinię. Użytkownik mógł otrzymać punkty za opublikowanie opinii uprawniające do uzyskania rabatu w ramach Programu Punktowego.
(1)
(0)
(0)
(0)
(0)
(1)
Data dodania: 2021-05-25 Ocena: 6 Opinia potwierdzona zakupem
Data dodania: 2021-04-29 Ocena: 1 Opinia potwierdzona zakupem
więcej opinii