Представление

Собрались как-то два продакта и решили завести канал о языке программирования. Thank Go! — канал обо всём прекрасном, ужасном и удивительном, что есть в языке Go. Мы смотрим на язык как на продукт и пишем об этом.

Как продать душу за быстрый код и так ли он быстр? Зачем пакету regexp 50 одинаковых методов? Причём тут вообще руны и почему все так больно со строками? Почему нестыдно подключать библиотеки из master на гитхабе и нужно ли это делать?

На стороне добра и позитива играет @mikeberezin, за нездоровый скепсис отвечает @nalgeon.

💁‍♂️ Зачем?

Если уж мы решили смотреть на язык программирования как на продукт, то начать нужно с главного продуктового вопроса — для кого?

В случае с Golang есть отличная стартовая точка — большая и подробная статья Роба Пайка (одного из авторов языка) о первоначальном дизайне.

Статья довольно подробная, но я рекомендую с ней ознакомиться всем, кто хочет разобраться, что же заставило в 2007 году Google создавать внутри компании новый язык программирования.

Спойлер:

Статья начинается со слов о том, что Golang прежде всего инструмент для решения определенных задач, а не следствие передовых исследований в дизайне. В гугле на тот момент было огромное количество гетерогенного кода, который писало немало очень крутых разработчиков. Это привело к проблемам:

  • очень долгая сборка (основной бинарник — 45 минут!),
  • неконтролируемое, постоянно нарастающее количество зависимостей,
  • разные ребята пишут одни и те же вещи по-разному, даже на одном языке,
  • сложно понимать незнакомые места,
  • боль обновления,
  • сложно делать автоматизированные инструменты для работы с такой кодовой базой.

В дальнейшем мы еще будем возвращаться к этой статье и обсуждать разные ее принципы, а также что с ними стало со временем.

☝️ Несколько интересных фактов о дизайне

Почему скобочки для выделения смысловых блоков, а не пробелы, как в питончике?

Потому что кодовая база на разных языках. Очень часто встречались ошибки из-за неправильных сдвигов при копировании кусочков из одного место в другое.

Почему C подобный синтаксис?

Большинство инженеров имеют С-бэкграунд. Новый язык должен быть понятен с первого взгляда.

Почему явная обработка ошибок?

Потому что нужна читаемость, а не краткость.