[Moscow.pm] Стиль асинхронного программирования

Михаил Монашёв postmaster на softsearch.ru
Пн Дек 30 00:16:41 PST 2013


Здравствуйте, Alexander.

>>>> Или  может  даже  более  правильный  вопрос: как голову переключить на
>>>> асинхронное программирование?
>>
>>> Про расово верный подход уже написали, но лучше с точки зрения
>>> надёжности код при минимуме трудозатрат - всё-таки сопрограммы.
>>
>>> Есть проверенные платформы - Go (лучшее решение, на мой взгляд),
>>> Stackless Python (моя давняя любовь), есть Perl Coro (не пробовал, но
>>> теоретически - то же самое).
>>
>> Как то уже втянулся писать без сопрограмм.

> Я один большой проект на ноде сделал (больше года писали) - и там любая
> более-менее сложная логика (запрос к нескольким бэкендам, слияние 
> результатов, обработка таймаутов и ошибок) даже с использованием модулей
> типа async выглядит ужасно. Любой случайно пропущенный callback() 
> приводит к зависанию логики. Необработанные исключения - то же самое. Со
> временем привыкаешь не делать такие ошибки (мозг перестраивается), но
> каждый новый человек на проекте - это те же самые грабли снова и снова.

А новые люди легко начинают писать на Ноде по твоему опыту?

>> А чем именно Go так хорош?

> Во-первых, он разрабатывался именно для асинхронного программирования, с
> всеми паттернами ввода-вывода в распределённых системах в уме.

Вчера специально заходил на их сайт. Не нашёл про асинхронное
программирование ничего.

> Во-вторых, он автоматически использует несколько ядер, раскидывая по ним
> сопрограммы. Настолько автоматически, что перед блокирующими системными
> вызовами все сопрограммы, которые в том же потоке выполнялись, 
> автоматически мигрируют в другие потоки.

Мега-фича, кстати.

Если  другие  форкаются для того, чтобы все ядра загрузить, то как тут
это реализовано?

> В-третьих, правильная работа с буферами. Почти как в V8, только 
> программист явно управляет копированием, чтобы случайно лишних 
> копирований не сделать.

А  ты  DART  смотрел?  Его  вроде  автор V8 писал и по его задумке это
должен   был   стать   улучшенный   JavaScript  без  свойственных  ему
рудиментов. Недавно узнал, что типизация в нём необязательна.


-- 
С уважением,
 Михаил                          mailto:postmaster на softsearch.ru



Подробная информация о списке рассылки Moscow-pm