concurrent-go/plan.md

45 lines
2.5 KiB
Markdown
Raw Normal View History

# План курса
TODO: когда планирование будет завершено, влить этот документ в `README.md`.
TODO: разрешить все TODO в документе.
## Структура
TODO: нормально разбить материал по занятиям. Сейчас всё не очень сбалансировано.
План занятий:
1. История появления и развития Go как языка программирования.<br>
2019-05-26 12:10:42 +03:00
* TODO: more.<br>
1. Виды параллелизма, связанные с параллелизмом проблемы и как мы решаем их в Go.<br>
* Параллельно 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>
1. Применение параллелизма.<br>
2019-05-26 12:10:42 +03:00
* TODO: more.<br>
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).
1. Отладка высокопараллельных программ, как уменьшить сложность системы.<br>
2019-05-26 12:10:42 +03:00
* TODO: more.<br>
> Тестирование, профилирование и прочее, что важно для Go программистов, но напрямую не связано с темой параллелизма,
лучше вынести в дополнительные материалы и/или домашние задания.