Экстремальный Cи. Параллелизм, ООП и продвинутые возможности - Камран Амини - E-Book

Экстремальный Cи. Параллелизм, ООП и продвинутые возможности E-Book

Kamran Amini

0,0
10,99 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.
Mehr erfahren.
Beschreibung

Для того чтобы овладеть языком C, знания одного лишь синтаксиса недостаточно. Специалист в области разработки должен обладать четким, научным пониманием принципов и методик. Книга «Экстремальный Cи» научит вас пользоваться продвинутыми низкоуровневыми возможностями языка для создания эффективных систем, чтобы вы смогли стать экспертом в программировании на Cи. Вы освоите директивы препроцессора, макрокоманды, условную компиляцию, указатели и многое другое. Вы по новому взглянете на алгоритмы, функции и структуры. Узнаете, как выжимать максимум производительности из приложений с ограниченными ресурсами. В XXI веке Си остается ключевым языком в машиностроении, авиации, космонавтике и многих других отраслях. Вы узнаете как язык работает с Unix, как реализовывать принципы объектно-ориентированного программирования и разберетесь с многопроцессной обработкой. Камран Амини научит вас думать, сомневаться и экспериментировать. Эта книга просто необходима для всех, кто хочет поднять знания Cи на новый уровень.

Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:

EPUB
MOBI

Seitenzahl: 964

Veröffentlichungsjahr: 2023

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Камран Амини
Экстремальный Cи. Параллелизм, ООП и продвинутые возможности
2021

Переводчики О. Сивченко, С. Черников

Литературный редактор Н. Хлебина

Художник В. Мостипан

Корректоры О. Андриевич, Е. Павлович

Камран Амини

Экстремальный Cи. Параллелизм, ООП и продвинутые возможности. — СПб.: Питер, 2021.

ISBN 978-5-4461-1694-2

© ООО Издательство "Питер", 2021

Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.

Оглавление

Об авторе
О научных редакторах
Введение
Для кого эта книга
Структура издания
Условия, при соблюдении которых книга будет максимально полезной
Скачивание файлов с примерами кода
Условные обозначения
От издательства
1. Основные возможности языка
Директивы препроцессора
Указатели на переменные
Общая информация о функциях
Указатели на функции
Структуры
Резюме
2. Компиляция и компоновка
Процесс компиляции
Препроцессор
Компилятор
Ассемблер
Компоновщик
Резюме
3. Объектные файлы
Двоичный интерфейс приложений
Форматы объектных файлов
Переносимые объектные файлы
Исполняемые объектные файлы
Статические библиотеки
Динамические библиотеки
Резюме
4. Структура памяти процесса
Внутреннее устройство памяти процесса
Исследование структуры памяти
Исследование статической схемы размещения в памяти
Исследование динамической схемы размещения в памяти
Резюме
5. Стек и куча
Стек
Куча
Управление памятью в средах с ограниченными ресурсами
Резюме
6. ООП и инкапсуляция
Объектно-ориентированное мышление
Почему язык C не является объектно-ориентированным
Инкапсуляция
Резюме
7. Композиция и агрегация
Отношения между классами
Объекты и классы
Композиция
Агрегация
Резюме
8. Наследование и полиморфизм
Наследование
Полиморфизм
Резюме
9. Абстракция данных и ООП в C++
Абстракция данных
Объектно-ориентированные концепции в C++
Резюме
10. История и архитектура Unix
История Unix
Архитектура Unix
Интерфейс командной оболочки для пользовательских приложений
Интерфейс ядра для кольца командной оболочки
Ядро
Аппаратное обеспечение
Резюме
11. Системные вызовы и ядра
Системные вызовы
Ядра Unix
Резюме
12. Последние нововведения в C
C11
Определение поддерживаемой версии стандарта C
Удаление функции gets
Изменения в функции fopen
Функции с проверкой диапазона
Невозвращаемые функции
Макрос для обобщенных типов
Unicode
Анонимные структуры и анонимные объединения
Многопоточность
Немного о C18
Резюме
13. Конкурентность
Введение в конкурентность
Параллелизм
Конкурентность
Планировщик заданий
Процессы и потоки
Порядок выполнения инструкций
Когда следует использовать конкурентность
Разделяемые состояния
Резюме
14. Синхронизация
Проблемы с конкурентностью
Естественные проблемы с конкурентностью
Постсинхронизационные проблемы
Методы синхронизации
Циклические блокировки
Конкурентность в POSIX
Многопроцессность
Многопоточность
Резюме
15. Многопоточное выполнение
Потоки
POSIX-потоки
Порождение POSIX-потоков
Пример состояния гонки
Пример гонки данных
Резюме
16. Синхронизация потоков
Управление конкурентностью в POSIX
POSIX-потоки и память
Резюме
17. Процессы
API для выполнения процессов
Этапы выполнения процесса
Разделяемые состояния
Сравнение многопоточности и многопроцессности
Резюме
18. Синхронизация процессов
Локальное управление конкурентностью
Именованные POSIX-семафоры
Именованные мьютексы
Именованные условные переменные
Распределенное управление конкурентностью
Резюме
19. Локальные сокеты и IPC
Методы межпроцессного взаимодействия
Коммуникационные протоколы
Взаимодействие в рамках одного компьютера
Введение в программирование сокетов
Резюме
20. Программирование сокетов
Краткий обзор программирования сокетов
Проект «Калькулятор»
Сокеты домена Unix
Сетевые сокеты
Резюме
21. Интеграция с другими языками
Что делает интеграцию возможной
Получение необходимых материалов
Библиотека для работы со стеком
Интеграция с C++
Интеграция с Java
Интеграция с Python
Интеграция с Go
Резюме
22. Модульное тестирование и отладка
Тестирование программного обеспечения
Модульное тестирование
Компонентное тестирование
Библиотеки тестирования для C
Отладка
Резюме
23. Системы сборки
Что такое система сборки
Make
CMake — не система сборки!
Ninja
Bazel
Сравнение систем сборки
Резюме
Послесловие

Об авторе

Камран Амини специализируется на ядре и встроенных системах. Он работал инженером, архитектором, консультантом и техническим директором во множестве известных иранских компаний. В 2017 году переехал в Европу, где трудился старшим архитектором и инженером в таких солидных компаниях, как Jeppesen, Adecco, TomTom и ActiveVideo Networks. Во время своего пребывания в Амстердаме Камран и написал эту книгу. Его больше всего интересуют следующие темы: теория алгоритмов, распределенные системы, машинное обучение, теория информации и квантовые вычисления.

Хочу поблагодарить маму Эхтирам, которая посвятила жизнь воспитанию меня и моего брата Ашкана. Она всегда нас поддерживает.

Хочу также поблагодарить мою прекрасную и любимую жену Афсанех, которая поддерживала меня на каждом этапе, особенно во время работы над этой книгой. Без ее терпения и поддержки я бы никогда не справился.

О научных редакторах

Алиакбар Аббаси — разработчик ПО с более чем восьмилетним опытом использования различных технологий и языков программирования. Специалист в ООП, C/C++ и Python. Любит читать техническую литературу и расширять свой кругозор в области программирования. В настоящее время проживает в Амстердаме и работает старшим программистом в компании TomTom.

Рохит Талвалкар — очень опытный специалист в программировании на языках C, C++ и Java. На его счету разработка приложений, драйверов и сервисов для проприетарной версии RTOS (Real Time OS), Windows, устройств на основе Windows Mobile и платформы Android.

Рохит получил диплом бакалавра технических наук в индийском Технологическом институте города Мумбаи, а также диплом магистра СS. В настоящее время занимает должность ведущего разработчика приложений в сфере смешанной реальности. Рохит успел поработать в Motorola и BlackBerry и сейчас является сотрудником компании Magic Leap, которая выпускает очки смешанной реальности и специализируется на пространственных вычислениях. В свое время редактировал книгу C++ for the Impatient Брайана Оверленда.

Хочу поблагодарить доктора Кловиса Тондо, который научил меня C, C++, Java и многому другому.