Go under the hood
Go: Under the Hood

Часть I Обзор и история

Simplicity is prerequisite for reliability.
-- Edsger W. Dijkstra, "How do we tell truths that might hurt?" (EWD498)

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