# Профессор Дэвид Малдер: «Как работает код под капотом»

Источник: https://www.youtube.com/watch?v=PZ_ebxkNZmo
Канал: WIRED
Опубликовано: 09.12.2025

---

## Путеводитель по программированию: от основ до компиляции 💻
[[JUMP:0:00]]

Профессор информатики Калифорнийского университета в Беркли Дэвид Малдер (David Mulder) в рамках выпуска WIRED Tech Support отвечает на популярные вопросы пользователей сети, охватывая широкий спектр тем: от истории веба до принципов работы генеративного ИИ и процесса компиляции кода. В этом материале собраны ключевые концепции, советы для начинающих и профессиональные инсайты, которые помогут лучше понять современную разработку.

---

### 🌐 Наследие веба и основы обучения
[[JUMP:0:14]]

История интернета берет начало с первых веб-страниц, созданных Тимом Бернерсом-Ли в начале 90-х годов. По словам профессора, эти документы до сих пор доступны и корректно отображаются современными браузерами.

Для тех, кто только начинает свой путь в программировании, Дэвид Малдер предлагает следующие тезисы:

* **Трудности — это временно:** Программирование, как и любой сложный навык (например, игра на гитаре или езда на велосипеде), со временем доводится до автоматизма.
* **Математика не обязательна:** Хотя в некоторых областях (например, графике) математические знания полезны, можно стать первоклассным программистом, не будучи «математическим гением».
* **Обучение — это практика:** Чтобы понять, подходит ли вам конкретное направление (backend, frontend или full stack), лучше всего потратить пару недель на практические задачи, а не пытаться сразу стать экспертом.

---

### 🛠 Языки программирования и разработка
[[JUMP:4:10]]

Выбор языка часто зависит от того, насколько сильно он «подстраховывает» разработчика, перехватывая ошибки до запуска программы.

* **Классификация по уровню защиты:**
    * **Минимальная защита (например, C):** Язык дает свободу, но оставляет программиста один на один с багами.
    * **Средняя защита (например, Python):** Баланс между удобством и предотвращением ошибок.
    * **Максимальная защита (например, Rust):** Требует больше усилий и детальных описаний от программиста, но ловит большинство ошибок еще на этапе написания кода.
* **Rust:** Профессор отмечает, что Rust сейчас является одной из самых захватывающих технологий, так как объединяет высокую скорость выполнения с современными методами предотвращения ошибок.
* **JavaScript и TypeScript:** Если функциональности стандартного JavaScript недостаточно или он кажется неудобным, Малдер рекомендует переходить на TypeScript.

---

### 🤖 ИИ в разработке: хайп или инструмент?
[[JUMP:14:54]]

Большие языковые модели (LLM), на которых основан ChatGPT, по своей сути являются программами для «заполнения пропусков» на основе огромных массивов данных.

* **Реальность «vibe coding»:** Использование ИИ для генерации программ (так называемый «vibe coding») работает для типовых задач, но плохо справляется с созданием чего-то принципиально нового.
* **Советы по работе с ИИ:**
    1.  Разбейте сложную задачу на фрагменты по 5 строк кода.
    2.  Пишите логику в виде псевдокода без строгой синтаксической привязки.
    3.  Всегда имейте план верификации (тесты или ручная проверка) того, что предложил ИИ.

---

### ⚙️ Как работает «под капотом»: от кода к «нулям и единицам»
[[JUMP:29:25]]

Понимание того, как компьютер превращает текст в действия, критически важно для глубокого освоения профессии. Этот процесс состоит из четырех ключевых этапов:

1.  **Лексический анализ (Lexing/Tokenizing):** Превращение текста программы в список токенов (операторов, чисел).
2.  **Построение структуры (Abstract Syntax Tree):** Создание дерева, отражающего приоритет операций (например, группировка скобок).
3.  **Генерация инструкций (Code Generation):** Преобразование структуры в набор команд, понятных процессору (например, `move` в регистры `R8`/`R9` и последующее `add`).
4.  **Двоичный код:** Перевод инструкций в машинный код (последовательности нулей и единиц), которые исполняются процессором.

Дэвид Малдер демонстрирует этот процесс в [x86-64 playground](https://godbolt.org/), показывая, как операции `move` и `add` меняют состояние регистров процессора в реальном времени.