02.02.2022
11091

Go – как один из самых молодых языков программирования стал таким популярным

Андрей Андреев
автор ApiX-Drive
Время прочтения: ~10 мин

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

Содержание:
1. История создания и развития языка Go
2. Особенности и возможности языка Go
3. Преимущества и недостатки языка
4. Для чего используют язык программирования Go?
5. Заключение

***

Программирование является очень динамично развивающейся отраслью, в ней регулярно появляются новые, более эффективные инструменты и технологии. Одним из таких молодых и перспективных языков программирования в наши дни считают язык Go, разработанный корпорацией Google. По данным известного IT-ресурса Stack Overflow, в 2020 году он вошел в пятерку самых популярных ЯП среди пользователей этого сайта, опередив С#, Swift и JavaScript.

История создания и развития языка Go

Go (Golang) – это компилируемый многопоточный язык программирования, который был представлен в 2009 году. Его непосредственными создателями являются Роберт Гризмер, Роб Пайк и Кен Томпсон, разработавшие его по заказу корпорации Гугл. Пайк и Томпсон ранее работали в знаменитой лаборатории Bell Labs и создали операционную систему Unix. Кстати, факт заказ этого языка Гуглом зашифрован в его названии: GoLang – Google Language.

Работа над созданием языка программирования Го началась в 2007 году, когда команда разработчиков приступила к сбору материалов для этого проекта. По мнению одного из участников (Роба Пайка), Go предназначался для решения ряда проблем, возникавших при разработке программного обеспечения Google. В частности, медленной сборки программ, сложностями с читаемостью и документированием кода, неконтролируемыми зависимостями, дублированием разработок, дороговизной и несинхронностью обновлений и т.д.

История и особенности языка программирования Go | Go-код, который выводит на экран текст Hello World!


При помощи этого языка Google хотела получить более эффективный инструмент для разработки ПО, а также создать современную альтернативу языкам С и С++. В 2008 году началась работа над компилятором и интерфейсом Go, а к команде разработчиков присоединился Расс Кокс. В 2009 году Google провела официальный релиз нового языка программирования и открыла его исходный код.

В 2012 году разработчики выпустили первое обновление языка – версию Golang 1.0, а в 2013 году на смену ему пришла версия 1.1, которая получила улучшенную производительность и ряд дополнительных функций: карту, планировщик, сборщик мусора и т.д. В декабре 2013 года вышло очередное обновление платформы (версия 1.2), а через полгода после нее появилась версия 1.3 с модернизированным управлением стеком, что позволило повысить эффективность распределения памяти.

Следующая версия Go (1.6), опубликованная в 2014 году, позволила разработчикам создавать мобильные приложения для Android. Версия 1.5 получила переработанный сборщик мусора, а в 2016 году вышли сразу две версии языка – 1.6 и 1.7, каждая из них имела несколько важных нововведений. В 2017 году появились еще два обновления Golang (1.8 и 1.9), а в 2018 году свет увидела версия 1.10 с обновленным интеллектуальным кешем.

В 2020 году Google выпустила версии 1.14 и 1.15 с доработками компоновщика и функции размещения небольших объектов. Последним стабильным релизом на текущий момент является версия 1.17.6, появившаяся в январе 2022 года. Одновременно с выпуском обновлений ведется разработка второй версии языка – Go 2.

К 2020-му году свыше 1.1 миллиона разработчиков программного обеспечения использовали Go в качестве основного языка программирования. В то же время, более 2.7 миллионов программистов задействовали его в качестве дополнительного ЯП. Наибольшей популярностью Го пользуется в Азии – на 2020-й год там проживало почти 600 тысяч пишущих на нем разработчиков. На втором месте находится Европа – почти 250 тысяч программистов оттуда кодили на Go.

История и особенности языка программирования Го | Страница загрузки Go


На официальном сайте проекта доступны готовые сборки для разных операционных систем: Windows, MacOS, Linux. Кроме того, исходники языка можно скомпилировать на многих других ОС, в том числе FreeBSD, OpenBSD, DragonFly BSD, Solaris, Android, AIX, Plan 9. Для написания кода на Go подходят текстовые редакторы с подсветкой синтаксиса, автодополнением, компиляцией и отладкой (Vim, Notepad++, Emacs), универсальная среда разработки IDE (NetBeans, Eclipse, IntelliJ, Zeus), а также специализированная среда разработки, созданная специально для данного языка: GoLand, LiteIDE и т.д.

Особенности и возможности языка Go

Среди них можно выделить такие свойства.

  • Компилируемость. Язык программирования Golang является компилируемым, в нем исходный код преобразуется в машинный при помощи специальной программы-компилятора. Он имеет официальный компилятор кода для ОС Windows, Linux, MacOS, а также ряд независимых компиляторов от сторонних разработчиков.
  • Многопоточность. Для реализации этой функции язык Go предлагает два инструмента: горутины и каналы. Первые представляют собой параллельные операции, которые выполняются независимо от запущенной функции. Каналы же являются связующими инструментами между горутинами, синхронизирующими их выполнение. Многопоточность позволяет использовать язык для разработки ПО с микросервисной архитектурой, а еще упрощает и ускоряет написание кода для высоконагруженных приложений.
  • Строгая типизация. Go относится к группе языков со строгой статической типизацией – это значит, тип данных при создании переменной в нем объявляется сразу. Соответственно, переменная может принимать значение только указанного типа, а неиспользуемые переменные относятся к ошибкам компиляции. Статическая типизация языка является важным преимуществом при ведении крупных проектов, так как позволяет легче сочетать друг с другом отдельные элементы кода.
  • Автоматическое управление памятью и сборка мусора. В отличие от С и С++, при написании кода на Го не нужно управлять памятью вручную и запоминать, какие данные находятся в памяти и что из нее следует удалить, чтобы избежать перегрузки. В этом же языке доступно автоматическое управление памятью со сборкой мусора (освобождением памяти от ненужных объектов), благодаря наличию компилятора.
  • Автоматическое ведение документации и форматирование кода. Функционал языка поддерживает автоматический поиск комментариев к коду и составление из них мануалов к ПО при помощи команды godoc. Также в языке Go есть авторасставление отступов и автовыравнивание элементов по колонкам через команду gofmt.
  • Отслеживание устаревших конструкций. При помощи команды gofix разработчики могут сканировать код и находить устаревшие конструкции синтаксиса, которые уже не поддерживаются в актуальной версии языка.
  • Тестирование. Golang предлагает разработчикам целый ряд встроенных инструментов тестирования. Команда typecheck проверяет соответствие типов в коде, govet находит ошибки в нем, gas отслеживает различные уязвимости (сомнительные хэш-функции, SQL-инъекции и т.д.), gosimple упрощает синтаксис кода, а golint предоставляет рекомендации, основываясь на официальной документации к языку.
  • Профилирование. Функционал языка обладает инструментами профилирования – профайлером pprof и консольной утилитой go tool pprof. Первый отслеживает неоптимизированные фрагменты кода, которые выполняются слишком долго, что излишне нагружает процессор и/или память. Проверив весь код, он предоставляет разработчику результаты своей работы в виде текстового отчета. Также есть возможность схематической визуализации профайла при помощи отдельной утилиты graphviz.  

Среди других особенностей языка Go выделяют отсутствие наследования, то есть, иерархии кода, которая считается одним из важнейших признаков объектно-ориентированного программирования. Здесь же используется новая модель ООП, где вместо объектов и классов задействуются структуры данных с методами.

Свяжите сервисы между собой без программистов за 5 минут!

Также Го обладает упрощенным синтаксисом, что позволяет разработчикам легко и быстро читать чужой код без обозначений или комментариев. Всё это делает язык подходящим для изучения новичками: желающим освоить Go для чайников в первую очередь стоит ознакомиться с его довольно простым и понятным официальным руководством на 50 страниц.

Преимущества и недостатки языка

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

История и особенности языка программирования Go | Книги для изучения Go, которые рекомендует официальный сайт языка


К основным плюсам языка относятся:

  • Простота и производительность. По своим возможностям Go почти ни в чем не уступает языкам С и С++, но при этом имеет гораздо более упрощенный синтаксис. Данный фактор позволяет быстрее создавать приложения и легче читать чужой код, что стимулирует командную работу. Поэтому язык очень удобен для разработки крупных продуктов, над которыми работает многочисленная команда разработчиков. Также Go оптимально подходит для начинающих программистов, считается, что после него легче изучать другие ЯП. Его часто используют в связке с такими популярными языками, как Python и PHP.
  • Множество библиотек. Для этого языка доступно большое количество библиотек, позволяющих справиться с различными типами задач. Разработчики могут пользоваться как стандартной библиотекой Go, так и библиотеками языка С.
  • Стабильность синтаксиса. Начиная с момента своего появления в 2009 году, язык Go регулярно обновлялся, однако его синтаксис всё это время оставался и остается относительно стабильным. Это значит, что с момента официального релиза в него вносились лишь незначительные изменения – то есть, в данном языке не возникало проблем с совместимостью разных версий.
  • Легкость изучения. Изучить Го с нуля можно значительно легче и быстрее, чем многие другие языки программирования. К примеру, в языке PHP представлено 67 ключевых слов, в то время как в Го их всего 25. Ознакомиться с ним начинающим и опытным пользователям удастся при помощи обширной подборки книг, а также практических уроков языка программирования Go, доступных как в онлайне, так и в офлайне. Особенно полезными считаются онлайн-туториалы «Tour of go» и «Go by example», а еще книга «Язык программирования Go» от Алана Донована и Брайана Кернигана.
  • Востребованность. Go активно применяется не только для разработки программного обеспечения в Google, но и в других крупных компаниях: Facebook, Twitter, Mozilla, Yahoo, eBay, Dell, IBM, Soundcloud, Intel, IBM, Uber, Medium и т.д. Многие компании специально переводят свое ПО с традиционных языков программирования на Го в целях их оптимизации, увеличения производительности и снижения расходов. Язык оптимально подходит для разработки серверных приложений, сетевых сервисов, утилиты автоматизации и back-end.

Вместе с тем, язык программирования Golang имеет и определенные недостатки, среди которых можно выделить:

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

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

Для чего используют язык программирования Go?

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

История и особенности языка программирования Go | Примеры компаний, использующих Go – согласно сайту языка


Еще Go можно встретить во многих инструментах для IT-инфраструктуры, наиболее крупные из них это Kubernetes, Docker, Vault – все они написаны на данном языке. Го весьма удобен для DevOps, так как он обеспечивает высокую производительность и типобезопасность. Отсутствие дженериков несколько ограничивает распространение Го, если этот недостаток будет исправлен в ближайшие годы, то язык может найти свою нишу и в других IT-сферах – например, в области фреймворков и библиотек.

Что касается основных направлений применения языка Go, то использующие его специалисты работают не только в сфере разработки веб-сервисов, но также в финансах и финтехе, облачных вычислениях, анализе данных и Big Data, сфере разработки мобильных приложений и инструментов для разработчиков программного обеспечения.

Заключение

Go – это один из самых молодых языков программирования, он был разработан в 2009 году по заказу корпорации Google. В последние годы его популярность неуклонно растет, с 2014 по 2022 год он поднялся с 65-го на 13-е место в индексе TIOBE – одном из самых известных и авторитетных рейтингов современных языков программирования. Язык Го регулярно обновляется, ежегодно выпускаются по несколько очередных версий с новыми функциями и исправлениями ошибок. Одновременно с этим ведется разработка кардинально новой версии языка, получившей название Go 2.

Go имеет широкий ряд преимуществ, к которым относят простоту и стабильность синтаксиса, высокую скорость и производительность выполнения кода. Go имеет довольно низкий порог вхождения и легко изучается не только опытными, но и начинающими программистами. Для языка доступно множество библиотек, а сам он активно используется многими крупными компаниями для различных задач: разработки веб-сервисов, утилит, высоконагруженных приложений, IT-инфраструктуры, DevOps и т.д.

***

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