Все основные языки программирования базируются на парадигмах прошлого столетия.
Эти языки имеют определенные существенные ограничения, такие как GIL (Global Interpreter Lock), которое является одним из ограничений любого решения на Python или Ruby. GIL позволяет выполняться только одной вещи за раз. Когда вы создаете потоки и они ”выглядят” как параллельно выполняющиеся, на самом деле интерпретатор выполняет инструкции последовательно. Это означает, что один процесс может использовать только один CPU.
Веб-приложения любого значительного масштаба обязательно требуют возможность обслуживания запросов параллельно, используя возможности каждого имеющегося у машины CPU. Пока единственным возможным решением остается запуск нескольких экземпляров приложения как отдельных процессов.
Также стоит отметить, что вычислительная архитектура сильно изменилась. Компьютеры стали намного быстрее, появились многоядерные процессоры и для реализации высоконагруженных систем компанией Google был разработан новый язык программирования Go (golang).
Golang отвечает современным требованиям и позволяет эффективно реализовать многие фундаментальные задачи, включая “сборку мусора” и параллельное вычисление. Язык Go отличается необычно быстрой компиляцией, а также представляет собой модель для построения программного обеспечения, которая упрощает анализ зависимостей и позволяет избежать значительных издержек ‘C’-стиля.

Intro to google Go programming

Язык программирования Go компилируемый, программы написанные на нем работают намного быстрее чем на интерпретируемых языках программирования.
Стандартный компилятор Go называется gc, в его состав входят программы для компиляции (5g, 6g, 8g), для компоновки (51, 61, 81), а также godoc для просмотра документации.
Название были даны в соответствии с соглашениями об именовании компиляторов в OS Plan 9, где цифра определяет аппаратную конфигурацию (‘5’ - ARM, ‘6’ - AMD64, ‘8’ - Intel 386). Пользоваться напрямую этими инструментами нет необходимости, так как более высокоуровневый инструмент для сборки go автоматически выбирает нужный компилятор и компоновщик.
Модули и библиотеки в языке Go называются пакетами. Пакеты распространяемые с Go образуют стандартную библиотеку языка Go.
Документацию можно просматривать локально, запустив в терминале команду godoc с аргументами сообщающими ей, что она должна работать в качестве веб-сервера:
$ godoc -http=:8000
Номер порта указан произвольно, можно указать любой свободный порт. Для просмотра документации нужно запустить веб-браузер и ввести адрес:
http://localhost:8000/
На открывшейся веб-странице по ссылке Packege расположена документация по стандартной библиотеке Go.
Команда godoc также позволяет просматривать документацию непосредственно в консоли, для всего пакета:
$ godoc compress/gzip
или его элемента:
$ godoc compress/gzip Writer
В комплект Go входит инструмент cgo с помощью которого можно использовать внешний программный код на языке C.
Исходный код программы на языке Go - текст UTF-8. Ключевые слова и операторы записываются символами ASCII, а идентификаторы могут начинаться с любых алфавитных символов Unicode и содержать любые алфавитные символы Unicode и цифры.
Язык Go позволяет создавать сценарии в Unix-подобных системах, например для решения задач системного администрирования. Для того, чтобы любую программу можно было оформить в виде сценария нужно установить дополнительную утилиту, которая будет выполнять компиляцию и запуск программы, например gorun, а в самом начале файла с расширением ‘.go’ добавить строку: #!/usr/bin/env gorun. Данный файл обязательно должен содержать функцию main() в пакете main, а также иметь права на выполнение (chmod +x).
В дальнейшем такие файлы можно скомпилировать только утилитой gorun, так как строка #! не является синтаксической строкой стандартного компилятора языка Go.
При первом запуске команда gorun скомпилирует файл и запустит его. При последующих вызовах перекомпиляция будет осуществляться только в случае если исходный файл изменялся с момента последней компиляции.
Сборка программ на языке Go выполняется инструментом go в два этапа: компиляция и компоновка.
Как установить в операционной системе Ubuntu среду разработки Go и написать программу hello, world описано в статье Go: hello, world for Ubuntu Linux.
Компилятор go способен собирать и устанавливать не только локальные программы и пакеты, но и загружать, собирать, и устанавливать сторонние программы и пакеты.
Команда go install выполняет те же действия, что и go build, но помещает выполняемые файлы в стандартный каталог ($GOPATH/bin), путь к которому указан в переменной PATH.
Переменная GOPATH может содержать несколько путей к каталогам, разделенных двоеточием.
Кроме стандартной утилиты go можно использовать утилиту make и другие альтернативные инструменты, но удобнее вести разработку и собирать программы в интегрированной среде разработки (IDE), например GoLand от компании JetBrains.
Комментарии в языке Go оформляются в стиле языка C++ : однострочные начинаются с символов //, а многострочные заключаются в символы /* ... */.
Любой пакет программного кода должен быть включен в пакет, а каждая программа должна иметь пакет main с функцией main(), которая является точкой входа в программу.
Пакеты на языке Go могут иметь функцию init(), которая выполняется перед функцией main(). В языке Go допускается использовать различные имена для имени функции и имени пакета.
Для модульного построения приложения целесообразно функциональность распределять по нескольким пакетам.
В языке Go пакет можно размещать в нескольких файлах. Если объявление пакета одинаково во всех файлах, то Go считает их одним пакетом.

Go to Golang tutorial