SlideShare a Scribd company logo
1 of 27
Download to read offline
Caesar++
Как сделать много вещей

сразу и хорошо
Caesar++
На самом деле, такого языка нет.
И он, вообще говоря, не нужен.
И вообще, половина
существующих языков не нужна.
Caesar++
Объяснять что-то без примеров —
зло, гори в аду.
Привязывать все примеры к
одному языку — зло, гори в аду.
Caesar++
Для фундаментальных вещей лучше
применять абстракции и
метафоры.
Примеры на модельном языке
хороши тем, что не зажимают нас
ограничениями платформы.
Лихие 80-е
Ассемблер.
Ассемблер-light (C, C++).
Прерывания.
Прерывания
irrue 21h!
Все, никто никуда не
идет, обрабатываем
прерывание.
Вышли — продолжаем
там, где прервались.
Лихие 90-е
Переключение контекста.
Сохраняем все регистры
Кэш и прочий трэш (TLB,
конвейер) — горят в аду.
Переключение контекста
trcdCntxtm!
И так каждый раз,
когда управление
переходит к другому
потоку.
Переключение контекста
Это жутко дорого.
Все оптимизации идут лесом.
Предсказания переходов? Длинный
конвейер процессора? Горите в аду!
Многозадачность
Много процессоров или
ядер — вот тут-то и
начинается
многозадачность.
Каждый делает свое и
по какому-то протоколу
они общаются.
Многозадачность для бедных
Невытесняющая
Кооперативная
Вытесняющая
Событийно-ориентированное
программирование
Почти во всех интерактивных
системах.
Подписываемся на сообщения, они
к нам приходят и мы их
обрабатываем.
Ай какие мы молодцы!!!
Ай какие мы молодцы!!!
Событийно-ориентированное
программирование
Кнопкама нажаль
Прерывание прилетель
Виндосама труба шаталь, окно
нашель, сообщение в очередь
записаль
Мажильбе!!! onClick!
Событийно-ориентированное
программирование
Весь процесс работы программы
— вытягивание из очереди
сообщений и обработка их.
Закончились (пришло сообщение о
завершении работы) — все, никто
никуда не идет.
Событийно-ориентированное
программирование
Можем обрабатывать синхронно и
асинхронно.
В синхронном случае того, кто
отослал сообщение не отпускает,
пока его не обработают
В асинхронном он узнает косвенно
(коллбеки, арргх)
Акторы
Все есть акторы.
Акторы — те же объекты, только
акторы.
Акторы слушают сообщения.
Акторы отправляют сообщения.
Акторы создают акторов.
Как же мне это слово за
один слайд надоело…
Акторы
Все взаимодействия — через
асинхронные сообщения.
Актор знает только тех, кого
создал сам или тех, кто ему что-то
прислал.
Акторы
Scenicus==>litera
Scenicus(litera) < 

делаем что-то, радоваемся

>

Fork-join
Ближе для
императивных
языков.
Нафоркали
независимых
вычислителей, ждем,
пока все не
закончатся (в
случайном порядке).
Коммуникация потоков
Сообщения
Отослали и не волнуемся
Куча копирований, плодим данные, все
тупит.
Разделяемая память
Все ок, в одном экземпляре.
Синхронизация, мьютексы, боль,
унижения, жизнь ужасна.
Разделение контекста
Или один общий контекст в рамках
процесса.
Или все данные, что мы можем узнать о
другом потоке/вычислителе/акторе —
предоставляются им самим абсолютно
добровольно по какому-то протоколу.
На этом моменте муза
меня покинула…
Дальше слайдов не
будет…
Дальше
содержательных
слайдов не будет…
Спасибо за внимание

More Related Content

More from 0leGG

Как завести трактор
Как завести тракторКак завести трактор
Как завести трактор0leGG
 
Проекты летней школы
Проекты летней школыПроекты летней школы
Проекты летней школы0leGG
 
Как писать под Android программы, а не код
Как писать под Android программы, а не кодКак писать под Android программы, а не код
Как писать под Android программы, а не код0leGG
 
10 способов облажаться на презентации
10 способов облажаться на презентации10 способов облажаться на презентации
10 способов облажаться на презентации0leGG
 
ЦУГАЭТ позвонит
ЦУГАЭТ позвонитЦУГАЭТ позвонит
ЦУГАЭТ позвонит0leGG
 
Старый Android на новый лад
Старый Android на новый ладСтарый Android на новый лад
Старый Android на новый лад0leGG
 
Проходим тест Джоэла
Проходим тест ДжоэлаПроходим тест Джоэла
Проходим тест Джоэла0leGG
 
Профессии в IT
Профессии в ITПрофессии в IT
Профессии в IT0leGG
 
Учи неучёного
Учи неучёногоУчи неучёного
Учи неучёного0leGG
 
Find my shiny metal droid
Find my shiny metal droidFind my shiny metal droid
Find my shiny metal droid0leGG
 
Как учёба в университете и олимпиадное программирование не сделали мою жизнь ...
Как учёба в университете и олимпиадное программирование не сделали мою жизнь ...Как учёба в университете и олимпиадное программирование не сделали мою жизнь ...
Как учёба в университете и олимпиадное программирование не сделали мою жизнь ...0leGG
 
Страх и ненависть в Event Bus
Страх и ненависть в Event BusСтрах и ненависть в Event Bus
Страх и ненависть в Event Bus0leGG
 

More from 0leGG (12)

Как завести трактор
Как завести тракторКак завести трактор
Как завести трактор
 
Проекты летней школы
Проекты летней школыПроекты летней школы
Проекты летней школы
 
Как писать под Android программы, а не код
Как писать под Android программы, а не кодКак писать под Android программы, а не код
Как писать под Android программы, а не код
 
10 способов облажаться на презентации
10 способов облажаться на презентации10 способов облажаться на презентации
10 способов облажаться на презентации
 
ЦУГАЭТ позвонит
ЦУГАЭТ позвонитЦУГАЭТ позвонит
ЦУГАЭТ позвонит
 
Старый Android на новый лад
Старый Android на новый ладСтарый Android на новый лад
Старый Android на новый лад
 
Проходим тест Джоэла
Проходим тест ДжоэлаПроходим тест Джоэла
Проходим тест Джоэла
 
Профессии в IT
Профессии в ITПрофессии в IT
Профессии в IT
 
Учи неучёного
Учи неучёногоУчи неучёного
Учи неучёного
 
Find my shiny metal droid
Find my shiny metal droidFind my shiny metal droid
Find my shiny metal droid
 
Как учёба в университете и олимпиадное программирование не сделали мою жизнь ...
Как учёба в университете и олимпиадное программирование не сделали мою жизнь ...Как учёба в университете и олимпиадное программирование не сделали мою жизнь ...
Как учёба в университете и олимпиадное программирование не сделали мою жизнь ...
 
Страх и ненависть в Event Bus
Страх и ненависть в Event BusСтрах и ненависть в Event Bus
Страх и ненависть в Event Bus
 

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