«Главный риск искусственного интеллекта — не восстание машин, а потеря человечеством смысла жизни из-за отсутствия личных вызовов». Крис Латтнер, создатель Swift и LLVM, уверен, что будущее за теми, кто готов задавать «глупые вопросы» и менять домены знаний ради борьбы с интеллектуальной энтропией. Это манифест о том, как проектировать языки программирования, строить архитектуру будущего на базе RISC-V и оставаться созидателем в эпоху AGI.
🛠️ Архитектура разума: От Стива Джобса до семантики Swift 2:24
Стив Джобс, Илон Маск и Джефф Дин: Три грани гениальности 2:24
Крис Латтнер (Chris Lattner) имел редкую возможность работать с тремя титанами индустрии, каждый из которых олицетворяет свой подход к инновациям. Сравнение их стилей дает глубокое понимание того, как создаются продукты мирового уровня.
- Стив Джобс и «человеческий фактор»: По мнению Криса, Джобс был сосредоточен на том, чтобы технологии «чувствовались» правильно. Его подход строился на интуиции и глубоком понимании того, как продукт изменит жизнь человека. Он мог жестко давить на инженеров, но отступал, когда получал аргументированное объяснение, которое укладывалось в его картину мира.
- Илон Маск и «экспоненты»: Маск — технократ до мозга костей. Его фокус — изучение того, как работают экспоненциальные зависимости, и прогнозирование развития технологий на основе физических принципов. В отличие от Джобса, он строит свои видения на жестких технологических прогнозах.
- Джефф Дин и «лидерство через код»: Легенда Google, Джефф Дин, представляет собой совершенно иной тип лидера. Он не «CEO-тип» в классическом смысле, а гениальный инженер, который до сих пор пишет код самостоятельно. Его лидерство основано на личной вовлеченности в разработку и способности вдохновлять команду через совместное решение сложнейших технических задач.
Философия лидерства: Искусство «глупых вопросов» 4:58
Эффективное техническое лидерство, по мнению Латтнера, — это не всегда наличие правильного ответа, а умение его найти. Крис подчеркивает, что лидер должен быть глубоко погружен в продукт и технологию, но при этом сохранять смирение.
Одним из ключевых инструментов лидера Крис считает умение задавать «глупые вопросы». В новой для себя области (например, в дизайне чипов) это позволяет быстро обучаться и выявлять слабые места в аргументации экспертов. Важнейшая задача руководителя — создать психологически безопасную среду, где инженеры не боятся быть уязвимыми, предлагать сырые идеи или прямо говорить начальнику, что тот неправ.
Язык программирования как интерфейс между человеком и машиной 7:48
Крис Латтнер рассматривает создание языков программирования не просто как написание компиляторов, а как сложнейшую задачу по дизайну пользовательского интерфейса (UI).
«Компьютеры — это "звери", которые хороши в специфических вещах. Языки программирования нужны, чтобы человеческий разум мог эффективно выразить свою идею и заставить эту машину работать».
Проектирование языка — это всегда баланс между:
- Nuts and Bolts (Гайки и болты): Низкоуровневая эффективность, системы типов и работа с «железом».
- User Interface (Пользовательский интерфейс): Синтаксис и то, как язык заставляет программиста чувствовать себя.
Плохой дизайн заставляет разработчика тратить время на бойлерплейт (шаблонный код), что ведет к ощущению непродуктивности. Хороший дизайн, как в Swift, убирает трение, делая код более выразительным и безопасным «из коробки».
Семантика значений: Почему Swift ведет себя как математика 16:08
Одной из самых инновационных и в то же время сложных для понимания особенностей Swift является семантика значений (Value Semantics). В большинстве языков (Java, Python) объекты передаются по ссылке. Это часто приводит к скрытым багам, когда изменение объекта в одной части программы неожиданно портит данные в другой.
В Swift переменные ведут себя как математические объекты:
- Если вы передаете массив в функцию, это выглядит так, будто вы передали уникальную копию.
- Это избавляет от необходимости постоянно использовать
.clone(), как это часто приходится делать в PyTorch или Java.
Чтобы такая безопасность не убивала производительность, Swift использует механизм Copy-on-Write (Копирование при записи). Если данные не меняются, разные части программы могут безопасно использовать один и тот же участок памяти. Но как только происходит попытка изменения, язык автоматически создает копию. Это дает «золотую середину» между безопасностью функциональных языков и скоростью C.
Прогрессивное раскрытие сложности 22:50
Swift спроектирован по принципу прогрессивного раскрытия сложности (Progressive Disclosure of Complexity). Это UX-принцип, перенесенный в мир кода.
Многие языки заставляют новичка сразу сталкиваться с огромным количеством концепций. Например, чтобы написать "Hello World" на Java, нужно понимать, что такое public static void main, классы и пакеты. Swift же позволяет начать с одной строки print("Hello World"), как в Python.
Идея состоит в том, чтобы сложность не вставала на пути у пользователя, пока она ему не нужна. Однако, когда разработчику требуется полный контроль над памятью, указателями или специфическими оптимизациями «железа», Swift предоставляет эти инструменты без необходимости переписывать всё на C.
🛠️ Эволюция Swift, дилемма типов и велосипед для ума 25:12
Сообщество Swift Evolution: управление хаосом и поиск консенсуса 25:12
Развитие современного языка программирования — это история извлечения уроков из прошлых ошибок. Крис Латтнер вспоминает, что к моменту их беседы Swift находился в публичном доступе уже около шести лет, начиная с релиза в 2014 году. В этом процессе ключевую роль играет основная команда (core team), обеспечивающая непрерывность общего видения. По словам Криса, важно понимать, где в дизайне языка зияет «пустота», и удерживать это пространство свободным для будущего фундаментального решения — метафорического «валуна». Однако сама разработка давно вышла за рамки узкого круга создателей. Следующий уровень управления — это сообщество Swift Evolution, объединяющее сотни увлеченных инженеров. Этот открытый форум превращается в настоящий «галтовочный барабан для идей», где в жарких дискуссиях рождается дизайн языка. Поскольку добиться очевидного согласия среди сотен участников непросто, существует формальный процесс предложений. Задача core team здесь — задавать долгосрочные ориентиры и направлять сообщество к общему консенсусу. Ранее в разговоре Крис Латтнер и Лекс Фридман уже затрагивали принцип прогрессивного раскрытия сложности в Swift, и этот баланс между доступностью для новичков и эффективностью для профессионалов остается важнейшим фактором проектирования. Самые трудные решения для архитекторов касаются ситуаций, когда предложенная фича несет в себе скрытые риски «загнать дизайн языка в угол».
Системы типов: компромисс между скоростью разработки и скрытыми багами 30:09
Одним из фундаментальных вопросов архитектуры языков остается организация систем типов. Лекс Фридман отмечает, что многие считают Python языком без типов, однако Крис Латтнер предлагает иной взгляд: у Python есть ровно один тип. Это отчетливо видно при интеграции Python в Swift, когда любые внешние объекты импортируются как универсальный python object. Такой подход дает огромные преимущества, включая бесплатную утиную типизацию (duck typing), что позволяет невероятно быстро набрасывать код. Обратной стороной медали становятся сложные, трудноотлаживаемые баги. Если случайно передать строку туда, где ожидалось целое число, программа не упадет мгновенно, а ошибка просочится глубоко по стеку вызовов, взорвавшись в совершенно неожиданном месте. Дизайн языка — это всегда взвевание подобных компромиссов. Разработчику приходится выбирать не просто между наличием или отсутствием типов, а определять мощность самой системы типов. И этот выбор неизбежно тянет за собой цепочку других архитектурных компромиссов:
- Использование JIT-компиляции или статической компиляции.
- Способ управления памятью: сборщик мусора (garbage collection), автоматический подсчет ссылок или ручное управление.
Велосипед для ума: абстракция как двигатель продуктивности 32:44
Если язык не берет на себя моделирование базовой, неотъемлемой сложности задачи (inherent complexity), эта сложность никуда не исчезает — она просто выталкивается в библиотеки и внешние инструменты. Главная цель любого языка — повысить продуктивность человека. Крис цитирует знаменитые слова Стива Джобса о том, что компьютер — это «велосипед для ума», и подчеркивает, что язык программирования выполняет ту же роль. Повышая уровень абстракции, он позволяет инженеру вмещать в голову больше сложных концепций. В качестве примера Латтнер приводит декларативный фреймворк Swift UI, который кардинально ускоряет разработку интерфейсов и опирается на ранее упоминавшуюся семантику значений. В процессе беседы Лекс Фридман делится личным опытом, признаваясь, что долгое время писал на C++, но при переходе на Python испытал невероятное чувство свободы, получив возможность за пару минут набросать скрипт для обработки данных или переименования файлов на компьютере. Крис замечает, что типы в строгих языках работают как своего рода проверки утверждений (asserts), но только на этапе компиляции. Преодолеть человеческую инертность при изучении нового инструмента помогает правильный практический катализатор — например, создание приложения, под которое готова экосистема. При этом Swift, будучи построенным на базе инфраструктуры LLVM, крайне портативен и работает даже на Android. Крис с восхищением отмечает, как быстро ML-сообщество способно переключаться между инструментами ради крутых идей, приводя в пример экосистемы PyTorch и Swift for TensorFlow.
Магия нативных библиотек и преодоление старых конвенций 43:36
Самой красивой чертой в дизайне языков Крис Латтнер считает способность поддерживать создание высококачественных, экспрессивных библиотек, которые ощущаются как естественная, встроенная часть самой системы. В Swift такие базовые типы, как int, float, array и string, не зашиты намертво в компилятор, а реализованы в виде обычных структур внутри стандартной библиотеки. Операторы и методы для целых чисел определены программно, а значит, рядовой разработчик имеет точно такие же возможности для создания собственных типов — например, кватернионов. В качестве контрпримера Латтнер приводит Java и C++, где встроенные типы вроде int жестко отделены от пользовательских классов, из-за чего последние теряют семантику значений при передаче по ссылке. Напоследок Лекс и Крис обсуждают отказ от устоявшихся конвенций, вспоминая оператор присваивания. В то время как большинство языков используют знак равенства =, Pascal из соображений надежности применяет двоеточие с равенством :=. Изменение подобных стандартов — это всегда вопрос окупаемости инвестиций. В Си-языках операция присваивания возвращает значение, что позволяет писать цепочки x = y = z, но в реальности это чаще порождает ошибки вроде if (x = y). Задача дизайнера — минимизировать страдания программистов в мире, аккуратно отсекая неудачные исторические решения, которые редко используются во благо.
🛠 Инфраструктура компиляторов: от наследия LLVM к архитектуре MLIR 50:16
В процессе развития любого успешного технологического продукта наступает момент, когда груз принятых ранее решений начинает тормозить прогресс. Крис Латтнер (Chris Lattner) в беседе с Лексом Фридманом (Lex Fridman) подробно разбирает этот феномен на примере эволюции языков и инструментов разработки. Ранее в разговоре они касались философии создания языков, но теперь дискуссия переходит в плоскость того, как управленческие и архитектурные решения влияют на жизнеспособность кода в долгосрочной перспективе.
Усталость металла: почему стареют компиляторы 1:03:40
В декабре 2020 года проекту LLVM исполняется 20 лет — для мира программного обеспечения это почтенный возраст. Несмотря на колоссальный успех, система начинает демонстрировать признаки «окаменения» сообщества. Крис отмечает, что многие контрибьюторы работают над LLVM десятилетиями и со временем теряют способность замечать фундаментальные недостатки системы.
Проблема технического долга в таких масштабных проектах описывается Латтнером через яркую метафору: ошибки проектирования подобны песку под ногтями. Они постоянно раздражают, их невозможно игнорировать, но на их исправление часто не хватает ресурсов или политической воли сообщества. Сопротивление изменениям растёт пропорционально возрасту проекта: любое радикальное улучшение воспринимается как неоправданный риск.
Крис подчёркивает разницу в моделях управления, которая напрямую влияет на техническое состояние инструментов:
- Модель BDFL (Великодушный пожизненный диктатор): На примере инцидента с «моржовым оператором» (walrus operator) в Python видно, как концентрация принятия решений на одном человеке может привести к токсичности в сообществе и выгоранию лидера.
- Модель Core Team в Swift: Здесь финальные решения делегируются «мудрости группы». Это создает защитный механизм: решения принимаются прозрачно, с публикацией подробной аргументации, аналогично практике Верховного суда. Это помогает отделять техническую критику от личных нападок.
MLIR — «многоуровневый» ответ на вызовы индустрии 1:06:22
Чтобы преодолеть архитектурные тупики старого LLVM, Крис Латтнер и его команда разработали MLIR (Multi-Level Intermediate Representation). Важно отметить, что аббревиатура ML расшифровывается как «многоуровневый», а не «машинное обучение», хотя проект и тесно связан с ИИ-индустрией.
Исторически компиляторы создавались под конкретные задачи: LLVM отлично справлялся с CPU, JVM — с языками с уборкой мусора. Однако современные реалии потребовали создания множества специализированных (domain-specific) компиляторов. Раньше для каждого нового домена — будь то Swift, нейросети или проектирование микросхем — разработчикам приходилось заново реализовывать огромный объем инфраструктуры, что приводило к избыточности и дублированию ошибок.
MLIR решает эту проблему, предлагая универсальную и гибкую среду, которая позволяет строить специализированные компиляторы гораздо быстрее и качественнее. Ключевые преимущества MLIR:
- Исправление ошибок прошлого: При проектировании MLIR были учтены и исправлены архитектурные промахи, накопленные в LLVM за 20 лет.
- Масштабируемость: Система позволяет работать на разных уровнях абстракции в рамках одного фреймворка.
- Гибкость: MLIR способен компилировать код даже для «домена транзисторов», превращая логику программ в физические схемы чипов.
Несмотря на очевидные преимущества, Крис признает наличие «культурного диффузного барьера»: сообществу старого LLVM требуется время, чтобы принять и освоить столь радикально новый инструмент.
Дизайн чипов как задача компиляции 1:10:40
Переход Латтнера в компанию SiFive знаменует собой новый этап в его карьере — применение компиляторного опыта в сфере аппаратного обеспечения. В центре этой стратегии стоит RISC-V — открытый стандарт архитектуры команд. Крис сравнивает RISC-V с такими открытыми стандартами, как TCP/IP или язык C: спецификация открыта для всех, но конкретные реализации могут быть как свободными, так и коммерческими.
Современный процесс создания чипов страдает от фрагментации инструментов проектирования (EDA-tools). Эти инструменты часто плохо стыкуются друг с другом, соединены «синей изолентой» и скриптами, что приводит к огромным потерям производительности.
«Мы используем MLIR для построения схем... вы компилируете для домена транзисторов», — поясняет Крис.
Использование MLIR в этой области позволяет рассматривать проектирование железа как высокоуровневую задачу компиляции. Вместо разрозненных инструментов разработчики получают единую среду, где путь от кода на языке программирования до фотолитографии на кремнии становится бесшовным и предсказуемым процессом. Это закладывает фундамент для экономики кастомных чипов (ASIC), подробнее о которой пойдет речь в следующей главе.
⚙️ Эволюция архитектур и будущее параллельного программирования 1:15:30
Экономика чипов ASIC и конец «бесплатной» производительности 1:15:55
Современный процесс создания чипа — будь то процессор для iPhone или специализированный ускоритель — Крис Латтнер описывает как сложную компиляцию. Разработчикам необходимо объединить CPU, память, GPU, таймеры и другие компоненты в единую систему на кристалле (ASIC — Application Specific Integrated Circuit) и подготовить проект для производства на фабриках, таких как TSMC.
Ключевой вызов сегодня заключается в том, что «закон Мура» в его классическом понимании больше не обеспечивает автоматический рост производительности. Раньше разработчики могли просто подождать полтора года, пока выйдет более быстрый процессор, и тот же самый код начинал выполняться в два раза быстрее. Сейчас этот путь закрыт. Теперь производительность нужно искать в специализированных ускорителях и архитектурных оптимизациях. Проблема в том, что проектирование чипов — крайне дорогой процесс, поэтому большинство компаний вынуждены использовать «готовые» чипы, которые не всегда идеально подходят под их задачи. Снижение стоимости проектирования новых ASIC и создание гибких архитектур — это то, что позволит индустрии быстрее внедрять инновации, от интернета вещей до 6G.
Преимущества открытого стандарта RISC-V 1:17:41
Одним из важнейших инструментов в этом переходе становится открытый стандарт архитектуры RISC-V. По мнению Латтнера, история компьютерных архитектур полна примеров, когда компании и их проприетарные наборы инструкций (вроде SPARC от Sun или PA-RISC от HP) исчезали, оставляя клиентов с огромными инвестициями в «мертвые» технологии.
RISC-V кардинально меняет правила игры, предоставляя бизнесу независимость и «опциональность».
- Снижение рисков: Если компания-поставщик ядер на базе RISC-V столкнется с трудностями, клиент может легко перейти к другому производителю.
- Гибкость: Экосистема RISC-V позволяет выбирать решения с разными компромиссами, что критически важно для производителей с широким спектром продуктов.
- Унификация инструментов: Разрозненность инструкций в embedded-сфере (например, в микроконтроллерах) часто приводит к использованию крайне ограниченных инструментов. Стандартизация на базе RISC-V позволит создавать более качественные компиляторы и языки программирования, применимые во всем диапазоне устройств — от крошечных датчиков до мощных серверов.
Манифест многопоточности и модель акторов в Swift 1:30:54
Переход к специализированному железу требует пересмотра языков программирования. Большинство существующих языков исторически создавались с прицелом на однопоточные CPU, что делает эффективное распараллеливание на сотни ядер GPU или аппаратных ускорителей крайне сложной задачей.
Специально для решения этих проблем Крис Латтнер разработал «Манифест параллелизма» (Concurrency Manifesto) для языка Swift. Манифест служит «дорожной картой», которая задает общую философию развития языка, предотвращая хаотичные изменения.
Основные принципы манифеста:
- Безопасная асинхронность: Ключ к корректной работе в параллельном мире — асинхронное взаимодействие.
- Борьба с состоянием гонки: Одной из самых сложных проблем является состояние гонки (race condition), возникающее, когда несколько потоков пытаются изменить одну и ту же область памяти. Использование семантики значений (value semantics) в Swift позволяет избежать многих таких ошибок «из коробки».
- Модель акторов: Манифест предлагает использовать акторов — логические единицы, работающие в рамках одного потока, которые обмениваются сообщениями асинхронно. Это делает разработку понятной и безопасной по умолчанию, при этом позволяя масштабировать систему до уровня отдельных процессов или даже распределенных машин.
Латтнер подчеркивает, что компилятор не должен пытаться делать «магическую» автопараллелизацию кода, написанного в императивном стиле: это ведет к непредсказуемой производительности и «обрывам» скорости при малейшем рефакторинге. Вместо этого язык должен предоставлять программисту простые и предсказуемые инструменты управления архитектурой.
🚀 Технологический прогресс и автоматизация вычислений 140:32
Современные инструменты машинного обучения вышли на уровень абстракции, позволяющий компиляторам автоматически и предсказуемо распределять вычислительные нагрузки по огромным кластерам оборудования, например, по тысячам узлов TPU. Крис Латтнер отмечает, что архитектурные решения в этой области зачастую сводятся к графам, которые поддаются эффективному распараллеливанию.
Подобные подходы, такие как батчинг (пакетная обработка), стали мощными инструментами, которые возникли органично, благодаря усилиям сообщества специалистов по машинному обучению, стремящихся решать прикладные задачи, а не теоретиков языков программирования. Эта мощная абстракция позволяет разработчикам управлять суперкомпьютерами непосредственно из кода на Python. Тем не менее, реализация этих систем — сложная задача, требующая усилий специалистов разного профиля, включая экспертов по компиляторам и API (например, Keras, PyTorch или JAX). Крис Латтнер подчеркивает, что это многоуровневая проблема, требующая баланса между удобством абстракций для пользователя и получением максимальной производительности от аппаратного обеспечения — будь то ускорители TPU или iPhone.
🏠 Трансформация культуры работы в эпоху пандемии 153:08
Пандемия COVID-19 фундаментально изменила ландшафт профессиональной деятельности, особенно в Кремниевой долине. Крис Латтнер отмечает, что переход к «Zoom-культуре» и удаленной работе стал своеобразным великим уравнителем. Для сотрудников, работавших удаленно и ранее, формат видеоконференций устранил неравенство: теперь все участники находятся в равных условиях, и никто не остается исключенным из процесса, как это часто бывало при физических встречах с доской для записей.
Более того, этот сдвиг вынуждает команды переходить на асинхронные методы коммуникации, что зачастую способствует более инклюзивному поведению. Однако Латтнер признает и очевидные минусы: для многих людей личное взаимодействие с коллегами является важной частью человеческой природы, и его отсутствие делает процесс сотрудничества гораздо менее полноценным. Пандемия также стала катализатором глубокой рефлексии: многие люди, лишившись привычной стабильности, пересмотрели свои приоритеты, решив сменить место жительства, уйти с текущей работы или начать собственный бизнес. В долгосрочной перспективе это может привести к более сбалансированному миру, где люди выбирают путь, приносящий им больше счастья.
🌐 Социальный кризис и токсичность интернет-среды 159:10
Обсуждая текущую социальную нестабильность, Лекс Фридман и Крис Латтнер затронули проблему растущей токсичности в онлайн-сообществах, особенно заметную в 2020 году. По мнению Латтнера, человечество по своей природе склонно к разделению на «своих» и «чужих» ради достижения успеха, а интернет, делая мир «теснее», усиливает это противостояние, превращая локальные конфликты в масштабные и поверхностные.
Особую тревогу вызывает склонность людей к поспешной публичной травле за вырванные из контекста высказывания. В качестве примера Лекс Фридман привел ситуацию с Яном Лекуном, который подвергся жесткой критике за комментарии о предвзятости данных в машинном обучении. По мнению Фридмана, реакция аудитории, часто переходящая в обвинения в адрес личности ученого, полностью исключает возможность конструктивного и нюансированного обсуждения.
Крис Латтнер добавляет, что в таких условиях легко забыть об эмпатии. Часто люди совершают коммуникационные ошибки из-за стресса или нехватки времени, которые в сети мгновенно превращаются в устойчивые ярлыки. Истинный прогресс, как считают собеседники, возможен только через способность слушать, учиться и сохранять человечность даже в сложных дискуссиях, а не через кликбейт и «культуру отмены».
🧠 Большие языковые модели, парадигма Software 2.0 и жизненные ориентиры инженера 2:10:01
Триумф масштабирования: потенциал и социальные вызовы GPT-3 2:10:01
Крис Латтнер, будучи долгосрочным оптимистом в отношении человеческой природы и технологий, делится своим детальным взглядом на бум больших языковых моделей. По его мнению, успех GPT-3 подтвердил давно известную в индустрии глубокого обучения максиму: если взять удачную архитектуру, сделать модель больше и предоставить ей колоссальный массив данных, на выходе неизменно получится более качественный результат. С технической точки зрения появление GPT-3 не стало революционным шоком, однако за ним стоит монументальный объем сложнейшей инженерной работы.
При этом Крис Латтнер разделяет опасения исследователей по поводу безопасности технологии. Он напоминает, что ещё в период релиза GPT-2 лаборатория OpenAI опубликовала провокационный манифест о решении не открывать исходный код системы из-за рисков масштабного социального ущерба и неконтролируемого распространения дезинформации. Эти вызовы остаются сверхактуальными и для современных масштабируемых систем.
Обсуждая внутреннее устройство серии GPT, гость отмечает важный парадокс: модели-трансформеры фундаментально устроены очень просто. Они лишены истинной рекуррентности и совершенно не отражают структуру человеческого мозга. Прогресс ИИ может идти не только за счет экстенсивного масштабирования чипами и бюджетами, но и через качественные алгоритмические улучшения — например, создание разреженных сетей (sparse networks). В качестве перспективного примера Крис Латтнер приводит концепцию распределенных систем типа mixture of experts, которую активно продвигает Джефф Дин (его личность собеседники кратко обсуждали в первой главе). В такой архитектуре отдельные нейросети локально специализируются на конкретных доменах знаний, а входящие запросы динамически маршрутизируются через обученные гейты, что позволяет эффективно утилизировать вычислительные ресурсы огромного кластера.
Парадигма Software 2.0 и дифференцируемое программирование 2:14:38
Обсуждение того, как отбор качественных данных превращается в ключевой элемент управления системой, закономерно подводит Лекса Фридмана к концепции Software 2.0, сформулированной Андреем Карпатым. Крис отзывается о Карпатом с огромной теплотой, называя его не только потрясающим инженером, но и выдающимся коммуникатором. Базовая посылка Software 2.0 заключается в том, что классическое написание императивного кода (Software 1.0) часто избыточно и хаотично, тогда как глубокое обучение позволяет решать прикладные задачи структурно, избавляя программистов от нагромождения ad-hoc инструкций, для которых они даже не пишут тесты.
Тем не менее, Крис Латтнер не согласен с идеей полного вытеснения классического программирования нейросетями. Он предлагает рассматривать машинное обучение не как замену Software 1.0, а как принципиально новую, мощную парадигму программирования. Подобно тому, как индустрия в свое время научилась комбинировать объектно-ориентированный подход, функциональный стиль и обобщенное программирование для решения разнородных задач, машинное обучение и дифференцируемое программирование (differentiable programming) должны гармонично занять свое место в общем инженерном инструментарии.
Нейросети идеальны для взаимодействия со сложным, нелинейным человеческим миром: распознавание сенсорных данных, мультимодальные интерфейсы и генерация контента не поддаются строгому описанию алгоритмами. Это связано с тем, что поведение и восприятие человека крайне трудно формализовать. В то же время, вы никогда не напишете надежный бутлоадер для компьютера с помощью глубокого обучения. Нейросети чрезвычайно ресурсоемки и энергозатратны. Когда инженеру важен выигрыш в несколько порядков энергоэффективности, императивный код остается единственным решением. Более того, Software 2.0 обязано перенимать лучшие практики классической разработки: непрерывную интеграцию (CI), строгое тестирование и валидацию, чтобы своевременно отлавливать скрытые смещения в данных и опасные регрессии до того, как система нанесет реальный вред пользователям.
Синтез исходного кода: синтаксический блеск и проблема верификации 2:21:37
Лекс Фридман развивает тему автоматизации и задает вопрос: способны ли большие языковые модели полностью заменить компиляцию или взять на себя полноценный синтез программных систем — например, генерировать сложный код на языке Swift. Ранее в разговоре собеседники детально разбирали архитектуру Swift, но здесь Крис оценивает генеративные способности моделей строго прагматично. Он убежден, что нейросети способны без труда выдавать синтаксически корректный и визуально убедительный рабочий синтаксис. Однако фундаментальная и пока не решенная проблема лежит в плоскости точного выражения человеческого намерения (intent).
Мало просто сгенерировать кусок кода, похожий на правду. Латтнер описывает надежный процесс синтеза как систему с жесткой обратной связью. Разработчик должен задать верхнеуровневый каркас программы («скаффолдинг») и набор строгих математических утверждений-ассертов, а генеративная модель с помощью обучения с подкреплением обязана совершать целенаправленное «восхождение к вершине» (hill climbing), пока все ассерты не начнут гарантированно выполняться. В этой парадигме именно тесты становятся главным языком выражения требований человека к машине.
Одно дело — сгенерировать по текстовому промпту красную кнопку на HTML, где корректность результата проверяется мгновенным визуальным тестом. Совершенно другая задача — синтезировать нетривиальные вычислительные функции, где верификация корректности граничит с NP-полными задачами. Текущим языковым моделям критически не хватает механизмов автоматического доказательства теорем, высшей логики и строгого математического вывода. Они великолепно распознают и экстраполируют паттерны, но не обладают equational reasoning (уравнительным рассуждением). Впрочем, Крис иронично добавляет, что и сами люди зачастую принимают решения на основе чистой интуиции, а затем лишь ретроспективно оправдывают их перед самими собой, выстраивая ложные логические цепочки.
Карьерный путь инженера: как преодолеть синдром самозванца 2:27:56
В финальной части этого сегмента Лекс Фридман просит Криса дать совет молодым специалистам, студентам и исследователям, которые только начинают свой путь в компьютерных науках. Латтнер убежден, что любые глубокие технологические прорывы происходят только потому, что конкретные люди искренне верят в возможность изменений и готовы инвестировать колоссальные силы в тяжелую работу. Любой масштабный проект неизбежно сталкивается с периодами жестких сомнений в себе и синдромом самозванца — например, когда ты уже два года развиваешь идею, тратишь ресурсы и все еще не уверен, приведет ли это к успеху.
Чтобы найти свое истинное призвание и успешно преодолевать эти кризисы, Крис советует молодым инженерам придерживаться нескольких правил:
- Регулярно экспериментировать: на старте карьеры критически важно попробовать как можно больше разнородных областей, посещая вводные лекции по абсолютно нетипичным для вашего основного профиля дисциплинам.
- Не бояться роли новичка: полезно регулярно оказываться в ситуациях, где вы ничего не понимаете, переходить в новые домены знаний и без стеснения задавать экспертам самые базовые или «глупые» вопросы.
- Следовать за внутренней страстью: только искренний интерес к задаче дает энергию пробиваться сквозь периоды неудач, когда проект кажется безнадежным.
Сам Крис Латтнер скромно признает, что в его собственной карьере огромную роль сыграла чистая удача. Ему повезло очень рано нащупать свою страсть: он бесповоротно влюбился в вычислительную технику еще в детстве, когда компьютеры впервые заговорили с ним на своем самом простом, но понятном языке — Basic.
🚀 Творчество, смысл и вызовы будущего 2:30:55
Крис Латтнер убежден, что подлинная ценность в жизни и профессиональной деятельности заключается в решении сложных, но вдохновляющих задач. По его мнению, если человек находит дело, которое искренне любит, и готов инвестировать в него свои силы, принося пользу миру, это наполняет жизнь смыслом. При этом Латтнер подчеркивает, что «сложно» не обязательно означает «страдальчески»: это скорее вопрос готовности выходить из зоны комфорта.
Для профессионального роста он рекомендует периодически «погружать» себя в среду, где окружающие знают гораздо больше тебя в конкретной области, и не бояться задавать глупые вопросы. Латтнер считает крайне важным для инноваций подход, при котором специалисты меняют домены деятельности. Когда человек привносит взгляд из другой сферы в новую для себя область, это часто приводит к прорывам, которые были невозможны для людей, годами работавших только в рамках одной дисциплины.
Философия созидания и страх перед AGI 2:32:39
Рассуждая о фундаментальных вопросах бытия, Латтнер признает, что биологически человечество запрограммировано на выживание и передачу ДНК. Однако он считает продуктивным подход, при котором человек сам создает смысл своей жизни через ценности, отношения с близкими и созидание.
Отвечая на вопрос Лекса Фридмана о том, обретут ли когда-нибудь искусственные системы (AGI) подобное чувство смысла, Крис призывает не быть «спесишистами». Он отмечает, что мы — такие же «машины», работающие на биологическом субстрате и оптимизирующие свои целевые функции. Латтнер считает преждевременным утверждение, что будущие AGI будут лишены «души» лишь потому, что мы пока не до конца понимаем принципы их работы.
В то же время Латтнер выделяет главный страх, связанный с AGI. Его беспокоит не столько гипотетический «Скайнет» с лазерами, сколько потенциальная утрата человечеством стремления к личным вызовам. Если люди перестанут бороться за развитие, перестанут нести ответственность за детей, сообщество и свой вклад в общее дело, это может привести к деградации общества.
Оптимизм против культуры потребления 2:38:03
Латтнер выступает за осознанный выбор в пользу оптимизма. Даже перед лицом глобальных угроз — от пандемий до ядерного сдерживания — парализующий страх непродуктивен. Вместо этого, по его мнению, лучше направлять энергию на инженерную разработку решений, которые сделают будущее более позитивным.
Он критикует современную «культуру потребления», где люди тратят часы на бесконечное поглощение негативных новостей или развлекательного контента. Латтнер призывает молодежь фокусироваться на продуктивности: обучении, создании нового и развитии собственных взглядов. Ранее в разговоре они касались архитектуры компиляторов как области, требующей высокого мастерства, и Крис подтвердил, что именно в сложных инженерных нишах, где наблюдается нехватка экспертов, созидание приносит наибольшее удовлетворение и ценность.