Этот конспект не сохранится

Закроешь вкладку — потеряешь. Зарегистрируйся — и он будет в библиотеке навсегда.

Telegram

Ваш конспект

YouTubeНейросети Никогда не заменят программистов. И вот почему

🎙️ C++ и карьера разработчика: интервью с Антоном Полохиным

Ключевые тезисы:

  • C++ продолжает активно развиваться, заимствуя лучшие идеи из других языков и наоборот.
  • Фундаментальные знания (архитектура ОС, процессоры, базы данных) важнее знания конкретного языка.
  • Нейросети — полезный инструмент (дебаггинг, переводы), но не замена программисту, который понимает код.
  • Практика и работа над реальными проектами (как в Boost) — ключ к профессиональному росту.
  • Компиляторы часто генерируют код лучше человека, но знание ассемблера и низкоуровневых оптимизаций остаётся ценным.

👨‍🏫 О лекции и аудитории

Антон провёл лекцию в институте о жизни разработчика и технологиях вокруг C++. Он отметил высокий уровень вовлечённости студентов (около 80%) по сравнению с его собственным опытом обучения.

🏛️ Работа в комитете по стандартизации C++

Антон представляет Россию в комитете. Его работа включает:

  • Внесение предложений (пропозлов) в стандарт (например, std::stacktrace, контекстные алгоритмы и итераторы для C++26).
  • Просвещение сообщества о новинках C++.
  • Помощь разработчикам в донесении их идей до комитета.
  • Отмечает, что поток улучшений для C++ снижается, так как язык становится всё более зрелым и устраивающим многих.

🤖 Нейросети в разработке: опыт и границы

  • Сильные стороны ИИ: отличный инструмент для перевода документации и поиска багов (например, анализ стека вызовов).
  • Слабые стороны для написания кода: непонимание задачи, генерация лишнего, неиспользуемого кода. Требует долгого и объёмного описания задачи на естественном языке.
  • Ключевой вывод: нейросеть не несёт ответственности за код. Ответственность лежит на программисте. Важно понимать, что делает код.
  • Blameless policy (политика безупречности): в инцидентах винят не человека, а систему, которая позволила ошибке дойти до прода. Решение — автоматические тесты и проверки, а не регламенты.

🔄 C++ vs C: сравнение и эволюция

  • C: ограниченный язык (функции, структуры), требует большой внимательности к управлению ресурсами.
  • C++: добавляет классы, перегрузку операторов, RAII, исключения, корутины, рефлексию. RAII — ключевое преимущество, автоматизирующее управление ресурсами через деструкторы.
  • Перекрёстное опыление: языки заимствуют друг у друга удачные решения (например, constexpr из C++ в C, inplace_vector в C++ из Rust, designated инициализаторы из C в C++).
  • Мнение Линуса Торвальдса: его критика C++ (исключения, динамическая аллокация) не помешала включению Rust в ядро Linux, где эти "грехи" также присутствуют.

⭐ Любимые нововведения в C++

  • std::stacktrace (C++23) — долгожданная фича, которая была во многих языках.
  • Рефлексия (C++26) — compile-time рефлексия, уникальная для C++.
  • Антон уже использует рефлексию C++26 в библиотеке Boost.PFR, что сделало код короче и, вероятно, ускорило компиляцию.

📚 Библиотека Boost: полигон для стандарта

  • Назначение: испытательный полигон для прототипов будущих стандартных решений C++.
  • Примеры успеха: optional, variant, shared_ptr, stacktrace перешли из Boost в стандарт.
  • Путь Антона в Boost: начал с изучения и улучшения lexical_cast, затем стал мейнтейнером нескольких библиотек (Boost.TypeIndex, Boost.PFR, Boost.Stacktrace).
  • Принцип работы: "Повторяешь, пока не станет хорошо". Создание библиотеки — сложный, но эффективный способ глубоко изучить новую область.

🛠️ Становление программиста и важность практики

  • Мотивация: случайное событие в детстве (возможность вставить своё лицо в игру) подтолкнуло к программированию.
  • Вызов: сложные и плохие учебники по Бейсику и C++ стали стимулом разобраться.
  • Роль вуза: формирует алгоритмическое мышление, но больший скачок в знаниях дают первые месяцы реальной работы.
  • Критически важна практика: Антон одобряет раннюю практику в институтах (как в Айсприн) и ведёт студентов, решающих реальные продовые задачи в Яндексе.

🧠 Ключевые дисциплины для будущего разработчика

Чтобы не быть заменённым нейросетью, нужно понимать, что и как делает машина:

  1. Архитектура ОС и процессоров (конвейеры, кэши).
  2. Базы данных (как работают, почему тупят запросы).
  3. Фундаментальные инструменты: системы контроля версий (Git), форматы данных (JSON, Protobuf), сетевое взаимодействие.
  4. Ассемблер (хотя бы для понимания, во что компилируется код). Полезный ресурс — Compiler Explorer (godbolt.org).
  5. Вспомогательные языки: Bash, Python для скриптов и автоматизации.
  6. C++ как язык для ниш, где он незаменим (высоконагруженные системы, железо).

⚙️ Ассемблер и оптимизации: человек vs компилятор

  • Современные компиляторы часто генерируют более оптимальный код, чем человек вручную (пример с инструкцией BT для проверки гласных).
  • Однако в высокопроизводительных проектах (например, FFmpeg) ручной ассемблерный код ещё даёт значительный прирост.
  • Лучшая практика: если вы нашли, как оптимизировать кейс лучше компилятора — репортите это в баг-трекер компилятора, чтобы улучшить его для всех.
  • Книга "Hacker's Delight" — рекомендованное чтение для понимания низкоуровневых оптимизаций.

Выводы:
Карьера разработчика строится на глубоком понимании основ, готовности брать сложные вызовы (как работа с Boost) и постоянном обучении. C++ остаётся живым языком благодаря сообществу и кросс-поллияции идей. Нейросети — помощники, но не конкуренты для думающего программиста.

🧠 C++ и карьера разработчика: интервью с Антоном Полохиным — конспект на EchoNote