Язык программирования Go. Урок 1. Настройка окружения (Ubuntu + Go + Sublime Text 3 + GoSublime + Gocode) и первый Hello, world!

















Приветствие
Привет всем. Это мой первый топик на Дафтере, прошу судить не слишком строго.

Итак. Я решил написать серию уроков по языку программирования Go для не новичков в программировании. Информация в сети есть, но она меня не сильно устроила тем, что большинство из неё — англоязычная, а на русском есть только несколько статей и книга. Книга хорошая, но сойдет больше за справочник, нежели за учебник, на мой взгляд.

К тому же, написание этих уроков поможет мне самому систематизировать знания в моей голове.

В уроках будут преподноситься основы языка и некоторые приемы, а в конце реализация какой нибудь практичной вещи на этом языке :) Поехали :)



Язык Go
Официальный символ

Язык программирования Go или, как советуют писать в поисковых запросах и тегах, Golang является компилируемым в нативный код, ориентированным на многопоточность и кросспратформенным языком программирования с внутренним механизмом сборки мусора, который разработала компания Google.

Разработка мотивировалась тем, что в настоящее время большинство современных языков программирования не являются «современными». С ростом производительных мощностей и количества ядер вычислительных машин, необходимо сделать упор на параллельную обработку данных, а так-же на скорость исполнения кода и простоту его написания. Все эти требования побудили разработчиков из Google создать свой язык программирования, который бы удовлетворял все эти требования.

Но не будем сильно вникать в формальности и историю, все это можно самому прочитать в сети.

Почему я выбрал его? За простоту синтаксиса, компиляцию в нативный код, легкость в параллелизме и синхронизации (основана на каналах) и конечно — кроссплатформенность, причем настоящую. Любой код, написанный на этом языке (без специфичных сторонних библиотек) можно скомпилировать под FreeBSD, OpenBSD, Linux, Mac OS X и Windows. Все системные вызовы и привязка к платформе спрятана в стандартных библиотеках, которые для каждой платформы — свои.



Устанавливаем язык
Я буду рассказывать как установить язык (компилятор, стандартные библиотеки, документацию и вспомогательные утилиты) в систему на примере Ubuntu 12.04. Не думаю, что для производных и других дистрибутивов, основанных на ядре Linux будут существенные отличия.



Для начала — скачаем Go с официальной страницы закачек на GoogleCode. Не советую использовать пакеты из репозиториев дистрибутивов, потому что нам нужна самая свежая версия.

Итак, скачиваем архив для своей системы — 386 или amd64 для систем x86 и x64 соответственно.

После чего переходим в каталог, куда был скачан файл и извлечем все файлы из архива:

tar -C /usr/local -xzf go1.2.linux-amd64.tar.gz


Могут потребоваться права суперпользователя. Советую производить распаковку именно в этот каталог, так будет проще настроить работу Gocode, который нам понадобиться для настройки GoSublime.

После распаковки добавим в к переменной окружения PATH путь к каталогу исполняемых файлов компилятора и утилит, которые мы только что извлекли. Для этого выполним следующую команду:

export PATH=$PATH:/usr/local/go/bin


Для того, чтобы не делать этого при каждой загрузке системы, необходимо добавить путь /usr/local/go/bin в файл /etc/environment через двоеточие к переменной PATH, с помощью любого текстового редактора.

Создадим в домашнем каталоге папку, которая будет содержать все наши проекты, а так-же папки исходных текстов и исполняемых файлов:

mkdir ~/go

mkdir ~/go/bin
mkdir ~/go/src


Теперь укажем переменную окружения GOPATH и добавим папку исполняемых файлов в PATH:

export GOPATH=$HOME/go

export PATH=$PATH:/$GOPATH/bin


Эти переменные так-же можно добавить в файл /etc/environment.

Итак, язык установлен в системе.



Установка и настройка Sublime Text + GoSublime + Gocode
Для начала скачайте и установите Sublime Text 3, любым приемлемым для вас способом ;)

Теперь установим утилиту Gocode, которая позволяет реализовать autocompleate:

go get github.com/nsf/gocode


Если в системе нет Git, тогда Go сообщит, что не может его найти. В этом случае установите Git в систему и повторите команду.

После этого нужно установить GoSublime. Для этого необходимо установить Package Control, если он у вас не установлен. Откройте Sublime Text и вызовите консоль, через меню View > Show Console. Скопируйте в нее код который вы можете взять по ссылке или скопировать отсюда:



import urllib.request,os,hashlib; h = '7183a2d3e96f11eeadd761d777e62404' + 'e330c659d4bb41d3bdf022e94cab3cd0'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)




После того, как Package Control установится, нажмите сочетание клавиш: ctrl+shift+p и начните набирать Package Control: Install Package после чего нажмите Enter и подождите пока обновится информация о пакетах. После чего отобразится поле, в которое необходимо ввести GoSublime и нажать на Enter. GoSublime скачается и установится сам.



Поздравляю! Теперь можно работать! :)

Если не устали — продолжим.



Долгожданный Hello, world!
Так, как окружение у нас настроено — можно приступать писать код.

Перейдите в каталог ~/go/src и создайте каталог hello_world, в нем создайте файл hello.go и откройте его с помощью Sublime Text и введите следующий код руками, autocompleate вам поможет ;)

package main


import (
"fmt"
)

func main() {
fmt.Println("Hello, world!")
}




Что тут написано и зачем\почему рассмотрим в следующем уроке, а пока — выполните следующую команду в каталоге с файлом исходного кода, который мы только что создали и написали:

go run hello.go


Если вы все сделали правильно, то вы увидите как ваша скомпилированная и запущенная программа поздоровается с миром ;)



Продолжение следует…