Ответ
Помимо стандартной библиотеки (STL), я активно использовал следующие библиотеки и фреймворки:
1. Boost: Это практически "расширенная стандартная библиотека". Я применял различные компоненты:
Boost.Asioдля асинхронного сетевого и низкоуровневого I/O программирования.Boost.Filesystem(теперь в std::filesystem) для кроссплатформенной работы с путями и файловой системой.Boost.Spiritдля написания парсеров прямо в C++ коде.-
Boost.Optional,Boost.Variant(прототипыstd::optional,std::variant).// Пример: асинхронный TCP-клиент с Boost.Asio #include <boost/asio.hpp> using boost::asio::ip::tcp; void async_connect(tcp::socket& socket, const std::string& host) { tcp::resolver resolver(socket.get_executor()); auto endpoints = resolver.resolve(host, "http"); boost::asio::async_connect(socket, endpoints, [](boost::system::error_code ec, tcp::endpoint) { if (!ec) std::cout << "Connected!n"; }); }
2. Фреймворки для GUI: Для разработки десктопных приложений работал с Qt. Использовал его сигналы-слоты, виджеты, модель представления для QTableView, а также QML для декларативного UI.
3. Специализированные библиотеки:
- OpenSSL/libcrypto для реализации криптографических протоколов (TLS, хэши, шифрование).
- Protocol Buffers (protobuf) для сериализации структурированных данных и межпроцессного взаимодействия (RPC).
- gRPC как высокопроизводительный RPC-фреймворк поверх HTTP/2.
- SQLite как встраиваемую СУБД для локального хранения данных.
4. Инструменты для сборки и тестирования: CMake для управления сборкой, Google Test для модульного тестирования, Conan как менеджер пакетов C++.
Ответ 18+ 🔞
Вот, бля, помимо стандартной библиотеки, с которой всё понятно, я ещё ворочал кучу других библиотек и фреймворков. Овердохуища всего, ёпта.
1. Boost. Это ж, бля, как вторая стандартная библиотека, только с перцем. Я там понатыкал всего:
Boost.Asio— когда надо было сетевую асинхронную хуйню городить, чтобы всё летало.Boost.Filesystem(он теперь в стандарте, кстати) — чтобы не париться с путями на разных операционках.Boost.Spirit— это вообще отдельная песня, когда парсеры прямо в коде пишешь, мозги выносит, но мощно.-
Boost.OptionalсBoost.Variant— это типа прототипы дляstd::optionalиstd::variant, пока их в стандарте не было.// Вот, смотри, как я асинхронно коннектился через Asio #include <boost/asio.hpp> using boost::asio::ip::tcp; void async_connect(tcp::socket& socket, const std::string& host) { tcp::resolver resolver(socket.get_executor()); auto endpoints = resolver.resolve(host, "http"); boost::asio::async_connect(socket, endpoints, [](boost::system::error_code ec, tcp::endpoint) { if (!ec) std::cout << "Connected!n"; }); }
2. Фреймворки под GUI. Тут, понятное дело, Qt рулит. Сигналы-слоты — просто пиздец как удобно, виджеты, QTableView с его моделью... А ещё QML — это когда интерфейс почти как на JavaScript пишешь, красота.
3. Спец-библиотеки, без которых никуда:
- OpenSSL/libcrypto — когда надо всё зашифровать так, чтобы мамка не узнала. TLS там, хэши, шифрование — вся эта криптографическая муть.
- Protocol Buffers (protobuf) — сериализация данных, чтоб их по сети гонять или на диск складывать. Удобно, ёпта.
- gRPC — это уже поверх protobuf, чтоб удалённые вызовы делать. Быстро, на HTTP/2.
- SQLite — лёгкая база данных прямо в процессе. Для локального хранилища — то, что надо.
4. Инструменты для сборки и тестирования. Ну, CMake — без него вообще нихуя не соберёшь сейчас. Google Test — чтобы тесты писать и не бздеть, что всё развалится. Conan — как менеджер пакетов, чтоб зависимости не вручную таскать. В общем, стандартный такой набор, без которого в серьёзном проекте делать нехуй.