← Назад к вопросам

Что использовал в C++?

2.3 Middle🔥 211 комментариев
#Опыт работы и проекты#Язык C++

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI29 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Инструменты и технологии в C++

Мой опыт охватывает полный спектр инструментов для разработки на C++, от компиляторов до фреймворков.

Компиляторы и сборка

GCC/G++ — основной компилятор на Linux. Работаю с различными версиями, оптимизирую с флагами -O2, -O3, использую -Wall -Wextra -Werror для строгой проверки кода.

Clang — современный компилятор с лучшими диагностическими сообщениями, использую для анализа статических ошибок (clang-analyzer).

CMake — стандарт для сборки C++ проектов. Использую для кроссплатформенной компиляции, управления зависимостями, тестирования.

cmake_minimum_required(VERSION 3.16)
project(MyBackend)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_executable(server main.cpp src/database.cpp src/network.cpp)
target_link_libraries(server PRIVATE pthread ssl crypto)

Makefile — для быстрой компиляции в процессе разработки, хотя CMake предпочтительнее для больших проектов.

Фреймворки и библиотеки

Boost — индустриальный стандарт расширений C++:

  • boost::asio для сетевого программирования (async I/O)
  • boost::thread и boost::mutex для многопоточности
  • boost::json для работы с JSON
  • boost::regex для регулярных выражений
  • boost::format для форматирования строк

libcurl — HTTP клиент для REST API запросов

OpenSSL — криптография, TLS/SSL для защищённых соединений

RapidJSON — быстрая сериализация/десериализация JSON

Веб-фреймворки

cpp-httplib — лёгкий однофайловый HTTP сервер, удобен для прототипирования

#include "httplib.h"

int main() {
    httplib::Server svr;
    
    svr.Post("/api/users", [](const httplib::Request& req, httplib::Response& res) {
        res.set_content("User created", "text/plain");
    });
    
    svr.listen("0.0.0.0", 8080);
    return 0;
}

Pistache — REST фреймворк с чистым API

Beast — часть Boost для создания асинхронных HTTP/HTTPS серверов

Базы данных

libpq — нативный драйвер для PostgreSQL

libmysqlclient — для MySQL

SQLite3 C API — встроенная БД

ORM: использую SOCI (Simple C++ Object Interface) для абстракции над БД.

Тестирование

GoogleTest (gtest) — современный фреймворк юнит-тестирования

#include <gtest/gtest.h>

TEST(MathTest, Addition) {
    EXPECT_EQ(2 + 2, 4);
}

Catch2 — альтернатива, более простая в использовании

Valgrind — проверка утечек памяти и race conditions

ASAN (Address Sanitizer) — встроенный в компилятор инструмент для обнаружения ошибок памяти

g++ -fsanitize=address -g program.cpp -o program

Системное программирование

pthreads — работа с потоками

epoll/select/kqueue — асинхронный I/O

syslog — логирование на уровне ОС

/proc и /sys — взаимодействие с ядром Linux

Отладка и профилирование

GDB — отладчик для пошагового выполнения

Perf — профилирование кода, анализ hotspots

Valgrind --callgrind — детальный анализ производительности

cppcheck — статический анализ кода

Версионирование и CI/CD

Git — контроль версий

GitHub Actions / GitLab CI — автоматическая сборка и тестирование

Docker — контейнеризация для reproducible builds

Стандарты C++

Работаю с:

  • C++11 — auto, range-based for, lambda, smart pointers
  • C++14 — generic lambda, constexpr improvements
  • C++17 — structured bindings, if constexpr, optional, std::variant
  • C++20 — concepts, ranges, coroutines

Выбор стандарта зависит от проекта и требований поддержки старых систем.

Практический пример: микросервис

Типичный бэкенд-сервис использует:

  • CMake для сборки
  • Boost.Asio для обработки соединений
  • PostgreSQL через libpq
  • RapidJSON для API
  • GoogleTest для тестов
  • GDB/Valgrind для отладки

Это стек позволяет создавать надёжные, быстрые и легко масштабируемые backend системы.

Что использовал в C++? | PrepBro