Upload
0legg
View
28
Download
5
Embed Size (px)
Citation preview
Caesar++
На самом деле, такого языка нет.
И он, вообще говоря, не нужен.
И вообще, половина существующих языков не нужна.
Caesar++
Объяснять что-то без примеров — зло, гори в аду.
Привязывать все примеры к одному языку — зло, гори в аду.
Caesar++
Для фундаментальных вещей лучше применять абстракции и метафоры.
Примеры на модельном языке хороши тем, что не зажимают нас ограничениями платформы.
Прерывания
irrue 21h!
Все, никто никуда не идет, обрабатываем прерывание.
Вышли — продолжаем там, где прервались.
Лихие 90-е
Переключение контекста.
Сохраняем все регистры
Кэш и прочий трэш (TLB, конвейер) — горят в аду.
Переключение контекста
Это жутко дорого.
Все оптимизации идут лесом.
Предсказания переходов? Длинный конвейер процессора? Горите в аду!
МногозадачностьМного процессоров или ядер — вот тут-то и начинается многозадачность.
Каждый делает свое и по какому-то протоколу они общаются.
Событийно-ориентированное программирование
Почти во всех интерактивных системах.
Подписываемся на сообщения, они к нам приходят и мы их обрабатываем.
Ай какие мы молодцы!!!
Событийно-ориентированное программирование
Кнопкама нажаль
Прерывание прилетель
Виндосама труба шаталь, окно нашель, сообщение в очередь записаль
Мажильбе!!! onClick!
Событийно-ориентированное программирование
Весь процесс работы программы — вытягивание из очереди сообщений и обработка их.
Закончились (пришло сообщение о завершении работы) — все, никто никуда не идет.
Событийно-ориентированное программирование
Можем обрабатывать синхронно и асинхронно.
В синхронном случае того, кто отослал сообщение не отпускает, пока его не обработают
В асинхронном он узнает косвенно (коллбеки, арргх)
Акторы
Все есть акторы.
Акторы — те же объекты, только акторы.
Акторы слушают сообщения.
Акторы отправляют сообщения.
Акторы создают акторов.
Акторы
Все взаимодействия — через асинхронные сообщения.
Актор знает только тех, кого создал сам или тех, кто ему что-то прислал.
Fork-joinБлиже для императивных языков.
Нафоркали независимых вычислителей, ждем, пока все не закончатся (в случайном порядке).
Коммуникация потоковСообщения
Отослали и не волнуемся
Куча копирований, плодим данные, все тупит.
Разделяемая память
Все ок, в одном экземпляре.
Синхронизация, мьютексы, боль, унижения, жизнь ужасна.
Разделение контекстаИли один общий контекст в рамках процесса.
Или все данные, что мы можем узнать о другом потоке/вычислителе/акторе — предоставляются им самим абсолютно добровольно по какому-то протоколу.