Рассказываем, как молодой язык программирования Golang от Google постепенно захватывает мир, почему ему особо не нужны фреймворки и когда лучше учить Go.
- Для чего используется Go
- Почему разработчики любят Go
- «Go — идеальное карьерное развитие для PHP-разработчиков»: преподаватель Хекслета Влад Гукасов — про Go-разработчиков
Go — молодой язык программирования с открытым исходным кодом и огромным комьюнити опытных разработчиков, которые его активно используют. Go создавался в качестве более эффективной, простой и доступной альтернативы другим языкам программирования внутри компании Google в 2007 году.
Тогда Google активно развивался, в том числе и увеличивалось количество кода, который используется для управления инфраструктурой. В итоге работа программ постоянно становилась медленнее, а поддерживать их код было все сложнее и сложнее. Поэтому облачные инженеры в Google пришли к выводу, что им проще придумать новый язык программирования и перенести на него все легаси, чем постоянно оптимизировать весь код. Плюс это позволило бы иметь язык с производительностью как в С, но при этом на котором легко можно писать код.
Один из создателей Go разработчик Роб Пайк говорил, что новый язык программирования должен быть похож на С, C++ или Java — чтобы разработчикам не пришлось сильно переучиваться. Но при этом он должен быть проще, быстрее и эффективнее — потому что сотрудники Google в первую очередь инженеры, а не ученые, которые могут тратить сотни часов на изучение технологии.
Go разрабатывался как опен-сорс проект и публично вышел в 2012 году. За 10 лет он стал одним из самых популярных языков программирования: в 2022 году он находится на шестом месте по популярности среди языков программирования, которые используются на GitHub, обогнав PHP, C, C#, Ruby и Swift.
- Освойте азы современных языков программирования
- Изучите работу с Git и командной строкой
- Выберите себе профессию или улучшите навыки
Для чего используется Go
Изначально Go создавался для программ, связанных с сетями и инфраструктурой, в качестве замены популярных высокопроизводительных серверных языков, таких как Java и C++. Сегодня же Go используется как бэкенд-язык для огромного количества различных направлений разработки:
- Облачные и серверные приложения, веб-сервисы
- DevOps и автоматизация процессов
- Приложения для работы с командной строкой
- Искусственный интеллект и работа с большими данными
- Программирование микроконтроллеров и робототехники.
Однако лучше всего Go раскрывается как язык программирования для работы с инфраструктурой. Самые популярные инструменты в этой области написаны именно на Go — Kubernetes, Docker и Prometheus.
Почему разработчики любят Go
Простота языка
Go прост в изучении и в понимании основных концепций. Есть популярная байка, что всю спецификацию и документацию Go можно без проблем прочитать за полдня. Разработчики, которые выбирают Go в качестве второго языка, подтверждают, что его правда освоить легче, чем другие технологии.
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
Высокопроизводительные приложения
Go очень производителен: на нем просто писать высокопроизводительные приложения. Он был разработан для автоматизации процессов в больших масштабах, поэтому с ним можно создавать системы с высокой производительностью и нагрузкой.
Кроме того, Go отлично работает с инфраструктурой и облачными платформами. Его используют в качестве основного языка Amazon Web Services, Microsoft Azure и Google Cloud Platform (GCP).
Комьюнити и зарплаты
У Go очень живое и активное сообщество разработчиков, так как это опен-сорс проект. Они самостоятельно контрибьютят его, создают новые модули и библиотеки, а также помогают новичкам осваивать язык. Несмотря на опен-сорс историю, Go активно поддерживается Google, поэтому язык быстро развивается и активно меняется.
Про зарплаты: у Go-разработчиков вторая на IT-рынке зарплата в США, она превышает $140 тыс. в год. Однако стоит отметить, что такой перекос в зарплатах у Go-разработчиках на американском рынке может быть связан с тем, что большинство из них работают в Google, где традиционно программисты получали большую зарплату.
По результатам опроса сервиса Stack Overflow за 2021 год, Go разработчики зарабатывают за год в среднем в мире $75 тыс. в год — это делает язык восьмым по прибыльности из всех существующих. Это больше, чем Python-разработчики ($59 тыс. в год), JS-разработчики ($54 тыс. в год), Java-разработчики ($51 тыс. в год) и PHP-разработчикам ($38 тыс. в год). Вероятно, такая зарплата связана с опытом Go-разработчиков, в него редко идут джуниорами и практически не учат в качестве первого языка программирования.
На сайте HeadHunter на конец лета 2022 года было 2 641 вакансия с упоминанием языка программирования Go. Зарплаты начинаются от 80 тыс. рублей, при этом есть 40 вакансий, по которым платят более 600 тыс. рублей в месяц.
В вакансиях в связке с Go часто требуются технологии:
- Docker
- Postgres
- Kubernetes
- gRPC
- Git
- Rest API
- Python
- PHP
«Go — идеальное карьерное развитие для PHP-разработчиков»: преподаватель Хекслета Влад Гукасов — про Go-разработчиков
Преподаватель Хекслета Go Влад Гукасов рассказывает, зачем PHP-разработчики переходят на Go, почему языку практически не нужны фреймворки и какие у Go есть уникальные IT-концепции.
Меня зовут Влад Гукасов, я работаю бэкендером в международной финтех-компании Space307. Основной язык на бэкенде в нашей компании — Go.
До этого я писал на PHP, но в определенный момент появилась задача, где идеально подходил именно Go. Мы реализовывали сервис для веб-сокетов — это микросервис, поэтому PHP для этой задачи плохо подходит, зато Golang — отлично. Так я познакомился с Go, делал рабочие фичи и параллельно проходил курсы на разных платформах. Потом я поменял работу, и новую искал уже с упором на Go — теперь я поддерживаю легаси на PHP, и пишу новый код на Golang.
Вообще, Go — идеальное карьерное продолжение для PHP-разработчика. Многие программисты используют эти два языка в синергии, потому что все большие старые проекты в России написаны на PHP — «ВКонтакте», «Авито», у VK много проектов на нем. Но нагрузка постепенно растет, спектр задач расширяется, поэтому компании переходят на более эффективные и современные технологии.
Go для таких проектов идеально подходит — его легко изучить, у него огромный перформанс, он хорошо работает с железом серверов. Поэтому большинство крупных компаний пишут новые сервисы именно на нем, и нанимают бэкендеров в основном со стеком PHP/Go или Python/Go.
Плюсы Go
По синтаксису Go входит в C-подобную группу, как и многие другие языки программирования, поэтому на него легко перейти и ему легко обучиться. То есть разработчик всю жизнь писал на PHP, а потом просто взял и перешел на Go. И начал писать код в тысячи раз производительнее предыдущего. Это самый главный плюс.
Второй большой плюс: Go отлично подходит для работы с микросервисами. Go — компилируемый язык, но сам процесс компиляции занимает у него меньше секунды. То есть даже большие проекты собираются в считанные секунды — для компилированных языков это очень хорошая скорость.
Третий плюс: весь проект и вся кодовая база собирается в один бинарный файл. Это значит, что можно писать один код, который потом легко компилировать под любую платформу и архитектуру процессора — под Windows или Linux. Этим часто пользуются в DevOps, когда надо написать скрипты и скомпилировать их под каждое железо. И делается это просто одной строкой.
Go изначально был спроектирован для больших нагрузок — под ней в данном случае подразумевается количество выполняемых параллельных задач. Чтобы программа работала параллельно, нужно писать асинхронный код, который будет в один момент времени выполнять несколько действий. В Go для этого реализована концепция Green Threads в виде горутин. И так получилось, что писать асинхронный код в Go несложно, при этом он работает производительно и максимально утилизирует все ресурсы железа, в том числе ядра процессора.
Go как второй язык
Я знаю людей, которые начинали свой путь в программировании с Go — и с этим нет проблем, в нем используются те же самые концепции, что и в других языках разработки. И скорее всего, джуниор Go-разработчик сразу попадет в компанию с высокой инженерной культурой, где его будут развивать и где он сможет быстро учиться.
Чаще всего Go используют в качестве второго языка разработки. Поэтому люди, которые с ним работают, сразу видят его простоту и логичность. Например, по сравнению с Node.JS в Go весь код по умолчанию синхронен, пока ты сам не скажешь, что нужно делать по-другому. Еще в Go сложно выстрелить себе в ногу и наделать ошибок, связанных с типами данных: потому что язык не динамический, а компилируемый со статической типизацией.
Почему в Go не нужны фреймворки
Фреймворки в Go есть. Но идея языка в том, что они практически не используются, потому что готовая стандартная библиотека предоставляет все основное для разработки.
Допустим, разработчику нужно сделать обычный бэкенд веб-сервер, который будет обрабатывать какие-то самые простые запросы. На Ruby on Rails или PHP мы для этого работаем через фреймворк (в PHP сначала надо поднять Nginx — прокси, потому что PHP не может самостоятельно обрабатывать запрос).
На Go это выглядит так: программист просто пишет код, в котором использует стандартную и встроенную в язык библиотеку HTTP. Говорит — подними мне сервер на такой-то порт и обрабатывай каждый запрос так и так. Потом Go автоматически компилирует бинарник, который запускается на сервере, где обрабатывает запросы. То есть никакого дополнительного фреймворка не надо: язык сам как большой фреймворк — очень просто собрать все, что нужно.
Вообще, во фреймворках основной плюс в том, что в них автоматически все работает из коробки. В Go все нужные функции собираются отдельными пакетами: например, для работы с базой нужно выбрать, с какой именно базой будет работать программист, подключить ее и руками автоматизировать. Все процессы делаются явно, и разработчик не дистанцируется от того, что происходит внутри капота. То есть Go — очень удобный язык программирования, но какие-то его части устроены достаточно низкоуровнево.
- Освойте азы современных языков программирования
- Изучите работу с Git и командной строкой
- Выберите себе профессию или улучшите навыки