Публикации и ответы на комментарии в блогах JetBrains не выходят на русском языке с 2022 года.

Приносим извинения за неудобства.

DevEco GoLand News

Язык Go в 2020 году

Read this post in other languages:

Язык Go сейчас находится в верхушке списка самых популярных языков программирования. Мы знаем, что энергичное, веселое и гостеприимное сообщество пользователей Go любит этот язык за его скорость и эффективность, но нам хотелось больше деталей. Мы внимательно изучили все, что известно о Go, и получили набор фактов. Затем мы попросили Флорина Патана, нашего эксперта по Go и девелопер-адвоката в команде GoLand, чтобы он поделился своим мнением об этих фактах и помог понять, каковы позиции Go сегодня.

Где программируют на Go

~1,1 миллиона Go-разработчиков

Около 1,1 миллиона профессиональных разработчиков используют Go в качестве основного языка программирования. Но если учесть профессиональных разработчиков, которые пишут в основном на других языках и немного — на Go, то эта цифра увеличится до 2,7 миллиона.

Если говорить о распространении языка в мире, то популярнее всего Go в Азии: около 570 тыс. проживающих здесь разработчиков используют Go в качестве основного языка программирования. На втором месте Европа с 243 тыс., среди которых около 35 тыс. программистов — из России.

Комментарий эксперта

Примерно такое распределение по регионам я и ожидал увидеть. На мой взгляд, Азия лидирует потому, что здесь очень много разработчиков, нанятых такими крупными компаниями, как Tencent, Alibaba и Huawei. В этих компаниях в принципе работает огромное количество разработчиков.

Где именно

Диаграмма показывает территориальное распределение разработчиков, использующих Go в качестве основного языка программирования, согласно исследованию экосистемы разработки 2020 (участники опроса могли указать до трех языков). Самая высокая концентрация обнаружена в Китае — 16% разработчиков.

Комментарий эксперта

Я не удивлен, что Китай занимает первое место. Но на втором месте я ожидал бы увидеть Россию, а США — хотя бы в первой пятерке.

Вероятно, Китай возглавляет список просто потому, что там проживает огромное количество разработчиков. Многим известным мне компаниям (например, PingCAP, Tencent, Huawei) нужно много разработчиков для поддержки, разработки внутренних инструментов, инфраструктуры и сервисов бэкенда, совмещенных с микросервисами. Похоже, это ключевой фактор.

Я знаю, что в России очень классные Go-сообщества, поэтому неудивительно, что здесь так популярен этот язык. Я не ожидал, что такие высокие позиции займут Япония и Украина. А что касается Германии и Индии, я ожидал, что их рейтинг будет чуть выше. Помню, когда я был в Берлине четыре или пять лет назад, Go использовался практически в каждом стартапе.

Что происходит в индустрии

Согласно исследованию экосистемы разработки 2020, Go входит в десятку основных языков, используемых профессиональными разработчиками. Его доля составляет около 7%.

Комментарий эксперта

Go продолжает расти. Люди, как правило, не выбирают Go в качестве своего первого языка программирования, а скорее переходят на него с других языков, таких как PHP и Ruby, но в основном с C++ и C# (насколько мне известно).

Преимуществом Go перед PHP является типобезопасность: Go — статически типизированный язык, а PHP — динамический. Это значит, что компилятор делает большую часть работы за вас и обеспечивает, чтобы написанный вами код скомпилировался и мог выполняться без проблем. Преимущество Go перед C++ — простота. В Go все довольно понятно.

Go отличается своей скоростью — это заметно и при написании кода, и при его выполнении. В целом, Go позволяет повысить производительность в 5-10 раз без каких-либо оптимизаций с вашей стороны, это важное преимущество для компаний. Кроме того, язык простой, его легко освоить. А еще он позволяет с легкостью заменять микросервисы в проектах.

Многие инструменты для IT-инфраструктуры, такие как Kubernetes, Docker, Vault (и это только самые крупные), используют Go. Хотя многие компании работают с Java, зачастую у них также есть команды, которые пишут на Go — особенно для поддержки и патчинга проектов. И это, пожалуй, еще одна из причин роста популярности Go. Чем больше технологии будут вовлечены в инфраструктуру и развертывание, тем больше будет расти Go. Думаю, что в ближайшие несколько лет все больше людей начнет использовать Go и мы дойдем до отметки 15-20%. В исследовании экосистемы разработки мы задавали вопрос: "Планируете ли вы освоить или перейти на другой язык в ближайшие 12 месяцев? Если да, то на какой?" 13% респондентов назвали Go.

Какое ПО разрабатывают на Go

Самой популярной областью применения Go являются веб-сервисы: согласно результатам исследования экосистемы разработки 2020, в 36% случаев Go используется именно для веб-сервисов.

Комментарий эксперта

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

Я думаю, что эта диаграмма не слишком изменится в будущем. Но применение Go в веб-сервисах, на мой взгляд, станет еще популярнее: с него действительно очень легко начинать.

Та же история мне видится с утилитами: с Go довольно легко писать небольшие приложения-утилиты и быстрые приложения, позволяющие обрабатывать большие объемы данных, а также решать разовые задачи, требующие больших мощностей. Стоит посмотреть и на IT-инфраструктуру. Чем больше используется Docker и Kubernetes, тем больше будет использоваться и Go, просто потому что обе технологии написаны на Go. Go удобен для DevOps, поскольку он обеспечивает типобезопасность и высокую производительность. Взаимодействовать с облачной частью инфраструктуры довольно просто: Google, Amazon и Azure обеспечивают хорошие SDK. Думаю, что в ближайшие годы с приходом дженериков можно также ожидать подъема в категории библиотек и фреймворков.

Что касается системного ПО, полагаю, здесь будет наблюдаться спад и люди будут постепенно переходить на что-то вроде Rust. То же самое для баз данных. Скорей всего, в будущем этот сегмент сузится (примерно до 6%). Инструменты для программирования — я удивлен, что они заняли такую высокую позицию в списке, и мне было бы интересно узнать, что за инструменты создают при помощи Go.

Основные области применения Go

Согласно исследованию экосистемы разработки 2020, большая часть Go-программистов работает в секторе IT-услуг; далее следуют сферы финансов и финансовых технологий, облачных вычислений и платформ и др.

Комментарий эксперта

Что касается финансов и финансовых технологий, результат для меня вполне ожидаемый. Я знаю, что многие банки были запущены при помощи Go либо используют его в своей инфраструктуре. К примеру, британский банк Monzo был целиком создан при помощи Go. Облачные вычисления и платформы — тоже вполне закономерно, учитывая те типы приложений, которые пишутся на Go.

Я не ожидал увидеть здесь мобильную разработку. У Go нет внушительного опыта в области мобильной разработки. Я бы скорее ожидал, что люди будут использовать Go для разработки веб-сервисов или бэкенда для мобильных приложений, но не более того.

Есть несколько сфер, в которых я бы не рассчитывал на рост Go в ближайшее время. Например, все, что основано на машинном обучении, поскольку здесь по-прежнему силен Python. Есть попытки популяризировать машинное обучение на Go, но думаю, что результаты мы увидим только через несколько лет.

Инструменты для Go

Менеджеры зависимостей

Go Modules — самый популярный менеджер пакетов среди Go-разработчиков. Согласно исследованию экосистемы разработки 2020, его популярность выросла с 41% (в 2019 году) до 82% (в 2020 году).

Комментарий эксперта

Думаю, скоро мы перестанем задаваться этим вопросом, потому что Go Modules станет стандартной моделью, а GOPATH перестанет поддерживаться — у команды Go есть такие планы. Все остальное, пожалуй, просто устареет.

Go-роутеры

Gorilla / Mux и стандартная библиотека с 2018 года и до сих пор остаются самыми используемыми Go-роутерами согласно исследованиям экосистемы разработки, проведенным в 2020 и 2018 годах.

Комментарий эксперта

Стандартная библиотека, пожалуй, популярна потому, что ее, как правило, рекомендуют на Reddit, в Slack и других источниках. Я лично использую gorilla/mux, поскольку этот пакет дает чуть больше абстракции по сравнению со стандартной библиотекой, при этом не слишком жертвуя производительностью. Кроме того, gorilla/mux очень близок к стандартной библиотеке и с помощью него проще писать серверы. В целом, это именно то распределение, которое я ожидал увидеть.

Топ-5 веб-фреймворков

Использование Gin с 2018 года выросло практически вдвое, остальные фреймворки по большей части остались на прежних позициях (согласно исследованиям экосистемы разработки, проведенным в 2020 и 2018 годах).

Комментарий эксперта

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

Фреймворки для тестирования

Доля разработчиков, использующих встроенные инструменты тестирования, упала с 64% (в 2018 году) до 44% (в 2020 году). В то же время мы видим небольшой рост популярности остальных фреймворков для тестирования.

Комментарий эксперта

Встроенные инструменты тестирования остаются популярными, поскольку в стандартной библиотеке Go есть очень хорошая библиотека для тестирования.

Скорей всего, их использование снизилось потому, что в Go приходит все больше разработчиков из других языков (например, из PHP), и они предпочитают использовать привычные им инструменты.

Самые обсуждаемые инструменты Go и другие языки

Go много обсуждается IT-сообществом, в частности, на Stack Overflow. Мы взяли данные из раздела вопросов и ответов и посчитали, какие теги чаще всего встречаются вместе с «Go». Среди них оказалось 23 инструмента и 2 языка — «MySQL» и «PostgreSQL». Мы также посмотрели, как часто тег «Go» встречается с тегами других популярных языков. Вертикальная ось показывает количество появлений тегов, а горизонтальная — упоминания тегов с «Go».

Комментарий эксперта

На мой взгляд, с JSON действительно есть проблема. Переводить JSON в структуры данных Go и обратно — не так просто, вероятно, поэтому тема так популярна. Что касается struct, здесь дело в том, что разработчики, пришедшие из других языков, обычно с трудом вникают в эту тему (пожалуй, за исключением разработчиков на C/C++).

Я бы ожидал большого количества вопросов об Amazon Web Services, поскольку AWS очень популярны сами по себе. Теперь проще разрабатывать приложения на Go для Google App Engine (так было не всегда), поэтому об этом тоже много вопросов.

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

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

Хотите попробовать GoLand в вашей команде? Получите расширенную пробную версию для неограниченного количества пользователей.

Получить

Ваша команда GoLand
The Drive to Develop

image description

Discover more