shad-go/lectures/00-intro/lecture.slide
2020-02-10 16:40:22 +03:00

81 lines
2.7 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Введение
Лекция 1
Фёдор Короткий
* Добро пожаловать
- Вы пришли на курс по Go
.image gopher.png _ 400
* Ссылки
.link https://wiki.yandex.ru/shad/groups/2018/Semester4/GoLang/ Вики страница
.link https://gitlab.com/slon/shad-go Репозиторий
.link https://t.me/joinchat/BjrYSxdPJGtJdd1pae08Zg Чат курса в телеграме
[[https://p.go.manytask.org]] - эти слайды.
* Что нас ждёт?
- 12+ занятий
- Семинарские задания после каждой лекции. *Дедлайн*10*дней.*
- 4 _больших_ домашних задания. *Дедлайн*3*недели.*
- Критерий оценки: *TODO*.
* Hello world
.play -edit helloworld.go
* Go
Concurrent
Garbage Collected
Systems
Language
* Современный мир
- Море библиотек. Большие деревья зависимостей.
: Нам нужен язык, который будет помогать контролировать сложность at large.
- Архитектура построена вокруг сервисов, которые общаются по сети.
: Скорее вам придётся писать stateless сервис. Statefull сервисы общаются с базой данных по сети.
- Многоядерные процессоры даже в телефонах.
* Скорость разработки
- Компиляция занимает много времени
- Инструменты замедляются
- Число зависимостей постоянно растёт
- Ноутбуки не становятся быстрее
- Проекты продолжают расти
* Цели Go
- Эффективность статической типизации. Удобство динамической типизации.
- Type-safe и memory-safe.
- Хорошая поддержка многопоточности.
- Эффективный сборщик мусора, без пауз.
- Быстрая компиляция.
- Эффективная работа с большими объемами кода.
* Compilation Demo
# 1 пакет за 200 ms
time go build -a -v math
# 84 пакета за 7 секунд
time go build -a -v github.com/golang/protobuf/...
.image compiling.png
* Принципы дизайна
Небольшое число ортогональных фич.
Простой синтаксис (понятный для людей *и* машин).
Простая система типов. Объектно ориентированный, но без иерархий.