Хочу всё знать. Язык Go

Один из лидеров уходящего года.
3 минуты11885

Надеюсь, вы уже ознакомились со свежими рейтингами, поэтому с сегодняшним героем нашей традиционной рубрики более-менее знакомы. В прошлом году Go появлялся в новостях почти каждую неделю, рейтинги популярности ползли вверх, книжные развалы заполонили профессиональные книги. Сегодня ажиотаж немного угас, гики трезво оценили качество языка. Никто уже не говорит о тотальном доминировании, но стало ясно, что у Go яркое будущее. Идеальное время, чтобы познакомиться с ним и вам.

Минутка истории

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

В 2007 году за разработку сели сотрудники компании Роберт Гризмер, Роб Пайк и Кен Томпсон. Кстати, до этого они занимались разработкой ОС Inferno на базе Plan 9, которая предназначена для построения сетевых и распределённых систем. Название произошло путём эволюции от Google Language к Golang и просто Go. До 2009 года велись работы по созданию синтаксиса, базовой архитектуры. Потом проект был обнародован, гики всех стран приглашены к совместной доработке и в итоге к 2012 году Go доведён до первой полноценной версии.

В народе новый язык не оценили – не так много компаний и тем более простых разработчиков нуждалось в оптимизации производительности проектов, а тут ещё и ограничение по совместимости с платформами (поддержка Plan 9 и Android появится лишь в конце 2014 года). Google тоже не способствовал популяризации языка – до легендарных поединков компьютера против человека в игру Го о языке знали только гики. Дальнейший рост популярности многие связывают как раз с частым мельканием в СМИ, но есть и другая версия. Обратите внимание на рейтинг TIOBE (у PYPL и других агрегаторов статистики он схож):

В период с июля по октябрь 2016 года произошёл скачок по запросам в 13 раз. Что за эпохальное событие произошло в середине прошлого года? Нет, это не очередная победа машины над человеком, это выход в свет мобильной игры Pokemon GO. Таким образом, искатели зверьков в дополненной реальности стали катализатором популярности языка программирования.

Синтаксис

Так как язык Go должен быть в первую очередь быстрым, а уже потом понятным, в синтаксисе существует множество правил и ограничений. Тем, кто изучал в школе Pascal, он понравится.

Объявление переменной:

var i int
var (
  j float
  k int
)

Присваивание с выводом:

i := j

Классический цикл for:

for i := 0; i < n; i++ {
  println(arr[i])
}

Очень полезное свойство – for может не содержать аргументов (цикл бесконечный) или содержать только одно условие (аналог while).

Обратите внимание на фигурные скобки, в Go строго регламентировано место открытия и закрытия, дополнительные переносы не допускаются.

Вот пример Hello World:

package main
import "fmt"

func main() {
  fmt.Println("Hello, World!")
}

В целом, синтаксис хоть и кажется немного устаревшим, имеющим много ограничений, но попробуйте поработать хотя бы 30 минут, и он вам понравится.

Что почитать

Ещё в прошлом году было проблемой найти русскоязычную книгу по Go. Сегодня такой проблемы больше нет, лучшие уже можно купить:

На западном рынке, разумеется, выбор богаче:

Для тех, кто любит работать с электронным материалом, есть онлайн-туториалы:

Ну и не забывайте про официальный сайт, там есть вся интересующая информация.

Перспективы

Плюсы Go очевидны:

  • Производительность. Это значит, что он – альтернатива использованию Cи-кода в приложениях, которые ограничены аппаратными возможностями.
  • Поддержка. Язык поддерживает и развивает Google, планов по сворачиванию проекта нет, так что он будет жить и развиваться ещё много лет.
  • Конкуренция. У Go есть альтернативы, но ни один из них не имеет явных преимуществ и могущественного покровителя, соизмеримого по мощи с Google.

С Go есть только одна проблема – большинству работодателей в России он не нужен. Поэтому трудно спрогнозировать, когда количество рабочих мест сдвинется с околонулевой точки. Несмотря на это, обязательно познакомьтесь с Go. Возможно, завтра это станет вашим конкурентным преимуществом.

web_developergolanggo
Нашли ошибку в тексте? Напишите нам.
Спасибо,
что читаете наш блог!