Ответ
Мой основной стек — это C++ с фокусом на высокопроизводительные и системные приложения. Я работаю с современными стандартами языка (C++17/20), использую компиляторы GCC и Clang под Linux и MSVC под Windows. Для сборки проектов применяю CMake, для отладки — GDB/LLDB, а для анализа производительности и утечек памяти — инструменты вроде Valgrind и perf. Из библиотек активно использую STL, Boost (Asio, Beast, Spirit) и иногда Qt для GUI. В embedded-проектах имел опыт с FreeRTOS и кросс-компиляцией под ARM. Пример типичного CMakeLists.txt для моего проекта:
cmake_minimum_required(VERSION 3.16)
project(HighPerfServer LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Boost 1.70 REQUIRED COMPONENTS system thread)
add_executable(server main.cpp network_handler.cpp)
target_link_libraries(server PRIVATE Boost::boost Boost::system Boost::thread pthread) Ответ 18+ 🔞
А, ну вот, классика жанра! Сидишь такой, пишешь на плюсах, а потом смотришь на этот зоопарк инструментов и думаешь — ёпта, я ж не программист, а смотритель в ебучем зоопарке. Ну ладно, по порядку.
Основная моя вотчина — это C++, да. Но не тот C++, где «ой, а можно мне тут пару классов накидать». Нет, блядь. У меня всё серьёзно: высокопроизводительные штуки, системные приложения, где каждая микросекунда на счету, а память надо считать, как последнюю пачку сигарет перед зарплатой. Волнение ебать просто, когда понимаешь, что твой код потом будет крутиться на серверах, где нагрузка — овердохуища.
Работаю с современными стандартами, C++17/20, это само собой. Компиляторы — GCC и Clang под Линуксом, а под Винду, когда начальство заставляет, — MSVC. И каждый раз, когда открываешь студию, подозрение ебать чувствую, что вот-вот что-то пойдёт не так. Но живём как-то.
Сборка — через CMake. Без него сейчас вообще хуй с горы соберёшь что-то сложнее «Hello, world». Отладка — GDB или LLDB. Анализ производительности и поиск утечек — это отдельная песня. Запускаешь Valgrind, а он тебе такие вещи показывает, что сам от себя охуеваешь. «Куда, блядь, столько памяти подевалось?» — стандартный вопрос на утро.
Из библиотек — STL, конечно, основа основ. Boost — это моя любовь и боль одновременно. Asio для сетевухи — мощь, но иногда такая пиздопроебибна с настройками, что хочется всё бросить. Beast для HTTP, Spirit для парсинга — инструменты на все случаи жизни. Qt для GUI беру, только когда клиент прямо упрашивает, а то слишком жирно получается.
Был у меня опыт с embedded. FreeRTOS, кросс-компиляция под ARM. Это когда ты пишешь код, который должен работать на устройстве размером со спичечный коробок, а отлаживать его приходится через симулятор, который глючит так, что терпения ноль ебать. Но зато кайф, когда всё-таки заводится.
Вот, например, типичный мой CMakeLists.txt. Выглядит вроде прилично, но за каждой строчкой — часы поиска, почему линковка не проходит.
cmake_minimum_required(VERSION 3.16)
project(HighPerfServer LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Boost 1.70 REQUIRED COMPONENTS system thread)
add_executable(server main.cpp network_handler.cpp)
target_link_libraries(server PRIVATE Boost::boost Boost::system Boost::thread pthread)
Смотришь на это и думаешь: «Чёрта в душу, вот же всё просто написано!». А потом новый коллега пытается собрать, и у него ни хуя себе не получается, потому что Boost у него стоит не там, или версия не та, или просто погода не та. Ебать мои старые костыли, в общем. Но когда всё собирается и летает — ради этого и живём.