Проект Go с открытым исходным кодом, который возник в Google, достиг своей третьей годовщины, и это хороший момент, чтобы спросить: откуда взялся Go? Где он сейчас? Куда он направляется?
Третий день рождения Go 10 ноября 2012 года был отмечен сообщением в блоге языка программирования Go, в котором говорилось о том, как далеко он продвинулся с тех пор, как был объявлен в ноябре 2009 года в качестве экспериментального языка, который:
сочетает в себе скорость разработки при работе на динамическом языке, таком как Python, с производительностью и безопасностью скомпилированного языка, такого как C или C++.
Изначально Go был внутренним проектом Google, инициированным Робом Пайком, Робертом Гриземером и Кеном Томпсоном, соавтором с Деннисом Ричи как Unix, так и языка программирования C.
Go берет свой основной синтаксис из C — блоки кода окружены фигурными скобками, а его поток управляющих структур включает в себя for, switch и if. Согласно его часто задаваемым вопросам, он также имеет значительный вклад от семейства Pascal/Modula/Oberon в виде объявлений и пакетов.
Часто задаваемые вопросы также объясняют обоснование создания нового языка:
Go родился из-за разочарования в существующих языках и средах для системного программирования. Программирование стало слишком сложным, и отчасти в этом был виноват выбор языков. Нужно было выбрать либо эффективную компиляцию, эффективное выполнение, либо простоту программирования; все три не были доступны на одном и том же основном языке. Программисты, которые могли бы, предпочли легкость безопасности и эффективности, перейдя на динамически типизированные языки, такие как Python и JavaScript, а не на C++ или, в меньшей степени, на Java.
Go-это попытка объединить простоту программирования интерпретируемого, динамически типизированного языка с эффективностью и безопасностью статически типизированного, скомпилированного языка. Он также стремится быть современным, с поддержкой сетевых и многоядерных вычислений. Наконец, он должен быть быстрым: создание большого исполняемого файла на одном компьютере должно занять не более нескольких секунд.
По словам Роба Пайка, именно потребность в большей скорости была первоначальной мотивацией для Go:
«Отправной точкой было длительное время компиляции—для некоторых наших крупных программ в Google время сборки может быть неоправданно долгим, даже с нашими большими распределенными кластерами компиляции. Управление зависимостями (или их отсутствие) в C и C++ приводит к тому, что слишком много кода проходит через компилятор.»
Можно сказать, что Go был задуман в ожидании большой компиляции.»
Отличительной особенностью Go является поддержка параллелизма. В своем выступлении на Google I/O 2012, посвященном шаблонам параллелизма Go, Роб Пайк начал с объяснения предыстории этой функции.
Основополагающей работой по параллелизму, согласно Пайку, является статья Тони Хоара 1978 года «Коммуникация последовательных процессов». Отсюда произошли такие языки, как Оккам и эрланг, а также два языка, в которых участвовал сам Пайк, — Newsqueak и Limbo.
В марте 2012 года Go достигла важной вехи с выпуском первой стабильной версии Go 1. Это также был первый выпуск, доступный в поддерживаемых двоичных дистрибутивах, и первый, который был доступен для Windows, а также Linux, FreeBSD и Mac OS X.
Теперь доступна интерактивная экскурсия по Go, чтобы новые или потенциальные пользователи могли испытать, на что это похоже. с программами, которые предназначены в качестве отправной точки для дальнейших экспериментов.
Go продолжает использоваться Google, и в сообщении в блоге на третий день рождения упоминаются некоторые способы его использования. Примечательными примерами являются:
обслуживание Chrome и других загрузок
масштабирование базы данных MySQL на YouTube
Также недавно запущенный сайт Jam with Chrome обслуживается Go. programs.
Другие компании и проекты, использующие Go, включают BBC Worldwide, Canonical, CloudFlare, Heroku, Iron.io, Novartis, SoundCloud, SmugMug, StatHat, Tinkercad. Четыре из этих компаний делятся своим опытом использования Go в производственных средах в этом видео из Google I/O 2012:
Итак, что же ждет нас в наступающем году?
Версия 1.1 ожидается в 2013 году с «некоторыми новыми функциями», но в остальном просто лучшей производительностью.
До сих пор команда программистов I скептически относилась к необходимости новых языков, и Google также представила Dart, свою альтернативу JavaScript. Тем не менее, мы согласны с идеей о том, что языки программирования должны быть веселыми и эффективными, и команда Go очень хорошо подходит для того, чтобы предположить, что Go обладает этими качествами.
Если вы хотите узнать больше, посмотрите это видео, в котором Расс Кокс дает нам экскурсию с кодом по трем аспектам Go, которые делают его быстрым, веселым и продуктивным — Интерфейс, отражение и параллелизм: