Ответ
Да, я считаю это необходимым для развития. В рамках C++ это означает не только новые стандарты языка, но и инструменты экосистемы. Например, я освоил использование санитайзеров (AddressSanitizer, ThreadSanitizer) для отладки и современные системы сборки.
При работе с legacy-кодом я успешно внедрял современные практики. Например, замена небезопасных функций вроде sprintf на std::format (C++20) повысила безопасность и читаемость:
#include <format>
#include <iostream>
#include <string>
int main() {
int userId = 42;
std::string action = "login";
// Типобезопасное форматирование вместо sprintf(buffer, "User %d performed %s", userId, action.c_str());
auto logMessage = std::format("User {} performed {}", userId, action);
std::cout << logMessage << std::endl;
return 0;
}
Я также изучал интеграцию C++ с другими технологиями, например, компиляцию в WebAssembly (WASM) для запуска кода в браузере или основы Rust для понимания современных подходов к безопасности памяти. Готов погрузиться в любые технологии, требуемые для решения бизнес-задач.
Ответ 18+ 🔞
А, ну ты про то, что надо постоянно учиться? Да, конечно, это же само собой разумеется, ёпта. Как будто можно в нашем деле сидеть на месте — так тебя на хуй с горы снесёт любой проект. Это как с машиной: если её не обслуживать, она в лучшем случае не заведётся, а в худшем — развалится на ходу, и ты останешься с манда с ушами.
Вот смотри, в C++ это не просто прочитать про новый стандарт и кинуть в резюме строчку. Это реально надо вникать, иначе будешь как тот полупидор, который на собеседовании умные слова говорит, а на деле нихуя не может. Я, например, не просто слышал про санитайзеры — я их впиндюрил в рабочий процесс. AddressSanitizer, ThreadSanitizer — это ж, бля, волшебные палочки, которые показывают, где у тебя память течёт или гонки данных. Раньше на такие баги неделями охотился, а теперь — раз, и тебе прямо в лог: «Вот тут, мудила, забыл почистить, вот тут два потока в одну кучу лезут». Удивление пиздец, как раньше без них жили.
Или вот legacy-код, который как будто на дворе 2002-й год писали. Там же сплошной ад: sprintf, strcpy, ручное управление памятью — один шаг в сторону и будет вам хиросима и нигерсраки. Я не просто сидел и ныл, а реально начал это выпиливать. Взял std::format из C++20 — и понеслась. Смотри, как красиво стало:
#include <format>
#include <iostream>
#include <string>
int main() {
int userId = 42;
std::string action = "login";
// Типобезопасное форматирование вместо sprintf(buffer, "User %d performed %s", userId, action.c_str());
auto logMessage = std::format("User {} performed {}", userId, action);
std::cout << logMessage << std::endl;
return 0;
}
Раньше бы нагородил буфер, потом бы гадал, не вылез ли за границу, а теперь — чисто, безопасно, и компилятор сам проверит. Чувствуешь разницу? Это как перейти с ржавого топора на швейцарский нож.
А ещё я, например, в WebAssembly (WASM) ковырялся — представляешь, C++ код в браузере гонять? Ёперный театр, конечно, но зато какие возможности открываются. И Rust посматривал — не чтобы прямо на него переходить, а чтобы понять, как они там с памятью управляются без головной боли. Потому что если не смотреть по сторонам, так и будешь в своём болоте сидеть, а вокруг уже на лодках с реактивными двигателями рассекают.
Короче, суть в чём: готов я в любую требуемую технологию нырнуть с головой, если это для дела нужно. Потому что иначе на кой хуй тогда вообще в этой профессии быть? Чтобы старый код поддерживать, пока сам не превратишься в такого же мамонта? Да похуй, лучше уж постоянно учиться, хоть и голова порой трещит.