Go

Golang

Что это такое

Go — компилируемый язык, вокруг которого стоят три свойства: быстрая компиляция в один статический бинарный файл, конкурентность, встроенная в язык, а не добавленная библиотекой, и намеренно небольшой набор возможностей, а стандартная библиотека при этом включает HTTP-сервер, кодировщик JSON и средство запуска тестов, поэтому службу часто удаётся написать вообще без сторонних зависимостей.

Почему это важно

Для инфраструктуры и сетевых служб такое сочетание подходит на редкость хорошо: один бинарный файл, для которого не нужно ставить среду выполнения, делает развёртывание тривиальным, а образы контейнеров — маленькими, поэтому значительная часть облачного инструментария вокруг контейнеров и оркестрации написана именно на Go. Быстрая компиляция держит цикл «правка — запуск» коротким; маленький же набор возможностей приводит к тому, что код на Go у разных людей выглядит похоже и новый человек в команде читает службу уже в первый день. Однако простота здесь навязана: обобщённые абстракции и выразительные средства типов ограничены намеренно, и некоторые задачи получаются многословнее, чем в других языках.

Что в этом треке

  1. Инструментарий (05-backend-data/05-go/01-the-toolchain) — форматирование, сборка, тестирование и управление зависимостями: один стандартный набор команд.
  2. Конкурентность (05-backend-data/05-go/02-concurrency) — горутины, каналы и модель, которая позволяет пользоваться ими безопасно.

Предварительные требования

Нет.

Что читать дальше

  • Программирование на Python (05-backend-data/03-python-programming) — альтернатива для скриптов; на Python часто пишут обвязку вокруг.
  • Java (05-backend-data/04-java) — другой компилируемый язык, но со средой выполнения и экосистемой куда больше.
  • Docker (06-cloud-devops/06-docker) — здесь один статический бинарный файл даёт самый маленький и простой образ контейнера.