Go, бесплатный язык с открытым исходным кодом, созданный в Google, впервые появился 10 ноября 2009 года. Так что сейчас ему семь лет.
Изначально Go был внутренним проектом Google, инициированным Робертом Гриземером, Робом Пайком и Кеном Томпсоном. Когда впервые был объявлен экспериментальный язык, который:
сочетает в себе скорость разработки при работе на динамическом языке, таком как Python, с производительностью и безопасностью скомпилированного языка, такого как C или C++
он вызвал значительный ажиотаж и в течение двух месяцев стал языком ТИОБЕ года.
Как вы можете видеть из индекса TIOBE, его популярность возросла совсем недавно, и с ноября прошлого года он поднялся с 48-го места на 13-е, так что в настоящее время он находится на самой высокой позиции, а самая низкая точка была 122 в мае 2015 года.
Предыдущий максимум для Go был в ноябре 2013 года, когда он достиг возраста 4 лет и получил степень зрелости, а также среду кросс-платформенной разработки с открытым исходным кодом LiteIDE.
Так заслуживает ли Go своей нынешней популярности?
Хотя поначалу мы скептически относились к тому, что нам нужен другой язык, Майк Джеймс из I Programmer быстро стал новообращенным, и следующие моменты взяты из его серии из 3 частей, Руководства программиста по работе с LiteIDE:
Go-это простой в использовании, но удивительно мощный язык. Вы могли бы назвать это современной версией С. Он имеет чистую и простую структуру, которая, как говорят, статически типизирована. но он ведет себя как динамически типизированный язык. Он также компилируется в машинный код, но с ним так же легко работать, как с интерпретируемым языком.
Go использует совершенно иной подход к объектам, чем объектно-ориентированные языки на основе классов, с которыми знакомо большинство программистов. Вы не определяете класс, а затем используете его для создания экземпляра объекта, и нет иерархии типов. Также нет наследования, нет перегрузки функций и… Если все это звучит так, как будто Go окажется примитивным языком низкого уровня, подумайте еще раз. Его подход лучше всего описать как низкоуровневый, но он также довольно сложный.
Go славится своим простым в использовании подходом к параллелизму-это часть языка … его goroutines и каналы работают вместе, чтобы организовать параллелизм и параллелизм.
С момента своего 4-го дня рождения Go продолжает вносить улучшения с каждым последующим выпуском. В версии 1.3, выпущенной в июне 2014 года, была улучшена производительность, улучшены инструменты и поддержка запуска Go в новых средах. Поддержка Android была добавлена в декабре 2014 года в версии 1.4. Для Go 1.5, единственного выпуска в 2015 году, компилятор и среда выполнения были полностью написаны на Go, и был введен улучшенный сборщик мусора, что способствовало повышению скорости компиляции, что в первую очередь было основным обоснованием для Go. В интервью 2010 года Роб Пайк объяснил:
«Отправной точкой было длительное время компиляции—для некоторых наших крупных программ в Google время сборки может быть неоправданно долгим, даже с нашими большими распределенными кластерами компиляции. Управление зависимостями (или их отсутствие) в C и C++ приводит к тому, что слишком много кода проходит через компилятор.
Можно сказать, что Go был задуман в ожидании большой компиляции.»
Сообщение Семь лет блога Go on the Go отмечает свою последнюю годовщину и сообщает о том, что произошло за последний год:
Сегодня исполняется семь лет с тех пор, как мы открыли наш предварительный набросок Go. С помощью сообщества с открытым исходным кодом, включающего более тысячи отдельных участников репозиториев исходных текстов Go, Go превратился в язык, используемый во всем мире.
Наиболее значительными изменениями, с которыми столкнулся пользователь за последний год, являются добавление встроенной поддержки HTTP/2 в Go 1.6 и интеграция контекстного пакета в стандартную библиотеку в Go 1.7. Но мы сделали много менее заметных улучшений. Go 1.7 изменил компилятор x86-64, чтобы использовать новый сервер на основе SSA, что повысило производительность большинства программ Go на 10-20%. Для Go 1.8, запланированного к выпуску в феврале следующего года, мы изменили компиляторы для других архитектур, чтобы также использовать новый сервер. Мы также добавили новые порты для Android на 32-разрядной x86, Linux на 64-разрядной MIPS и Linux на системах IBM z. И мы разработали новые методы сбора мусора, которые сокращают типичные паузы “остановить мир” до менее чем 100 микросекунд. (Сравните это с большой новостью Go 1.5 в 10 миллисекунд или меньше.)
Так стоит ли вам думать об использовании Go для вашего следующего проекта?
Если крупномасштабная скорость-это то, что имеет для вас значение, очень возможно. Проекты, построенные на Go, включают Docker, так что вы будете в хорошей компании.