Go: хороший или плохой
У GoLang много хейтеров. Но малец растёт и развивается с завидной скоростью. И если ещё несколько лет назад его можно было назвать слабым, то сейчас у него есть все шансы стать номером один в web-разработке, финансовом секторе или облачных платформах.
Конечно, Go не совершенен. Но давайте по порядку.
Преимущества Go
Сейчас Golang находится на 13 месте в рейтинге языков программирования TIOBE. Очевидно, что он не вытеснит С/С++ или Python, но у него есть несколько крутых преимуществ.
Простота
Любая статья о преимуществах Golang начинается с этого пункта. Пусть он и очевиден. Go появился благодаря тому, что ребята в Google решили упростить процесс разработки системного, сетевого и серверного софта. У Go очень простой синтаксис, и в этом его главная особенность. У него нет классов, поддержки наследования, исключения, аннотаций и т.д. Именно поэтому этот язык стал стандартом для DevOps-инженеров. И именно поэтому любой разработчик может легко его освоить.
Правда, простота может быть и минусом. Но об этом позже.
Скорость
Компиляция на С/С++ — это боль всех разработчиков. С Go всё по-другому. Здесь можно держать код “чистым”. Переменные, которые не используются, считаются ошибкой компиляции. При помощи программ здесь решается большая часть проблем форматирования. Go спроектирован с учётом приоритетности задержки и избегания больших пауз.
Многопоточное программирование
Это ещё одна особенность языка. Благодаря примитивам, заложенным в основу (горутинам и каналам), можно легко создавать многопоточные программы.
Есть дженерики
Через дженерики можно делать разные сложные вещи. Эта фича сильно влияет на производительность.
У Go большое комьюнити
Если вам не понравится или не подойдёт инструмент, то вы почти наверняка сможете найти похожий, более доработанный. Вы можете пользоваться различными библиотеками, в том числе взаимодействовать с библиотеками языка С.
Стандартная библиотека
Она особенно хороша для разработки сетевых протоколов или API. Шифрование, HTTP-клиент и сервер, отправка писем, сжатие, форматы архивирования и многое другое.
Go позволяет оптимизировать работу с базой данных
А база данных очень страдает при больших нагрузках. Особенно, если допущены неоптимальные запросы.
Статическая типизация
Благодаря этой фиче снижается риск допустить ошибку. Да, приходится обновлять тип для каждой переменной. Но очень скоро к этому можно привыкнуть и понять, что так даже лучше.
Недостатки Go
Несмотря на то, что GoLang периодически обновляется и имеет много интересных особенностей, без минусов тоже никак.
Мало документации
Строго говоря, по Go очень мало литературы, а в официальной документации перечислены методы без описания.
Go не сможет полностью заменить язык С
Несмотря на то, что он создавался как аналог С, он может заменить его только в некоторых задачах. Именно поэтому разработчики С переходят на Golang реже, чем с Python или Rust. Go сейчас — это, скорее, язык для web-разработки.
Простота
Да, как мы уже говорили, это и плюс, и минус одновременно. Ему очень не хватает современных ООП-конструкций, а также он не подходит для разработки крупных проектов.
Перспективы
А марте состоялся релиз Go 1.18. Одно из главных обновлений — появилась поддержка дженериков. Об этом разработчики просили уже несколько лет. Команда обещает, что в последующих релизах внедрят дополнительную поддержку для более серьезных сценариев использования.
Он также включает в себя полную интеграцию стандартного набора инструментов фаззинга. Кроме того, в новой версии появилась поддержка рабочих пространств, которая поможет упростить работу с несколькими подключаемыми модулями.
А ещё теперь Go работает на 20% быстрее.
Прошло 15 лет с момента появления Golang на свет, и за это время он сильно изменился. Идея заменить С отошла на второй план, теперь это самостоятельный язык с упором на web-разработку.