maximmenshikov / cpp_world_map

C++ world map

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Карта мира программирования C/C++

Привет, это карта мира программирования С/С++. Под "миром" понимается все, с чем может и будет сталкиваться программист на этих языках программирования. Некоторые понятия пропустим (случайно или не очень), но в целом хотелось бы максимально систематизировать существующие знания в описанных доменах.

  • Языки программирования
    • C/C++, основные вводимые темы (если считать C поднабором C++, что не совсем точно):
      • C
        • Переменные
        • Функции
        • Массивы
        • Структуры
        • Указатели
      • C++
        • Классы
        • Шаблоны
        • Лямбда-функции
        • Ссылки
        • Полиморфизм и перегрузка функций
        • Пространства имен
    • Ассемблер.
    • Языки с влиянием C/C++:
      • Rust
      • C#
      • Java
  • Инфраструктура разработки
    • Компиляторы
      • gcc/g++
      • Clang (Часть LLVM)
      • Visual C++
    • Системы сборки
      • Make
      • Automake
      • CMake
      • Meson
      • MSBuild
      • Низкоуровневые системы сборки:
        • Ninja
    • Отладчики
      • GDB
      • LLDB (из LLVM/Clang)
      • Реверсивные отладчики:
        • RR
        • UndoDB
    • Анализаторы
      • Статический анализ - анализ исходного кода без запуска.
      • Динамический анализ - анализ уже скомпилированной программы.
      • Верификаторы - доказательство корректности программ.
    • Системы контроля версий
      • git, основные команды:
        • git clone
        • git checkout
        • git pull
        • git commit
        • git push
      • SVN
      • Mercurial
    • Непрерывная интеграция
      • GitHub Actions
      • GitLab
      • Jenkins
    • Среды разработки
      • Visual Studio
      • Visual Studio Code
      • CLion
  • Операционные системы
    • Контексты исполнения программ:
      • Ядро ОС
        • Модули ядра
        • Драйверы устройств
      • Пользовательское пространство
        • Системные приложения
        • Пользовательские приложения
      • Методы взаимодействия программ и/или ядра
        • Системные вызовы
        • ioctl
        • Netlink
        • Сигналы
        • Семафоры для разграничения доступа к общим ресурсам
        • Очереди сообщений
        • Сокеты
        • Пайпы
        • Общая память
    • Файловые системы
      • Основные файловые систеы
        • EXT
        • NTFS
        • EXFAT
      • Специализированные файловые системы:
        • procfs
        • devfs
        • sysfs
        • tmpfs
        • sshfs
      • Понятие "точка монтирования":
        • Само понятие.
        • Методы монтирования файловых систем.
    • Методы разграничения прав доступа:
      • Контрольные списки доступа (ACL).
      • AppArmor, SELinux.
    • Вывод на экран.
      • X-сервер.
      • X-форвардинг.
  • Сетевые технологии.
    • Что внутри.
      • OSI.
      • Layering в ядре.
      • Разгрузка ЦП с помощью железа.
    • Как это выглядит в юзерленде.
      • Сокеты.
      • TCP/UDP, HTTP.
      • poll/epoll.
    • Сервисы.
      • Веб-серверы.
        • Nginx.
        • Apache.
      • VPN.
        • ssh (ну ок).
        • L2TP/IPSec.
        • OpenVPN.
        • Wireguard.
  • Низкий уровень.
    • Архитектуры ЦП.
      • x86_64, x86.
      • arm64, arm.
      • mips, mipsel, mips64, mipsel64.
    • Виды скомпилированных файлов.
      • Исполняемые файлы.
      • Библиотеки.
      • Объектные файлы.
    • Форматы исполняемых файлов.
      • PE (Windows).
      • ELF (Linux).
        • DWARF.
      • Mach-O (Mac).
    • Устройство памяти
      • Виртуальная память и MMU.
      • Загрузка исполняемых файлов.
      • Общая память.
      • Как работают указатели.
      • Устройство аллокаторов памяти.
      • Поиск утечек памяи.
    • Реверс-инжиниринг
      • Архитектура Фон Неймана.
      • Дизассемблеры и декомпиляторы.

About

C++ world map

License:MIT License


Languages

Language:Makefile 100.0%