Часть I Обзор и история
- Глава 1 Философия проектирования и история
- Глава 2 Ассемблер и соглашения о вызовах
- Глава 3 Жизненный цикл программы
Чтобы понять реализацию языка, прежде всего необходимо понять, почему он спроектирован именно так, как существует сегодня. Go не появился из пустоты. Каждый принятый в нём компромисс несёт в себе традиции Unix, C и CSP, а также многолетнюю обеспокоенность его создателей неконтролируемым ростом сложности в крупномасштабной разработке. Эта часть начинается с философии проектирования и исторического контекста, очерчивая общую картину языка: какие задачи он стремился решить и от чего сознательно отказался. Затем мы спускаемся на уровень ассемблера и соглашений о вызовах — слой, ближайший к машине, — чтобы разобраться, как функции, аргументы и стековые фреймы размещаются на реальном оборудовании. Наконец, мы прослеживаем полный жизненный цикл программы от запуска до завершения, связывая различные подсистемы рантайма в единую прослеживаемую нить. После прочтения этой части разрозненные на первый взгляд детали реализации в последующих главах сложатся в единый замысел проектирования.