Go

Программные средства разработки

Модераторы: Olej, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go

Непрочитанное сообщение Olej » 13 фев 2014, 10:55

Go
Go — компилируемый, многопоточный язык программирования, разработанный компанией Google. Первоначальная разработка Go началась в сентябре 2007 года, а его непосредственным проектированием занимались Роберт Гризмер, Роб Пайк и Кен Томпсон занимавшиеся до этого проектом разработки операционной системы Inferno. Официально язык был представлен в ноябре 2009 года. На данный момент его поддержка осуществляется для операционных систем FreeBSD, OpenBSD, Linux, Mac OS X, Windows.
Обратите внимание, какие люди стоят за разработкой ... это те "мамонты", которые стояли у истоков языка C и UNIX, а позже делали Plan 9 в качестве замены UNIX.
На данный момент существуют два компилятора Go:
6g (и сопутствующие ему инструменты, вместе известные под названием gc) написан на Си с применением yacc/Bison для парсера
Gccgo — ещё один компилятор Go с клиентской частью, написанной на C++, и рекурсивным парсером, совмещённым со стандартным бэк-эндом GCC[7]. Поддержка Go доступна в GCC начиная с версии 4.6.
Все компиляторы полагаются полностью на собственный код — создаваемый код не является управляемым, то есть для его работы не нужна виртуальная машина. По словам Роба Пайка, получаемый после компиляции байт-код совершенно автономен.
В вашем Linux есть (в пакетной системе) и то и другое:

Код: Выделить всё

$ aptitude search golang*
p   golang                           - Go programming language compiler - metapackage
p   golang-dbg                       - Go programming language compiler - debug files
p   golang-doc                       - Go programming language compiler - documentation
p   golang-go                        - Go programming language compiler
p   golang-mode                      - Go programming language - mode for GNU Emacs
p   golang-src                       - Go programming language compiler - source files
v   golang-tools                     -
v   golang-weekly                    -
v   golang-weekly-dbg                -
v   golang-weekly-doc                -
v   golang-weekly-go                 -
v   golang-weekly-src                -
v   golang-weekly-tools              -  

Код: Выделить всё

olej@notebook:~$ aptitude search gccgo*
p   gccgo                            - Go compiler, based on the GCC backend
p   gccgo-4.6-doc                    - documentation for the GNU Go compiler (gccgo)
p   gccgo-4.7                        - GNU Go compiler
p   gccgo-4.7-doc                    - documentation for the GNU Go compiler (gccgo)
p   gccgo-4.7-multilib               - GNU Go compiler (multilib files)
p   gccgo-multilib                   - Go compiler, based on the GCC backend (multilib files)
Вам, естественно, необходимо установить какой-либо из них (или оба):

Код: Выделить всё

$ sudo apt-get install gccgo
...
Настраивается пакет gccgo (4:4.7.2-1) …
$ gccgo --version
gccgo (Debian 4.7.2-5) 4.7.2
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Всё! ... молодые дарования, можете наслаждаться языком Go.

Вполне достаточно ресурсов для разбирательства с самим языком (кроме ссылки уже показанной выше):

Толковые статьи:
Go для программистов C++ - Перевод статьи Go For C++ Programmers с официального сайта языка Go.
Go — язык системного программирования, созданный для широкого применения, как и C++. Здесь приводятся некоторые заметки для опытных программистов C++. Этот документ описывает различия между Go и C++, но почти ничего здесь нет об их сходствах.
Справочники по языку и учебники:
Frequently Asked Questions (FAQ)
Effective Go
Directory src/pkg/ - пакеты - библиотека
A Tour of Go - интерактивный учебный тур на сайте Go
... всё что выше - это всё с домашней страницы Go

Евгений Охотников : Краткий пересказ Effective Go на русском языке
Miek Gieben : "Learning Go" - регулярные сборки (PDF) книги, последняя - 09.11.2013 (!)
Дмитрий Выкочко : "Язык программирования go", 4 статьи на IBM DeveloperWorks :
Часть 1
Часть 2
Часть 3
Часть 4

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Go

Непрочитанное сообщение Olej » 13 фев 2014, 11:03

Olej писал(а): Всё! ... молодые дарования, можете наслаждаться языком Go.
Я действительно обратил бы самое пристальное внимание студентов, ищущих что-то достойное внимания в IT, на язык Go.

А ещё больше обратил бы на него внимание их преподавателей в ВУЗах ...

Вместо того, чтобы ... как это местами происходит - устраивать дрочиловку вокруг книги Э.Таненбаума и его операционной системы Minix 30-летней давности :evil:

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Go

Непрочитанное сообщение Olej » 15 фев 2014, 12:21

Olej писал(а): Я действительно обратил бы самое пристальное внимание студентов, ищущих что-то достойное внимания в IT, на язык Go.

А ещё больше обратил бы на него внимание их преподавателей в ВУЗах ...
Примеры написания кода на языке Go пишутся здесь в теме: сравнение языков программирования.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Go

Непрочитанное сообщение Olej » 12 авг 2014, 21:54

Интерес к Go очень большой. И множится день ото дня.

1. Несмотря на относительную молодость Go, его избрали в качестве инструментария авторы многих открытых публичных проектов. Здесь собран указатель на несколько сот (!) проектов на Go, начиная с простеньких утилит и до комплексных развиваемых публичных проектов.
Меня, откровенно говоря, этот список удивил своей обширностью.

2. В 2009 Go был признан языком года по версии организации TIOBE.

3. Как пример последних месяцев: анонсирован крупнейший проект Syncthing — открытое кросс-платформенное приложение (Linux, Mac OS X, Windows, FreeBSD и Solaris, Android), строящееся по модели клиент-сервер и предназначенное для синхронизации файлов между двумя участниками (point to point).
Проект реализуется полностью на языке Go.

4. Одна крупная зарубежная софтверная компания, у которой полно филиалов в русскоязычном пространстве, обратилась ко мне с предложением подготовить курс обучения программистов-разработчиков их филиалов языку Go + часть студентов последнего курса, которых они привлекают как стажёров.
И они готовы платить о-о-о-о-очень хорошие деньги за такое обучение! ;-)

Сейчас сижу пишу конспект, прикидываю что тут можно сделать ... уже 42 стр. текста (это на 8 учебных часов по опыту) + примеров кода накатал:

Код: Выделить всё

[Olej@modules GO]$ tree examples.Go 
examples.Go
├── compare
│   ├── compare.hist
│   ├── fibo
│   │   ├── fibo_c.c
│   │   ├── fibo_cc.cc
│   │   ├── fibo_go.go
│   │   ├── fibo.hist
│   │   └── Makefile
│   └── Makefile
├── Go.hist
├── goproc
│   ├── Makefile
│   ├── multy.go
│   ├── multy.hist
│   └── sleep.go
├── hello
│   ├── circle.go
│   ├── echo.go
│   ├── hello.go
│   ├── hello.hist
│   ├── Makefile
│   └── tiny.go
├── Makefile
├── tree.txt
└── triangle
    ├── Makefile
    ├── triangle.go
    └── triangle.hist

5 directories, 23 files

Когда конспект будет готов более-менее - выложу его сюда для всеобщего обозрения.

А пока вот 2 очень объёмные и приличные книги:
Miek Gieben : Learning Go
Caleb Doxsey : An Introduction to Programming in Go

5. ... но и это ещё не всё! :-o :lol:
Прошёл слух: я кому-то как-то в разговорах сказал, что уже 3-4 дня сижу готовлю учебный курс по Go...
Сегодня за 1 день сразу 2 независимые местные фирмы-разработчики, аутсорсеры, из числа самых приличных - постучались через Интернет: "и нам! и нам! ... хочется" :lol:
Мир сошёл с ума? :-o

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Go

Непрочитанное сообщение Olej » 16 авг 2014, 10:34

Olej писал(а): Когда конспект будет готов более-менее - выложу его сюда для всеобщего обозрения.
Как там говориться? :lol: :
мужик сказал - мужик сделал
Вот вам Go конспект.
Пока это сильно черновик, он будет дополняться и правиться.
Но там же все новые версии будут обновляться.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Go

Непрочитанное сообщение Olej » 26 авг 2014, 14:42

Olej писал(а):Вот вам Go конспект.
Пока это сильно черновик, он будет дополняться и правиться.
Но там же все новые версии будут обновляться.
Выложена новая, радикально расширенная версия, описания - 81 стр.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Go

Непрочитанное сообщение Olej » 12 сен 2014, 22:05

Olej писал(а): А пока вот 2 очень объёмные и приличные книги:
Miek Gieben : Learning Go
Caleb Doxsey : An Introduction to Programming in Go
Книга, изданная на русском языке (перевод): Саммерфильд Марк : «Программирование на языке Go: Разработка приложений XXI века», М.: «ДМК Пресс», 2013, стр. 550, ISBN: 978-5-94074-854-0
Книгу можно скачать: http://rutracker.org/forum/viewtopic.php?t=4538370

Оригинал: Mark Summerfield : «Programming in Go: Creating Applications for the 21st Century», Addison-Wesley Professional, 2012, ISBN-10: 0-321-77463-9
http://www.qtrac.eu/gobook.html

Архив примеров к книге: http://www.qtrac.eu/gobook-1.0.tar.gz

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Go

Непрочитанное сообщение Olej » 12 сен 2014, 22:11

Ещё одна особенность Go: поскольку, как утверждается, компиляция с Go выполняется намного быстрее, чем в некоторых других языках, особенно в сравнении с языками C и C++, то представляется возможность использовать программы Go в качестве исполнимых скриптов (сценариев) системы Linux.

Этому посвящено несколько независимых проектов. В качестве примера - проект gorun (https://wiki.ubuntu.com/gorun , https://code.launchpad.net/~niemeyer/gorun/trunk). Простейший путь посмотреть как это происходит:

- установить систему контроля версий Bazaar, любимую разработчиками Ubuntu:

Код: Выделить всё

$ sudo yum install bzr
...
---> Пакет bzr.x86_64 0:2.6.0-2.fc20 помечен для установки
...
Объем загрузки: 6.3 M
Объем изменений: 29 M
Is this ok [y/d/N]: y
...                                                                                                 
Выполнено!
New leaves:
  bzr.x86_64
- загрузить сам проект gorun:

Код: Выделить всё

$ bzr branch lp:gorun
You have not informed bzr of your Launchpad ID, and you must do this to
write to Launchpad or access private data.  See "bzr help launchpad-login".
Branched 19 revisions.
- любым из известных нам способов скомпилировать программу gorun и поместить её в один из каталогов на путях $PATH:

Код: Выделить всё

$ gccgo -g gorun.go -o gorun
$ sudo cp gorun /usr/local/bin
Теперь пишем простейшую программу, которую хотим пользовать как скрипт - tiny.go :

Код: Выделить всё

#!/usr/local/bin/gorun

package main
import ( "fmt" )

func main() {
   fmt.Println( "минимальное приложение" )
}
И сделаем этот файл исполнимым:

Код: Выделить всё

$ chmod a+x tiny.go 
При первом запуске команда gorun скомпилирует файл с расширением .go (очень быстро) и запустит его. При последующих попытках перекомпиляция будет выполняться, только если исходный файл .go изменился с момента предыдущей компиляции:

Код: Выделить всё

$ time ./tiny.go
минимальное приложение

real    0m0.213s
user    0m0.184s
sys     0m0.029s
$ time ./tiny.go
минимальное приложение
real    0m0.014s
user    0m0.009s
sys     0m0.004s
$ time ./tiny.go
минимальное приложение

real    0m0.010s
user    0m0.007s
sys     0m0.002s
Это такой своего рода Just In Time получается.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Go

Непрочитанное сообщение Olej » 12 сен 2014, 22:13

Olej писал(а):Это такой своего рода Just In Time получается.
Это достаточно заманчиво для разработки крупных комплексных проектов, когда:

- основные большие приложения проекта пишутся на Go и компилируются с максимальной оптимизацией...

- все вспомогательные приложения (тестовые, инсталляции, конфигурации ... обычно их море ...) - пишутся на том же Go в режиме исполняющихся скриптов.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Go

Непрочитанное сообщение Olej » 19 сен 2014, 20:20

Хорошее, активное (обновления каждый день) русскоязычное сообщество Go: Язык программирования Go

И активная ркусскоязычная группа обсуждений: Golang Russian Доступно всем в Интернете
(обсуждения практически каждый день)

Ответить

Вернуться в «Инструменты программирования»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя