Go появился в сентябре 2007 года, когда Роберт Гриземер, Кен Томпсон и я начали обсуждать новый язык для решения задач, с которыми мы и наши коллеги в Google сталкивались в работе каждый день.
Когда мы впервые сделали Go общедоступным в ноябре 2009 года, мы не знали, получит ли этот язык широкое распространение или окажет ли он влияние на другие языки в будущем. Оглядываясь назад из 2020 года, Go преуспел в обоих направлениях: он широко используется как внутри, так и за пределами Google, а его подходы к сетевому параллелизму и разработке программного обеспечения оказали заметное влияние на другие языки и их инструменты.
Оказалось, что Go имеет гораздо более широкий охват, чем мы когда-либо ожидали. Его рост в отрасли был феноменальным, и он позволил реализовать многие проекты в Google.
Роб Пайк
Язык Go был разработан Кеном Томпсоном, который известен по операционной системе UNIX, и является одним из соавторов кодировки UTF-8, Робом Пайком, который тоже принимал участие в разработке UTF-8, а также участвовал в разработке операционных система Plan9 и Inferno. И Роберт Гризмер, который занимался Java HotSpot’ом, языком Swazall и распределёнными системами в Google.
Первая версия языка появилась в общем доступе в 2009 году, а в 2012 году вышла версия 1.0, то есть golang — это очень молодой язык.
Зачем нужен Go?
Go разрабатывался со ставкой на эффективность. Во-первых, это эффективность работы непосредственно самой программы — эффективная утилизация многопроцессорных систем. Дело в том, что в начале нулевых годов количество физических ядер в процессорах сильно выросло. При этом очень многие языки, которые проектировались в 90-х годах, были нацелены на работу только с одним ядром. golang же очень хорошо масштабируется по ядрам процессора, что позволяет писать очень эффективные, очень нагруженные сервисы. Также Go изначально проектировался для обработки большого количества конкурентных запросов — большого числа маленьких независимых запросов, которые поступают одновременно в программу.
Во-вторых, важной задачей была эффективность программиста. В golang очень простой синтаксис. Это позволяет писать очень простые программы. Также именно для этих целей в Go задан жёсткий стиль форматирования кода, и создан инструмент для автоматического форматирования. Как правило, этот инструмент встраивается прямо в среду разработки, и при сохранении файла он сразу приводит стиль к нужному виду.
В golang очень быстрая компиляция. Это значит, что для того чтобы проверить, работает программа или нет, программисту не придётся ждать 10-20 минут, пока она соберётся. Кроме того в Go очень удобная работа с зависимостями. Весь код лежит в одном месте и при сборке собирается в статический бинарник, что позволяет ему не зависеть от каких-то внешних пакетов, и избегать конфликтов с другими программами.
В каких сферах применяется golang? Основными сферами применения Go являются web-разработка, системы мониторинга и разного рода системные утилиты. Go может плохо подойти в тех местах, где вам нужен очень жёсткий контроль над памятью и недопустимы практически никакие паузы, потому что golang — это язык со сборщиком мусора. Конечно, там нет таких пауз, как stop-the-world, которые надолго вешают всё, однако в каком-то виде они все-таки есть, поэтому в системах реального времени Go вам будет тяжело применить. Также если у вас очень мало памяти, например, вы используете какие-то встраиваемые устройства, Internet of Things, то Go, возможно, будет не самым лучшим выбором. Но для web’а golang — это очень хороший выбор.
Дополнительные материалы:
- Почему нужно использовать go — ссылка на официальный сайт, кейсы
- Все что я пишу про golang — про golang
