Здравствуйте, Alexander. >>>> Или может даже более правильный вопрос: как голову переключить на >>>> асинхронное программирование? >> >>> Про расово верный подход уже написали, но лучше с точки зрения >>> надёжности код при минимуме трудозатрат - всё-таки сопрограммы. >> >>> Есть проверенные платформы - Go (лучшее решение, на мой взгляд), >>> Stackless Python (моя давняя любовь), есть Perl Coro (не пробовал, но >>> теоретически - то же самое). >> >> Как то уже втянулся писать без сопрограмм.
> Я один большой проект на ноде сделал (больше года писали) - и там любая > более-менее сложная логика (запрос к нескольким бэкендам, слияние > результатов, обработка таймаутов и ошибок) даже с использованием модулей > типа async выглядит ужасно. Любой случайно пропущенный callback() > приводит к зависанию логики. Необработанные исключения - то же самое. Со > временем привыкаешь не делать такие ошибки (мозг перестраивается), но > каждый новый человек на проекте - это те же самые грабли снова и снова. А новые люди легко начинают писать на Ноде по твоему опыту? >> А чем именно Go так хорош? > Во-первых, он разрабатывался именно для асинхронного программирования, с > всеми паттернами ввода-вывода в распределённых системах в уме. Вчера специально заходил на их сайт. Не нашёл про асинхронное программирование ничего. > Во-вторых, он автоматически использует несколько ядер, раскидывая по ним > сопрограммы. Настолько автоматически, что перед блокирующими системными > вызовами все сопрограммы, которые в том же потоке выполнялись, > автоматически мигрируют в другие потоки. Мега-фича, кстати. Если другие форкаются для того, чтобы все ядра загрузить, то как тут это реализовано? > В-третьих, правильная работа с буферами. Почти как в V8, только > программист явно управляет копированием, чтобы случайно лишних > копирований не сделать. А ты DART смотрел? Его вроде автор V8 писал и по его задумке это должен был стать улучшенный JavaScript без свойственных ему рудиментов. Недавно узнал, что типизация в нём необязательна. -- С уважением, Михаил mailto:[email protected] -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
