Go, или Golang, – компилируемый многопоточный язык программирования, разработанный в Google. В 2007 г. работу над ним начали Роб Пайк и Кен Томпсон с целью создать быстрый, производительный и нескучный язык, при этом не потеряв в читабельности и простоте. И в результате у них получился Go – язык, призванный упростить и ускорить разработку программного обеспечения.
Сейчас Go используется во многих Big Tech компаниях, таких как Uber, Dropbox, SoundCloud, Docker, Netflix, Twitch и, конечно же, Google. В Uber, например, Go – основной язык, используемый для разработки микросервисов, а монорепозиторий Go содержит более 50 миллионов строк кода. В компании более 2000 уникальных сервисов, написанных на Go. И число таких сервисов только растет по всему миру.
В чем же преимущества Go перед другими ЯП?
Сферы применения языка
Если говорить о сферах применения языка, то они разнообразны: он отлично подходит для разработки облачных сервисов и инфраструктуры, для DevOps и средств автоматизации, используется для работы с сетями и приложениями, связанными с безопасностью, для разработки веб-серверов, API и уже упомянутых микросервисов, а также в области блокчейна и криптовалют.
Производительность
Такая популярность Go связана, прежде всего, с его высокой производительностью, скоростью компиляции и надежностью. Язык простой, а значит код пишется быстрее и проще. Он гораздо производительнее, чем, к примеру, PHP, Node.js и тем более Python (хотя и медленнее, чем C). Статическая типизация, присущая Go, делает его более надежным, так как проверка типов происходит во время компилирования, то есть ошибки выявляются еще до того, как код будет запущен. Добавьте к этому тот факт, что Go вместо традиционной обработки ошибок методами try/catch позволяет обращаться с ошибками как с любым другим типом данных, – и вы получите на удивление простой и легкий код.
Активное комьюнити
Еще одно большое преимущество Go – это развитое и активное комьюнити. Сейчас в мире около миллиона разработчиков, владеющих Go, и многие из них участвуют в разработке различных opensource-библиотек и инструментов для языка. Это также значит, что вас не оставят один на один с проблемами, с которыми обычно сталкиваются инженеры в процессе разработки, и всегда помогут разобраться. Кроме того, уже много лет проводятся международные и региональные конференции по Go. Самые популярные из них – Conf42, GopherCon, Go Conference и другие. В России проводились и проводятся, например, Gophercon Russia и Golang Conf (в рамках HighLoad++).
Зарплата
Как я уже отметил, Go набирает популярность среди крупных компаний, а значит – и на рынке труда. А поскольку язык все еще молод, высококвалифицированных инженеров, имеющих опыт работы с Go, сейчас не так много. Поэтому спрос на них растет с каждым годом, и многие компании конкурируют между собой, чтобы заполучить наиболее талантливых и опытных специалистов.
Соответственно, зарплаты у Golang-разработчиков достаточно высокие. Возьмем Россию: согласно последним данным, медианная зарплата по Москве – 273 000 рублей, по Санкт-Петербургу – 253 000 руб, а по России – 251 000 руб. Сейчас, кстати, в России опубликовано около 1000 вакансий для Golang-инженеров всех уровней.
Насколько сложно выучить Go?
Что касается изучения Go, то он не слишком сложен для людей, уже имеющих опыт в программировании. У него простой, понятный и даже минималистичный синтаксис: например, в нем всего 25 ключевых слов. Создатели Go изначально закладывали в него идею простоты изучения и использования. Что касается документации, то она относительно небольшая по объему: хватит всего нескольких дней, чтобы ознакомиться с языком и начать писать на нем рабочий код.
Итак, стоит ли учить Go в 2023?
Итак, стоит ли учить Go в 2023? Определённо стоит. Go – мощный, безопасный, достаточно простой и очень востребованный язык программирования. Он хорошо подходит для создания высокопроизводительных систем, поскольку способен повысить производительность программы в 5–10 раз без каких-либо оптимизаций. А благодаря гибкости и способности решать разнообразные задачи, использовать его можно в самых разных областях – от сетевого программирования до криптовалютных приложений.
В чем, на ваш взгляд, преимущество Go перед другими языками?