Go (Golang) — это компилируемый многопоточный язык программирования от Google с открытым исходным кодом. Считается языком общего назначения, но основное применение — разработка веб-сервисов и клиент-серверных приложений. По данным GitHub, к концу 2023 года стал шестым по востребованности языков, опередив PHP, C и C#.
Как появился Golang
Язык Go был представлен в 2009 году в корпорации Google. Его полное название — Golang — производное от «Google language». Язык создали Роб Пайк и Кен Томпсон. Они работали в лаборатории Bell Labs, выпустившей операционную систему UNIX и языки программирования C и C++, транзистор, лазер, кварцевые часы.
Цель проекта — создать современную альтернативу C и C++ и сделать разработку ПО в Google более быстрой.
Язык должен был решить такие проблемы, как:
- медленная сборка программ;
- неконтролируемые зависимости;
- использование программистами различных подмножеств языка;
- трудности с пониманием программ — из-за сложного синтаксиса, плохого документирования;
- дублирование разработок;
- высокая стоимость обновлений;
- сложности разработки инструментария;
- плохое межъязыковое взаимодействие.
В основе языка Golang — база лучших функций из языков C и C++, Python, Pascal, Oberon и Modula. Сначала Go использовали внутри Google, но затем он стал применяться в компаниях по всему миру: HP, Adobe, Microsoft, BBC, Uber, Dropbox, Netflix, Яндекс, ВКонтакте, Avito, Ozon и других.
Особенности языка Golang
Компилируемость
Исходный код преобразуется в машинный с помощью компилятора. Официальный компилятор Golang работает в UNIX-подобных операционных системах, включая macOS, а также в Linux и Windows. Среди мобильных ОС компилятор Go поддерживает Android. Существуют также независимые компиляторы, созданные сторонними разработчиками.
Многопоточность
Поддержка нескольких потоков по умолчанию упрощает написание кода для мощных приложений. Для этого в языке программирования Go есть горутины и каналы.
Горутины (goroutine) — параллельные операции, которые могут выполняться независимо от функции, в которой запущены. Как правило, горутины представляют вызов функции и последовательно выполняют свои инструкции. Во время запуска программы на Go мы уже работаем как минимум с одной горутиной. Она представлена функцией main и последовательно выполняет инструкции, определенные внутри нее. Чтобы создать горутину, нужно написать перед ней go.
Если какие-то горутины завершились раньше функции main, можно увидеть на консоли результат выполнения. Но независимо от количества горутин главной является вызов функции main. Если ее выполнение завершается, то завершается выполнение всей программы.
Каналы — инструменты для коммуникации между горутинами и синхронизации их выполнения. Позволяют записывать и считывать один тип данных. Есть очередь и блокировка.
Благодаря многопоточности язык Golang подходит для создания приложений с микросервисной архитектурой. Так называют подход, при котором большая программа разделяется на множество маленьких независимых модулей — микросервисов.
Строгая статическая типизация
При создании переменной тип данных объявляется сразу — например, строка или число. За все время существования переменная может принимать значение только указанного типа. Неиспользуемые переменные определяются как ошибка компиляции. Благодаря явному указанию зависимостей код легко собирать из составных частей, что облегчает разработку крупных проектов.
Понятный и простой синтаксис
Нет объектов, классов и наследования, которые усложняют код и его изменения. Он доступен новичкам и прост в изучении. Официальное руководство Go занимает всего 50 страниц, просто читается и содержит примеры.
Также упрощенный синтаксис позволяет быстро прочитать чужой код — слева направо. Стандарты, обозначения или комментарии не требуются. Это важно в командной работе.
Пример кода:
package main import "fmt" func main() { fmt.Println("Hello, World!") }
Инструменты для разработчиков
В 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.
0 комментариев