Языку программирования Go исполнилось 10 лет
Языку программирования Go исполнилось 10 лет

Десять лет назад компания Google представила многопоточный компилируемый язык программирования Go, или Golang. Разработчики не рассчитывали на успех предприятия, но надеялись привлечь внимание к особому способу структурировать выполнение кода.
Рассказываем, как развивался Go, и почему стоит его изучить.
Как все начиналось
Язык программирования создали разработчики Кен Томпсон, Роб Пайк и Роберт Гризмер внутри компании Google. Томпсон внес огромный вклад в разработку языка С, а также в создание ОС Unix. Пайк написал для Unix графический терминал Blit, а также в соавторстве с Брайаном Керниганом выпустил фундаментальные книги «Практика программирования» и «UNIX. Программное окружение».
Первая версия Go появилась как собственный язык для ОС Inferno и облачного ПО. Но со временем Go стал полноценным языком программирования. Язык активно используют облачные провайдеры, на нем удобно создавать высокоэффективные программы для многоядерных процессоров и распределенных систем.
Особенности языка
Go – язык с С-подобным синтаксисом и строгой типизацией. Для пользовательских типов используется неявная «утиная типизация», как в Python, JavaScript или Ruby. В Go можно использовать указатели, но без адресной арифметики для них. Реализованы готовые динамические массивы, срезы, хеш-таблицы. Есть циклы для обхода коллекций и строковый типы с интегрированной поддержкой юникода.
Формально Go – объектно-ориентированный язык, но наследовать здесь можно только интерфейсы. Так что правильнее считать его языком процедурным, но с поддержкой интерфейсов. Кроме того, в Go доступны средства функционального программирования – передача функций как параметров, возврат функциональных значений, замыканий и неименованные функции.
Главная особенность Go – горутины. Горутины – потоки, встроенные в язык, с которыми можно взаимодействовать через каналы. Реализованы и другие инструменты для многопоточного программирования. Благодаря горутинам язык успешно справляется с многозадачностью и позволяет масштабировать приложения при росте количества ядер процессора. Новые потоки эффективно используют память. Миллионы горутин можно прокручивать вместо потоков. Они быстрее и безопаснее обмениваются данными, позволяют обойтись без блокировки мьютексов. К тому же одна горутина может запускаться в нескольких потоках. Также горутины можно объединять в небольшое количество потоков операционной системы.
Классов в Go нет. Любая программа состоит из пакетов и модулей, к тому же функции в Go могут возвращать несколько значений. Начать работать с Go просто, а опытных разработчиков приятно удивит количество и качество «синтаксического сахара». Управление памятью в Go автоматическое, есть сборщик мусора.
На Go сложно «выстрелить себе в ногу»: от всего потенциально опасного разработчики отказались. Например, убрали переопределение функций и методов, затратные вставки элементов в середину массива, отрицательные индексы, наследование реализаций и др. Наконец, Go запускается прямо на железе. С одной стороны, это низкоуровневый язык с максимальной производительностью и отличным сборщиком мусора. С другой – он простой и безопасный, поэтому код на Go легко поддерживать.
Поддержка Go
Для Go создали набор инструментов разработки gc, который уже поддерживают Windows, Linux, macOS, Android, а также FreeBSD, OpenBSD, DragonFly BSD и другие системы. В наборе – средства компиляции, тестирования и управления пакетами, а также вспомогательные утилиты. Набор компиляторов gcc поддерживает новый язык, причем существует несколько независимых реализаций. Есть компилятор gccgo с рекурсивным парсером, который совмещен со стандартным бэк-эндом gcc.
Развиваются и независимые проекты. К примеру, на самом Go сделали прослойку llgo для компиляции Go в llvm. Google поддерживает проект gollvm для компиляции Go через систему компиляторов LLVM. Запускать программы на Go также можно с помощью интерпретатора SSA interpreter.
Более современный вариант – IDE (интегрированные среды разработки). Помимо проприетарной GoLand, которую на платформе IntelliJ разработала компания JetBrains, есть бесплатная LiteIDE. Кроме того, поддержку Go внедрили в популярные среды Eclipse, NetBeans, IntelliJ, Komodo, CodeBox IDE, Visual Studio, Zeus и т.д. Подсветка синтаксиса добавлена в Emacs, Vim, Notepad++, jEdit и других.
Источник: https://infostart.ru/journal/news/tekhnologii/yazyku-programmirovaniya-go-ispolnilos-10-let_1153767/
См. также
10 стартапов в области машинного обучения, за которыми стоит следить в 2021 году
18.01.2021 758 SKravchenko 0
Fujifilm и IBM создали ленточный накопитель с рекордным объемом памяти
13.01.2021 1258 user-programmist 0
Эксперты назвали 10 навыков для ИТ-специалистов, которые обеспечат прибавку к зарплате
12.01.2021 1450 user1015646 2
Microsoft и МТС планируют совместно развивать российский интернет вещей
28.12.2020 1233 user-programmist 1
Cloudflare станет хостинг-провайдером для статических сайтов JAMstack
25.12.2020 1154 VKuser24342747 0
Составлен рейтинг приложений для предустановки на смартфоны и умные ТВ
23.12.2020 1393 user1015646 4