2019-05-26 11:46:54 +03:00
|
|
|
|
# План курса
|
|
|
|
|
|
|
|
|
|
TODO: когда планирование будет завершено, влить этот документ в `README.md`.
|
|
|
|
|
|
2019-05-26 12:00:48 +03:00
|
|
|
|
TODO: разрешить все TODO в документе.
|
|
|
|
|
|
2019-05-26 11:46:54 +03:00
|
|
|
|
## Структура
|
|
|
|
|
|
2019-05-26 12:00:48 +03:00
|
|
|
|
TODO: нормально разбить материал по занятиям. Сейчас всё не очень сбалансировано.
|
|
|
|
|
|
|
|
|
|
План занятий:
|
|
|
|
|
|
|
|
|
|
1. История появления и развития Go как языка программирования.<br>
|
2019-05-26 12:10:42 +03:00
|
|
|
|
* TODO: more.<br>
|
2019-05-26 12:00:48 +03:00
|
|
|
|
1. Виды параллелизма, связанные с параллелизмом проблемы и как мы решаем их в Go.<br>
|
2019-05-26 12:06:10 +03:00
|
|
|
|
* Параллельно vs асинхронно.<br>
|
|
|
|
|
* Параллелизм на уровне процессоров.<br>
|
|
|
|
|
* Параллелизм через OS threads.<br>
|
|
|
|
|
* OS threads дорогие => green threads и подобные.<br>
|
|
|
|
|
* Проблема: data races.<br>
|
|
|
|
|
* Проблема: deadlocks.<br>
|
|
|
|
|
* Синхронизация.
|
|
|
|
|
* Параллелизм через CSP (в интерпретации Go).<br>
|
|
|
|
|
* Каналы как примитив синхронизации.<br>
|
2019-05-26 12:10:42 +03:00
|
|
|
|
* TODO: more?<br>
|
2019-05-26 12:00:48 +03:00
|
|
|
|
1. Применение параллелизма.<br>
|
2019-05-26 12:10:42 +03:00
|
|
|
|
* TODO: more.<br>
|
2019-05-26 12:00:48 +03:00
|
|
|
|
1. Написание веб-сервера на Go.<br>
|
2019-05-26 12:10:42 +03:00
|
|
|
|
* TODO: more.<br>
|
|
|
|
|
1. Продвинутые паттерны в асинхронных приложениях и алгоритмах.<br>
|
|
|
|
|
* Atomic операции.<br>
|
|
|
|
|
* Лимитирование параллелизма (через семафоры/каналы).<br>
|
|
|
|
|
* Broadcast.<br>
|
|
|
|
|
* TODO: more.<br>
|
|
|
|
|
1. Как в Go работают "горутины".
|
|
|
|
|
* Что такое runtime.
|
|
|
|
|
* Что такое scheduller.
|
|
|
|
|
* Preemption points, как оно работает в Go, какие у этого проблемы.
|
|
|
|
|
* Поверхностно о распределении работы (job stealing).
|
2019-05-26 12:00:48 +03:00
|
|
|
|
1. Отладка высокопараллельных программ, как уменьшить сложность системы.<br>
|
2019-05-26 12:10:42 +03:00
|
|
|
|
* TODO: more.<br>
|
2019-05-26 11:46:54 +03:00
|
|
|
|
|
|
|
|
|
> Тестирование, профилирование и прочее, что важно для Go программистов, но напрямую не связано с темой параллелизма,
|
|
|
|
|
лучше вынести в дополнительные материалы и/или домашние задания.
|