go под капотом

14
Go под капотом … точнее все что вам нужно знать про Go

Upload: idris-djumanov

Post on 20-Mar-2017

22 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Go под капотом

Go под капотом… точнее все что вам нужно знать про Go

Page 2: Go под капотом

Кто я?Разработчик с опытом работы в различных

сферах IT. Начиная с Web и Mobile заканчивая серверными приложениями, распределенными БД и DevOps. Создавал автоматическую систему диспетчеризации заказов такси, делал сайты, коробочные web продукты, поднимал инфраструктуру в AWS (CoreOS stack), настраивал автоматический deployment и обновление. Сейчас в команде Dar Ecosystem. Занимаюсь проектом Dar Play. Docker. Go. NoSQL.

Page 3: Go под капотом

Почему Go?• Быстрая разработка

• Типо-безопасность

• Быстрая компиляция

• Эффективное использование “железа”

• Многопоточность

Page 4: Go под капотом

Тур по Gohttps://tour.golang.org/welcome/1

Page 5: Go под капотом

Результат тура• С подобный синтаксис

• Компилируемый в статический бинарный файл

• Статическая типизация с неявным указанием типов

• Структурная система типов

• Горутины, каналы

• Сборщик мусора

• Нет неявных преобразований

• Интерфейсы наше все

Page 6: Go под капотом

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

Page 7: Go под капотом

Компилятор• Создает syntax tree, проверяет его,

переписывает всякий сахар, создает объектные файлы (*.o)

• Статический бинарник, работает даже без go runtime на любой машине со схожей архитектурой ядра

• Если А.go зависит от B.go который зависит от C.go то

• Скомпилировать С.go, B.go потом A.go

• Чтобы скомпилировать A.go нужен только B.o (в нем уже есть С.o)

Page 8: Go под капотом

Go Runtime

Page 9: Go под капотом

Сборщик мусора• Сoncurrent, tri-color, mark-sweep collector

• Scan, mark, sweep stages

• White, grey or black objects

• Heap as a connected graph

• Mutator, write barrier

Page 10: Go под капотом
Page 11: Go под капотом

Scheduler

• Goroutine (G), OS thread (M), logical processor unit (P)

• Gouroutines multiplexed on GOMAXPROCS system threads

Page 12: Go под капотом
Page 13: Go под капотом

Что еще есть?

• go fmt - форматирование кода

• go doc - авто документация

• go get - загрузка зависимостей

Page 14: Go под капотом

Я все!