- Зачем нам Golang, если есть С?
- Golang
- Как появился Golang
- Особенности языка
- Компилируемость
- Многопоточность
- Строгая статическая типизация
- Понятный и простой синтаксис
- Инструменты для разработчиков
- Наличие «сборщика мусора»
- Кроссплатформенность
- Нехватка конструкций для ООП
- Полная поддержка Unicode
- Как установить и начать использовать Go
Зачем нам Golang, если есть С?
Пока кто-то в 2007 подпевал Animal ДжаZ, в Google шла работа над новым языком программирования — Golang. Предполагалось, что он поможет сотрудникам компании сделать разработку ПО быстрой. Это некий упрощенный аналог С и С++ для тех, кто занимается web-разработкой.
В основном его используют в таких сферах, как сетевое программное обеспечение и утилиты (например, такая маленькая утилита как Kubernetes). Микросервисы на Go разрабатываются легко и органично, а вот с монолитами сложнее. Этим и обусловлен его выбор для современного бэкэнда.
Язык еще молодой, поэтому, конечно, есть противники среди приверженцев старой школы. Но если отбросить эмоции, стоит ли вообще изучать Go?
В 2009 году миру презентовали Golang. В 2012 он пошел в массы.
После первого релиза прошло почти 13 лет, и сейчас Go входит в двадцатку самых востребованных языков программирования. Сейчас на нем пишут примерно 2,7 млн разработчиков.
Динамику популярности можно проследить на этом графике.
Особой популярностью Go пользуется в Азии. Согласно исследованиям, в Китае им интересуются чаще всего.
По последним данным, в России насчитывается около 35 тыс. Go-разработчиков. Сравнительно немного, но если смотреть в масштабах будущего, то здесь есть огромный потенциал для того, чтобы влететь и стать ценным специалистом.
На сайте hh.ru сейчас можно найти более 1500 вакансий по запросу “Разработчик Go” и ещё 1100 — по запросу “Разработчик golang”.
Пока что спрос на специалистов по Go превышает предложение. На рынке их не так много, а вот компаний, ведущих разработку на Golang хватает.
Вообще Golang универсален и предоставляет набор инструментов для решения почти любых задач, но его сильная сторона — это web и многопоточные приложения.
Go очень быстрый и потребляет мало памяти. А это как раз то, что надо когда дело касается организации совместной работы пользователей на разных компьютерах.
Приложения на Go работают быстрее за счет нативной компиляции. Многопоточность встроена в язык нативно и без внешних костылей, код легко пишется и модифицируется. Именно поэтому многие компании переводят свои сервисы на этот язык.
Главное предназначение Go — некрупные сервисы. За счет принципа простоты Go на нем трудно писать большие приложения (как на Java). Получается, что его парадигма обеспечивает разработку ограниченного функционала и небольшой кодовой базы одного приложения. Так сказать Unix-way — одно приложение должно делать одну задачу и делать ее хорошо. Поэтому он отлично подходит для консольных утилит и микросервисных приложений.
Go используют банки для построения масштабируемых клиентоориентированных сервисов с меньшими затратами на инфраструктуру.
Благодаря минимальному оверхеду и компилируемости в машинный код, Go используют для мониторинга и сбора аналитики, обработки аналитики, написания утилит хелперов, а также в облачной инфраструктуре.
Как мы уже говорили выше, Go — это язык, который отлично подходит для веб-разработки. У него не такой широкий спектр применения, как у С и С++. Но зато он упрощает работу с вебом.
Поэтому его чаще используют компании, в которых основной функционал — это web.
- Ozon
- НР
- Dell
- Lamoda
- Ситимобил
- ВКонтакте
- Яндекс
- Avito
- Microsoft
Список можно продолжать долго. К слову, многие из перечисленных компаний внедрили Golang сразу после его презентации.
Идеальным быть невозможно, поэтому и у Golang есть и плюсы, и минусы. Главная фишка этого языка заключается в том, что он довольно простой и быстрый — именно для этого он и разрабатывался.
- Go придерживается минимализма. Именно поэтому его легко выучить, на нем легко писать. Особенно, если вы ранее уже имели дело с разработкой.
- Простой синтаксис и маленькое количество ключевых слов.
- Есть встроенные инструменты для исправления ошибок.
- Быстро компилируется. Запускается почти мгновенно, поэтому вам не придется долго ждать процесса компиляции.
- Есть большое количество библиотек.
- Упрощенный синтаксис — это и плюс, и минус одновременно. Не хватает современных ООП-конструкций.
- Не подходит для разработки крупных проектов.
Громких слов о том, что за Golang будущее не будет. Объективно он не сможет заменить тот же С, С++ или Java. Но это неплохой язык для web-разработки и простых задач.
Golang
Go (Golang) — это компилируемый многопоточный язык программирования от Google с открытым исходным кодом. Считается языком общего назначения, но основное применение — разработка веб-сервисов и клиент-серверных приложений. По данным GitHub, в конце 2021 года вошел в пятерку востребованных языков, опередив PHP, TypeScript и C#.
«IT-специалист с нуля» наш лучший курс для старта в IT
Как появился Golang
Язык Go был представлен в 2009 году в корпорации Google. Его полное название — Golang — производное от «Google language». Язык создали Роб Пайк и Кен Томпсон. Они работали в лаборатории Bell Labs, выпустившей операционную систему UNIX и языки программирования C и C++, транзистор, лазер, кварцевые часы.
Цель проекта — создать современную альтернативу C и C++ и сделать разработку ПО в Google более быстрой.
Попробуйте 9 профессий за 2 месяца и выберите подходящую вам
Язык должен был решить такие проблемы, как:
- медленная сборка программ;
- неконтролируемые зависимости;
- использование программистами различных подмножеств языка;
- трудности с пониманием программ — из-за сложного синтаксиса, плохого документирования;
- дублирование разработок;
- высокая стоимость обновлений;
- сложности разработки инструментария;
- плохое межъязыковое взаимодействие.
В основе языка Golang — база лучших функций из языков C и C++, Python, Pascal, Oberon и Modula. Сначала Go использовали внутри Google, но затем он стал применяться в компаниях по всему миру: HP, Adobe, Microsoft, Facebook, BBC, Uber, Dropbox, Netflix, Яндекс, ВКонтакте, Avito, Ozon и других.
Особенности языка
Компилируемость
Исходный код преобразуется в машинный с помощью компилятора. Официальный компилятор Golang работает в UNIX-подобных операционных системах, включая macOS, а также в Linux и Windows. Среди мобильных ОС компилятор Go поддерживает Android. Существуют также независимые компиляторы, созданные сторонними разработчиками.
Многопоточность
Поддержка нескольких потоков по умолчанию упрощает написание кода для мощных приложений. Для этого в языке программирования Go есть горутины и каналы.
Горутины — параллельные операции, которые могут выполняться независимо от функции, в которой запущены. Как правило, горутины представляют вызов функции и последовательно выполняют свои инструкции. Во время запуска программы на Go мы уже работаем как минимум с одной горутиной. Она представлена функцией main и последовательно выполняет инструкции, определенные внутри нее. Чтобы создать горутину, нужно написать перед ней go.
Если какие-то горутины завершились раньше функции main, можно увидеть на консоли результат выполнения. Но независимо от количества горутин главной является вызов функции main. Если ее выполнение завершается, то завершается выполнение всей программы.
Каналы — инструменты для коммуникации между горутинами и синхронизации их выполнения. Позволяют записывать и считывать один тип данных. Есть очередь и блокировка.
Благодаря многопоточности язык Golang подходит для создания приложений с микросервисной архитектурой. Так называют подход, при котором большая программа разделяется на множество маленьких независимых модулей — микросервисов.
Курс для новичков «IT-специалист
с нуля» – разберемся, какая профессия вам подходит, и поможем вам ее освоить
Строгая статическая типизация
При создании переменной тип данных объявляется сразу — например, строка или число. За все время существования переменная может принимать значение только указанного типа. Неиспользуемые переменные определяются как ошибка компиляции. Благодаря явному указанию зависимостей код легко собирать из составных частей, что облегчает разработку крупных проектов.
Понятный и простой синтаксис
Нет объектов, классов и наследования, которые усложняют код и его изменения. Он доступен новичкам и прост в изучении. Официальное руководство Go занимает всего 50 страниц, просто читается и содержит примеры.
Также упрощенный синтаксис позволяет быстро прочитать чужой код — слева направо. Стандарты, обозначения или комментарии не требуются. Это важно в командной работе.
Пример кода: package main import «fmt» func main()
Инструменты для разработчиков
В Go есть инструменты, которые ускоряют разработку и помогают решать разные задачи:
- typecheck проверит соответствие типов в коде;
- gas найдет уязвимости;
- go vet поможет обнаружить ошибки в коде;
- gofmt правильно отформатирует код, проставит пробелы для выравнивания и табы для отступа;
- godoc найдет комментарии и подготовит из них мануал к программе, и другие.
Также в Go от Google есть пакет pprof. Он позволяет узнать, какие фрагменты кода выполняются очень долго, где программа сильно нагружает процессор или занимает много памяти. Результат работы представлен в виде текстового отчета, профайла. Для его использования нужна утилита graphviz.
Наличие «сборщика мусора»
Это алгоритм, который сканирует код, находит объекты, замедляющие его работу, и удаляет их. «Сборщик мусора» обеспечивает высокую скорость исполнения программ и эффективное использование ресурсов. В некоторых языках общего назначения «сборщиков мусора» нет и память приходится очищать вручную — как, например, в C++.
Кроссплатформенность
Язык от Google поддерживается на Windows, Linux, macOS, Android. Также он работает с FreeBSD, OpenBSD и другими UNIX-системами. Код также обладает переносимостью: программы, написанные для одной из этих операционных систем, могут быть легко с перекомпиляцией перенесены на другую ОС.
Нехватка конструкций для ООП
Язык Go поддерживает не все возможности объектно-ориентированного программирования. Например, в нем нет классов и наследования. Это тоже намеренное решение для упрощения кода, чтобы добиться минимума избыточности и обеспечить высокую скорость исполнения программ.
Полная поддержка Unicode
Кодировка символов Unicode — самая полная из существующих, в нее входят практически все знаки и буквы, которые есть в мире. Многие языки требуют подключать поддержку этой кодировки отдельно, но в Go строковые данные по умолчанию представлены в Unicode.
Как установить и начать использовать Go
Скачать библиотеки, компилятор, инструменты для языка программирования Golang для разных платформ можно на официальном сайте: представлены сборки для Windows, Linux, MacOS. Также можно скомпилировать исходные файлы на операционных системах OpenBSD, FreeBSD, DragonFly BSD, Android, Solaris и других.
Для написания кода можно использовать:
- текстовый редактор с автодополнением, подсветкой синтаксиса Go, компиляцией и отладкой — например, в Vim, Notepad++, Emacs;
- универсальную среду разработки (IDE): NetBeans, Eclipse, IntelliJ, Zeus, Codebox IDE, Komodo,Visual Studio и другие;
- специализированную среду разработки для Golang. Например, GoLand или LiteIDE.
Go подходит начинающим разработчикам в качестве первого языка. Он простой, защищает от ошибок и дает подсказки. При этом Golang – мощный и очень востребованный язык, который поддерживает Google.
Наш лучший курс для старта в IT. За 2 месяца вы пробуете себя в девяти разных профессиях: мобильной и веб-разработке, тестировании, аналитике и даже Data Science — выберите подходящую и сразу освойте ее.