Инструменты Go

Вопросы написания собственного программного кода (на любых языках)

Модератор: Olej

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

Re: Go

Непрочитанное сообщение Olej » 02 июн 2016, 14:14

Olej писал(а): И теперь всё работает не мешая друг другу:
Подсказали, что этот баг отмечен для Fedora 22 : Red Hat Bugzilla – Bug 1192716 (неправильная расстановка приоритетов альтернатив: для go.gcc стоит приоритет 92, а для golang — 90).

И что решать его можно с помощью скрипта:

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

[olej@localhost GO]$ update-alternatives --help
alternatives version 1.7 - Copyright (C) 2001 Red Hat, Inc.
This may be freely redistributed under the terms of the GNU Public License.

usage: alternatives --install <link> <name> <path> <priority>
                    [--initscript <service>]
                    [--family <family>]
                    [--slave <link> <name> <path>]*
       alternatives --remove <name> <path>
       alternatives --auto <name>
       alternatives --config <name>
       alternatives --display <name>
       alternatives --set <name> <path>
       alternatives --list

common options: --verbose --test --help --usage --version
                --altdir <directory> --admindir <directory>

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

Re: Инструменты Go

Непрочитанное сообщение Olej » 02 июн 2016, 14:27

Olej писал(а):
Olej писал(а): Базовым материалом, на этот раз, будет вот та книжка Кэрнигана, показанная выше.
В книге много интересных и полезных примеров кода (в отличие от обычных для большинства книг примеров бла-бла-бла, высосанных из пальца).
Я буду здесь отмечать (себе на памятку) только те немногие, которые особо полезны на практике.
Тема эта настолько перегружена, что всё касающееся примеров кода Go выносится далее в новую тему: Примеры кода Go.

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

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

Re: Go

Непрочитанное сообщение Olej » 03 июн 2016, 12:32

Olej писал(а): Подсказали, что этот баг отмечен для Fedora 22 : Red Hat Bugzilla – Bug 1192716 (неправильная расстановка приоритетов альтернатив: для go.gcc стоит приоритет 92, а для golang — 90).
Свеже (для страховки) устанавливаем для страховки gcc-go:

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

[olej@dell tasks]$ sudo dnf install gcc-go
...
Установлено:
  gcc-go.x86_64 5.3.1-6.fc23                    libgo.x86_64 5.3.1-6.fc23                    libgo-devel.x86_64 5.3.1-6.fc23                   
Выполнено!
Проверяем:

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

[olej@dell tasks]$ alternatives --list
...
go	auto	/usr/bin/go.gcc

[olej@dell tasks]$ alternatives --display go
go - статус "авто".
 ссылка сейчас указывает на /usr/bin/go.gcc
/usr/lib/golang/bin/go - priority 90
 slave gofmt: /usr/lib/golang/bin/gofmt
/usr/bin/go.gcc - priority 92
 slave gofmt: /usr/bin/gofmt.gcc
Текущая `лучшая' версия - /usr/bin/go.gcc.
Меняем версию Go по умолчанию:

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

[olej@dell tasks]$ alternatives --config go

Имеется 2 программ, которые предоставляют 'go'.

  Выбор    Команда
-----------------------------------------------
   1           /usr/lib/golang/bin/go
*+ 2           /usr/bin/go.gcc

Enter - сохранить текущий выбор[+], или укажите номер: 1
не удается создать /var/lib/alternatives/go.new: Отказано в доступе

Только от суперпользователя! :

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

[olej@dell tasks]$ sudo alternatives --config go
[sudo] пароль для olej: 

Имеется 2 программ, которые предоставляют 'go'.

  Выбор    Команда
-----------------------------------------------
   1           /usr/lib/golang/bin/go
*+ 2           /usr/bin/go.gcc

Enter - сохранить текущий выбор[+], или укажите номер: 1

[olej@dell tasks]$ alternatives --display go
go - статус "вручную"
 ссылка сейчас указывает на /usr/lib/golang/bin/go
/usr/lib/golang/bin/go - priority 90
 slave gofmt: /usr/lib/golang/bin/gofmt
/usr/bin/go.gcc - priority 92
 slave gofmt: /usr/bin/gofmt.gcc
Текущая `лучшая' версия - /usr/bin/go.gcc.
3 разные сборки тестовой задачи 1). golang статическая, 2). golang динамическая, 3). GCC динамическая:

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

[olej@dell tasks]$ go build -compiler gc -o hellols hello.go 
[olej@dell tasks]$ go build -compiler gc -linkshared -o hellold hello.go 
[olej@dell tasks]$ go build -compiler gccgo -o hellog hello.go 
# command-line-arguments
ar: `u' modifier ignored since `D' is the default (see `U')
[olej@dell tasks]$ ls -l hello*
-rwxr-xr-x. 1 olej olej   32400 июн  3 12:18 hellog
-rw-rw-r--. 1 olej olej     266 май 31 11:05 hello.go
-rwxr-xr-x. 1 olej olej   15816 июн  3 12:18 hellold
-rwxr-xr-x. 1 olej olej 2367424 июн  3 12:17 hellols
[olej@dell tasks]$ file hello*
hellog:   ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=24bd1519714ce69e26d279a1bbf35ddcf2de8021, not stripped
hello.go: C source, UTF-8 Unicode text
hellold:  ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=ecbaadbe3483b60da122274f34abadf78d68b236, not stripped
hellols:  ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped

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

Re: Go

Непрочитанное сообщение Olej » 03 июн 2016, 13:14

Olej писал(а): 3 разные сборки тестовой задачи 1). golang статическая, 2). golang динамическая, 3). GCC динамическая:
Или даже 4 ... в традиционном вызове GCC:

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

[olej@dell tasks]$ gccgo -O3 hello.go -o helloi
[olej@dell tasks]$ ls -l hello*
-rwxr-xr-x. 1 olej olej   32400 июн  3 12:18 hellog
-rw-rw-r--. 1 olej olej     266 май 31 11:05 hello.go
-rwxrwxr-x. 1 olej olej   31984 июн  3 13:09 helloi
-rwxr-xr-x. 1 olej olej   15816 июн  3 12:18 hellold
-rwxr-xr-x. 1 olej olej 2367424 июн  3 12:17 hellols
[olej@dell tasks]$ ./helloi
Hello, 世界
... или даже 5 ;-) :

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

[olej@dell tasks]$ gccgo -O3 -g hello.go -o helloig
[olej@dell tasks]$ ls -l hello*
-rwxr-xr-x. 1 olej olej   32400 июн  3 12:18 hellog
-rw-rw-r--. 1 olej olej     266 май 31 11:05 hello.go
-rwxrwxr-x. 1 olej olej   31984 июн  3 13:09 helloi
-rwxrwxr-x. 1 olej olej   33768 июн  3 13:10 helloig
-rwxr-xr-x. 1 olej olej   15816 июн  3 12:18 hellold
-rwxr-xr-x. 1 olej olej 2367424 июн  3 12:17 hellols

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

Re: Инструменты Go

Непрочитанное сообщение Olej » 04 июн 2016, 19:58

Go Sub-repository Packages
Это огромный репозитарий пакетов Go, ещё не входящих в стандартную библиотеку (в разработе), или для специальных целей (обработка изображений, сеть и т.д.).
These packages are part of the Go Project but outside the main Go tree. They are developed under looser compatibility requirements than the Go core.
Repositories

golang.org/x/blog — the content and server program for blog.golang.org.
golang.org/x/crypto — additional cryptography packages.
golang.org/x/exp — experimental code (handle with care).
golang.org/x/image — additional imaging packages.
golang.org/x/mobile — libraries and build tools for Go on Android.
golang.org/x/net — additional networking packages.
golang.org/x/sys — for low-level interactions with the operating system.
golang.org/x/talks — the content and server program for talks.golang.org.
golang.org/x/text — packages for working with text.
golang.org/x/tools — godoc, vet, cover, and other tools.
Здесь же далее следует кратное описание каждого пакета:
Packages
Path Synopsis
golang.org/x/arch/arm/armmap Armmap constructs the ARM opcode map from the instruction set CSV file.
...

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

Re: Инструменты Go

Непрочитанное сообщение Olej » 12 июн 2016, 23:17

Ещё один неофициальный перевод: Калеб Докси, Введение в программирование на Go
Приступая к работе
Ваша первая программа
Типы
Переменные
Управление потоком
Массивы, срезы, карты
Функции
Указатели
Структуры и интерфейсы
Многопоточность
Пакеты и повторное использование кода
Тестирование
Стандартная библиотека
Дальнейшие шаги

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

Re: Инструменты Go

Непрочитанное сообщение Olej » 07 окт 2016, 20:54

В силу определённых обстоятельств, мне опять предстоит плотно поработать с Go.
Всё, что накопилось до сих пор относительно Go, было на конец 2014 года оформлено как тест Go конспект (с соответствующим архивом примеров кода).
Из-за нового витка активности с Go, первейшим делом дополняется, исправляется и меняется этот текст.
В ближайшие дни я выкину туда новый вариант, от 2016 года.

P.S.
Последняя редакция 2014г.:
Номер последней редакции: 39
Объём (страниц): 117
Дата создания: 25 сентябра 2014
На сегодня это уже будет:
Номер последней редакции: 41
Объём (страниц): 124
Так что дополнять есть что.

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

Re: Инструменты Go

Непрочитанное сообщение Olej » 21 янв 2017, 17:54

Подведены итоги 2016-го года:
TIOBE Index for January 2017
January Headline: Google's Go is TIOBE's programming language of 2016
TIOBE rewards the programming language that has gained the most popularity in a year with the programming language of the year award. Without hardly any competition Go has won the award for 2016. Google's Go language won 2.16% in one year. Runner ups Dart (+0.95%) and Perl (+0.91%) follow at a considerable distance. The main drivers behind Go's success are its ease of learning and pragmatic nature. It is not about theoretical concepts such as virtual inheritance and monads but about hands-on experience. Apart from that Go has built-in support for concurrency programming. More and more customers of our company TIOBE are adopting Go in an industrial setting. That is a good indicator.
TIOBE награждает язык программирования, который приобрел наибольшую популярность за год (по динамике). Практически без конкуренции Go завоевал награду на 2016 год. Язык от Google вырос за один год на 2.16%. Идущие следом Dart (+0.95%) и Perl (+0.91%) следуют на значительном расстоянии. Основными факторами успеха Go являются его легкость изучения и прагматический характер. Речь идет не о теоретических понятиях, таких как виртуальное наследование или монады, а про практический опыт. Кроме этого Go имеет встроенную поддержку параллельного программирования. Все больше и больше клиентов компании TIOBE адаптируют Go к промышленным условиям. Что является очень хорошим показателем.

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

Re: Инструменты Go

Непрочитанное сообщение Olej » 21 янв 2017, 18:54

Olej писал(а): На сегодня это уже будет:
Номер последней редакции: 41
Объём (страниц): 124
Выложен этот новый вариант: Go конспект.

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

Re: Инструменты Go

Непрочитанное сообщение Olej » 28 мар 2017, 11:47

Очень интересная публикация по Go (не часто такое бывает) - как сделать на Go разделяемую библиотеку DLL, которую можно использовать из кода на других языках программирования (C, Python, Ruby, Node и Java) - Вызов функций Go из других языков:
21 марта
Изображение
Компилятор создаёт заголовочный С-файл awesome.h и файл объекта awesome.so:

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

-rw-rw-r —    1362 Feb 11 07:59 awesome.h
-rw-rw-r — 1997880 Feb 11 07:59 awesome.so
Обратите внимание, что размер файла .so около 2 Мб. Довольно много для такой маленькой библиотеки. Дело в том, что в этот файл запихивается вся runtime-механика Go и зависимые пакеты.

Ответить

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

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

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