Go (Golang): что это за язык программирования и для чего он нужен

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

Статья обновлена 11 ноября 2024 года.<a href="https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Fru.freepik.com%2Ffree-photo%2Fprogramming-background-with-person-working-with-codes-computer_38669441.htm%23fromView%3Dimage_search_similar%26amp%3Bpage%3D1%26amp%3Bposition%3D8%26amp%3Buuid%3D845a18be-e469-444b-bb3a-6b42880c390c&postId=838058" rel="nofollow noreferrer noopener" target="_blank"> Image by freepik</a>
Статья обновлена 11 ноября 2024 года. Image by freepik

🔥 Бесплатный вебинар о 6 популярных IT-профессиях 🔥

Примерьте IT на себя, узнайте куда легко попасть после 25 лет и получите первый опыт в 2-х IT-специальностях под присмотром опытного эксперта в прямом эфире

Бонус: получите персональный пошаговый план перехода к формату удаленной работы

Реклама. ОАНО ДПО «СКАЕНГ», ИНН 9709022748, erid: LdtCKBHZy

Содержание

<p>Скриншот. Learn Golang in one blog / medium.com</p>

Скриншот. Learn Golang in one blog / medium.com

Описание

Golang написан на C (преимущественно), а также основан на функциях Pascal, C++, Python, Oberon, Modula. Официально язык программирования представили сообществу разработчиков в 2009 году. С тех пор его начали применять программисты из самых разнообразных компаний, включая Adobe, Facebook, HP, Microsoft, Uber, Dropbox, Яндекс и т. д.

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

Ключевые особенности Голэнг:

  • статическая и строгая типизация;
  • уборщик мусора;
  • богатая стандартная библиотека;
  • быстрая компиляция;
  • поддержка кроссплатформенности;
  • отсутствие классов и наследования;
  • поддержка сборки в один бинарник;
  • открытый исходный код.

В Гугл создали язык программирования, на котором программы могут разрабатывать новички. Войти в нишу Go-разработки можно с минимальным понимаем программирования. Код, написанный на Гоу, можно легко прочесть даже после десятка правок сторонними разработчиками.

Где используется и что пишут на Golang

Сфер применения Голэнг множество. Самые популярные:

  1. Веб-разработка. Go обеспечивает высокую производительность веб-приложений благодаря сетевым библиотекам и поддержке многопоточности. Некоторые известные фреймворки по типу Gin и Echo написаны именно на Go.
  2. Микросервисы. Гоу часто используется для разработки микросервисов (реализуются с помощью однофункциональных независимых сервисов/протоколов).
  3. Облачные приложения. На Голэнг можно разрабатывать решения для управления облачными ресурсами.
  4. Решения для сетевых ресурсов. Благодаря высокой производительности и стандартным возможностям Go часто используется для создания сетевых инструментов и приложений для серверов, VPN и т. п.
  5. Хранилища и базы данных. Существует множество библиотек и фреймворков на Go для работы с различными БД и хранилищами данных, включая SQL и NoSQL БД.
  6. Инструменты и утилиты. Go используют в рамках написания инструментов для командной строки, обработки данных, создания утилит для администрирования систем и т. д.
  7. Игры и графика. Несмотря на то, что Гоу не относится к типичным языкам для разработки игрового ПО, существуют библиотеки и фреймворки для создания игр и графических приложений на Go.
  8. Работа с контейнерами и виртуализацией. Go активно применяется в проектах, связанных с контейнеризацией и виртуализацией.
  9. Системное программирование. Программисты используют Гоу для создания системных утилит, драйверов и прочих системных программ.
  10. Разработка блокчейн-решений. Из-за своей высокой производительности и низкого уровня абстракции, Go часто применяется для разработки смарт-контрактов и блокчейн-приложений.

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

<p>Скриншот. Beginner's Guide to Generics in Golang / atatus.com</p>

Скриншот. Beginner's Guide to Generics in Golang / atatus.com

Особенности языка

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

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

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

Важные особенности Голэнг:

  1. Горутины (goroutines) и каналы (channels). Упрощают конкурентное программирование — горутины позволяют создавать легковесные потоки выполнения, а каналы обеспечивают безопасное взаимодействие между горутинами.
  2. Простой и понятный синтаксис. Go имеет чистый минималистичный синтаксис, что делает его легкочитаемым и понятным для разработчиков любого уровня. Отсутствие избыточных конструкций способствует ясности и снижению вероятности ошибок.
  3. Сборщик мусора. Голэнг включает в себя автоматическую сборку мусора (garbage collection), что позволяет оптимально управлять памятью.
  4. Автоматическое форматирование кода. В других языках программирования существуют строгие правила относительно регистра символов, мест прописывания скобок, ширины отступов и подобного. Гоу предлагает утилиту gofmt, которая сама расставит все символы по необходимым местам и удалит лишнее.
  5. Массивная стандартная библиотека. Go поставляется с библиотекой, которая включает в себя множество модулей для работы с сетью, вводом-выводом, файлами, обработкой строк, криптографией и т. д.
  6. Быстрая компиляция. Компилятор Голэнг невероятно быстрый, что позволяет оперативно создавать и запускать любое программное обеспечение.
  7. Кроссплатформенность. Go поддерживает множество операционных систем и архитектур, что делает его подходящим для разработки кроссплатформенных приложений.
  8. Отсутствие классов и наследования. Гоу использует композицию вместо наследования и не имеет классов. Это может казаться весьма необычным решением, особенно для тех, кто привык к объектно-ориентированному программированию.
  9. Поддержка сборки в один бинарник. Go позволяет создавать один исполняемый файл, включающий в себя все необходимые зависимости, что упрощает развертывание приложений.

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

В Go не нужны фреймворки

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

Почему отсутствие фреймворков — это плюс для разработчика:

  1. Простота и минимализм. Эти 2 составляющих — основа философии Go. Разработчики языка программирования придерживаются идеи, что язык должен быть предельно простым для понимания и применения. А фреймворки добавляют сложность, избыточность, которые абсолютно не соответствуют этой философии.
  2. Гибкость. Вместо принудительного использования фреймворков, Гоу предоставляет разработчикам свободу выбора библиотек и инструментов в зависимости от каждого проекта. Это позволяет строить приложения, оптимизированные под решение конкретных задач.
  3. Модульность. Программирование на Go — модульный подход к разработке. Этот подход позволяет импортировать сторонние библиотеки и использовать только те функции, которые действительно нужны в процессе разработчик. То есть модульность минимизирует зависимости.
  4. Множество библиотек. Сообщество Голэнг активно разрабатывает и поддерживает много полезных библиотек и инструментов, которые можно использовать в проектах без необходимости использования фреймворков. Эти библиотеки позволяют реализовать функциональные возможности по типу маршрутизации HTTP, работы с БД, обработки форм и т. п.
  5. Производительность. Гоу изначально разрабатывался с акцентом на высокую скорость работы. Отсутствие больших и тяжеловесных фреймворков способствует более низкому потреблению ресурсов рабочей машины и обеспечивает более быстрый запуск приложений.
<p>Скриншот. Устойчивый сервис на Go / medium.com</p>

Скриншот. Устойчивый сервис на Go / medium.com

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

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

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

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

Легкость освоения для новичков. Основное руководство по Гоу состоит всего из 50 страниц. Это делает язык программирования доступным буквально для каждого, позволяет изучить его даже тем, у кого нет никакого опыта в разработке ПО. Также простой синтаксис и строгость помогают новичкам избегать ошибок.

Много готовых инструментов. Go поставляется с богатым набором инструментов для форматирования, тестирования, создания документации и анализа кода. Это упрощает процесс разработки и уменьшает зависимость от сторонних инструментов.

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

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

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

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

<p>Скриншот. Введение в Golang. Руководство для начинающих / itgap.ru</p>

Скриншот. Введение в Golang. Руководство для начинающих / itgap.ru

Слабые стороны:

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

Чрезмерная простота синтаксиса. Эта простота — и плюс, и минус. Так как некоторые сложные задачи могут потребовать написание большего кода в Go, если сравнивать его с другими языками программирования.

Средняя распространенность. Несмотря на рост популярности, Go остается нишевым языком. Количество вакансий, где работодатель требует знания Go, меньше, чем для других популярных языков программирования по типу Java, Python или C++.

Низкий порог входа. Легкость изучения Go приводит к тому, что очень многие программисты осваивают его, из-за чего наблюдается рост конкуренции.

Востребованность

Хотя Гоу и нишевый язык, на рынке иногда наблюдаются всплески его популярности. На основе данных из опроса на GitHub, в 2021 году Golang попал в ТОП-5 самых востребованных языков и даже опередил C# и PHP. А в первой половине 2023 года Go 10 место в этом же топе.

Если смотреть глобально и мыслить объективно, Голэнг все равно востребован на рынке. Правда, его востребованность может сильно варьироваться в зависимости от региона, отрасли и конкретной компании.

Популярность Гоу подтверждают широко известные проекты, которые были реализованы на базе этого языка программирования. Например:

  • Docker. Это одна из самых известных и широко используемых платформ для контейнеризации приложений. Основная часть Docker (в том числе Engine) написана именно на Go.
  • Kubernetes. Оркестратор контейнеров с открытым исходным кодом, разработанный для управления и автоматизации контейнеризированных приложений. Kubelet и Kubectl — компоненты Kubernetes, написанные на Гоу.
  • Etcd. На Go написано распределенное хранилище ключ-значение в памяти Etcd, используемое для хранения конфигураций и данных в Kubernetes.
  • Prometheus. Система мониторинга с открытым исходным кодом, предназначенная для сбора и анализа метрик приложений и инфраструктуры. Основная и серверная часть Prometheus написаны Go-программистами.
  • Consul. Инструмент для обнаружения и управления сервисами и конфигурациями в распределенных системах. Полностью разработан на Go.
  • InfluxDB. Временная БД с открытым исходным кодом, созданная для хранения и анализа временных данных (например, метрик). InfluxDB полностью написана на Go.
  • Terraform. Инфраструктурный кодовый инструмент, который используется для автоматизации создания и управления инфраструктурой в облаках и на локальных серверах. Он использует Go для разработки своих провайдеров и ядра.
  • Caddy. Веб-сервер с открытым исходным кодом и сервер проксирования, который также обеспечивает автоматическую установку SSL-сертификатов. Caddy написан на Go.
  • Hugo. Генератор статических веб-сайтов, используемый для создания быстрых и простых веб-сайтов. Полностью реализован на Go.
  • Snort. Система обнаружения вторжений (IDS) и их предотвращения (IPS), использует Go для разработки некоторых собственных компонентов.

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

🔥 Бесплатный вебинар о 6 популярных IT-профессиях 🔥

Примерьте IT на себя, узнайте куда легко попасть после 25 лет и получите первый опыт в 2-х IT-специальностях под присмотром опытного эксперта в прямом эфире

Бонус: получите персональный пошаговый план перехода к формату удаленной работы

Реклама. ОАНО ДПО «СКАЕНГ», ИНН 9709022748, erid: LdtCKBHZy

Зарплаты разработчиков

По данным hh.ru средняя заработная плата Гоу-разработчика составляет 120 000 ₽. Если брать общие данные по регионам, то ситуация по зарплатам будет следующей:

  • junior — от 50 000 до 150 000 ₽;
  • middle — от 70 000 до 250 000 ₽;
  • senior — от 180 000 до 588 000 ₽;
  • удаленка — от 70 000 до 588 000 ₽.
<p>Скриншот. Исследование зарплат Golang‑разработчиков. переходите на Go, пока не поздно / skillbox.ru</p>

Скриншот. Исследование зарплат Golang‑разработчиков. переходите на Go, пока не поздно / skillbox.ru

В Европе средний годовой доход программистов, специализирующихся на Go, несколько выше. Он составляет порядка $56 000 в год (примерно 330 000 ₽/мес.). Заработная плата разработчиков напрямую зависит от команды, в которой они работают — чем больше в ней разработчиков, тем выше заработок каждого. Самые высокие зарплаты получают специалисты, трудоустроенные в компаниях с численностью персонала более 10 000 человек.

Наивысший уровень заработной платы для Гоу-программистов предлагают швейцарские работодатели — годовой доход составляет более $90 000 (порядка 540 000 ₽/мес.). За Швейцарией следуют Великобритания, Ирландия, Дания и Норвегия — они в ТОП-5 стран с самыми высокими зарплатами для этой специализации.

Как установить Go и написать первую программу

Для этого нужно выполнить всего 4 шага.

Шаг 1. Загрузка и установка Go

  • Перейдите на официальный сайт Go https.//golang.org/dl/.
  • Скачайте установщик для вашей операционной системы (доступны: MSI для Windows, pkg для macOS и архив для Linux).
  • Установите ПО, следуя инструкциям для вашей операционной системы. Процесс установки такой же, как при установке других программ.

Шаг 2. Проверка установки

После установки Go, откройте терминал (или командную строку) и введите следующую команду, чтобы проверить корректность установки программного обеспечения:

bashCopy code

go version

Вы должны увидеть версию Go, установленную на вашем компьютере.

Шаг 3. Настройка рабочей директории

Go рекомендует использовать одну рабочую директорию для всех ваших проектов. Создайте эту директорию (например, ~/go) и установите переменную среды GOPATH для указания пути к этой директории. Для Linux или macOS:

bashCopy code

export GOPATH=~/go

Если вы используете Windows, установите переменную среды GOPATH в системе через «Параметры системы» → «Дополнительные параметры системы» → «Переменные среды».

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

Шаг 4. Создание и запуск простой программы

В рабочей директории создайте новую директорию для проекта (например, my_first_go_project) и внутри нее создайте файл с расширением .go (например, main.go) и добавьте в него следующий код.

goCopy code

package main import "fmt" func main() { fmt.Println("Привет, мир!") }

Сохраните файл и перейдите в директорию проекта в терминале. Затем выполните следующую команду для сборки и запуска программы:

bashCopy code

go run main.go

Вы должны увидеть вывод «Привет, мир!» в вашей консоли.

Теперь у вас установлен и настроен Go, и вы можете начать писать и запускать программы на этом языке.

<p>Скриншот. Язык Go. что под капотом и зачем программисту учить его как второй / skillbox.ru</p>

Скриншот. Язык Go. что под капотом и зачем программисту учить его как второй / skillbox.ru

Где учиться

Учить Go можно разными способами, включая онлайн-курсы, книги, интерактивные обучающие ресурсы и сообщества разработчиков. Онлайн-курсы — один из наиболее доступных и удобных вариантов. Вот несколько вариантов, где можно найти уроки по Гоу:

  1. Go Tour. Официальный интерактивный Go Tour (https.//tour.golang.org/welcome/1). Здесь собраны уроки и задачи для самостоятельного изучения языка программирования. Отличный способ начать обучение с нуля.
  2. Блоги и видеоуроки на YouTube. На YouTube можно найти множество бесплатных видеокурсов и обучающих материалов по Go, предоставляемых опытными разработчиками.
  3. Онлайн-книги. Существуют бесплатные онлайн-книги по Go (например, «A Tour of Go»), а также платные по типу «The Go Programming Language» от Алана А. Донована и Брайана У. Кернигана.
  4. GitHub и Open Source проекты. Изучение кода в проектах с открытым исходным кодом на GitHub может также быть полезным для понимания принципов программирования на новом для вас языке.
  5. Форумы и сообщества. Присоединитесь к сообществам Go (например, golang.org), чтобы общаться с другими разработчиками, задавать вопросы и получать советы.

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

Итоги

Разрабатывать веб-приложения и десктопные программы на Go просто и интересно. Этот язык программирования востребован как среди российских, так и среди иностранных компаний. Если вы хотите начать свой путь в программировании, Гоу — один из лучших вариантов.

🔥 ТОП-3 курса по разработке на Go в 2024 году

«Golang Developer. Professional» от OTUS — лучший курс для корпоративного обучения

Профессия «Go-разработчик» от Яндекс Практикума — лучший курс для опытных разработчиков

«Backend-разработчик на Go» от SkillFactory — лучший курс с помощью в трудоустройстве

Больше вариантов смотрите в нашей подборке курсов по программированию на Go.

Реклама. ООО «Отус онлайн-образование», ИНН 9705100963, erid: LdtCJyCA3; АНО ДПО «Образовательные технологии Яндекса», ИНН 7704282033, erid: 5jtCeReNwxHpfQTDve31wmc; ООО «Скилфэктори» , ИНН:9702009530, erid: LatgBV3Ep

Реклама: ОАНО ДПО «СКАЕНГ», «Отус онлайн-образование», АНО ДПО «Образовательные технологии Яндекса», ООО «ГикБреинс»

33
1 комментарий

Говорится, что десктопные приложения не пишутся, а в итогах - пишутся...

1