Да все он прекрасно понимает - он просто троллит.
Ты его остальные посты почитай на его блоге.
Касаемо ноды, тут две стороны вопроса.
Первая - вопрос выбора.
Если бы не было ничего более высокоуровневого, и единственной альтернативой было бы написание на c/libev[ent], можно было бы смириться. Но добровольно использовать при асинхронном программировании язык, не поддерживающий корутины, - это надо очень любить javascript (хотя любить его особо не за что - хотя надо отдать должное, для спроектированного за неделю результат неплох, могло быть намного хуже). Если мы уж хотим не просто обертку над epoll/kevent, а что-то, с чем действительно удобно работать, нужны, как минимум, либо корутины, либо такую вещь (функциональщики скажут "о, монада!"), как await (см. C#). На самый крайний случай можно все изобразить на генераторах (тот же yield) и все получится вполне неплохо - в twisted ведь обошлись:
Код:
def main(reactor, username="alice", password="secret",
strport="ssl:host=example.com:port=993"):
endpoint = endpoints.clientFromString(reactor, strport)
factory = protocol.Factory()
factory.protocol = imap4.IMAP4Client
try:
client = yield endpoint.connect(factory)
yield client.login(username, password)
yield client.select('INBOX')
info = yield client.fetchEnvelope(imap4.MessageSet(1))
print 'First message subject:', info[1]['ENVELOPE'][1]
except:
print "IMAP4 client interaction failed"
failure.Failure().printTraceback()
Предлагаю написать то же самое на node.js и охренеть с числа вложенных коллбэков (да, я в курсе, как легким движением руки коллбэки записать линейно, по сути - меньше писанины не станет). И, кстати, в php5.5 - с пришествием генераторов - можно будет спокойненько на pecl/event изобразить аналог твистеда.
Но все же есть некоторые упорот^W упорные люди, которые готовы мужественно создавать себе проблемы и не менее мужественно их решать - берут, например, какой-нибудь, хоспади прости, кофескрипт (это поделие заслуживет отдельного обсуждения=)), добавляют в него await, пишут компилятор, который преобразует все return-ы в колбэки, и называют это IcedCoffeeScript... Не, задача даже интересная сама по себе, тут даже медаль, наверное, надо, за упорство и стремление... Но как эту портянку (уже нагеренных компилятором колбэков) отлаживать, это никто не подумал^W^W^W отложили на будущее - ну а че их дело концепция. Но тут конечно никакой sourcemap толком не поможет.
Но, хорошо, допустим, с коллбэками мы смирились. Хорошо, есть у нас чат-сервер, приконнектился клиент, отправил запрос, он обрабатывается, и где-то внутри наших, конечно же, любовно слинеенных в chain of responsibility колбэках вылетел exception. И тут мы приходим к прекрасному вопросу - а как же его, вашу ж мать, словить, не потеряв контекст запроса, чтобы хоть отправить клиенту 500-ю, а не оставлять висеть висяком до пришествия tcp таймаута? А? Болт на.
Пиши catch в каждом колбэке, что, конечно же, прямо таки соответствует смыслу и идеологии исключений. Не прошло и пары лет пиара ноджса как прогрессивной модной хипстерской технологии, майкрософтовское бабло освоили (выбросив к чертям заодно все posix-функции и сделав невозможной банальную демонизацию без написания сишного экстеншена) - к версии 0.8 выкрутились, придумали костыль под названием domains - в которые, опять же, ручками-ручками, надо обернуть каждый реквест. Удобно, че.
Ну и про майкрософт. Когда только вышел node.js 0.1, я быстренько для теста наваял простенький аналог fpm-а с мастером и префорк-воркерами, и был даже в некотором восторге - с одной стороны, все как обычно - вот posix-функции, вот сокеты, вот форк, и не надо рутинной фигни писать типа управления памятью, про винду, конечно, никто не думал, ведь действительно, на кой она черт кому нужна на серверах? Ну потом прискакал с чемоданом баблища microsoft, которому надо чего-то модного и хипстерского присунуть в свои студии, а то один ентерпрайз а это уже не модно - сразу же, ой, стала важна кроссплатформенность, как же мы без винды то жили, гребушки-воробушки. И начали обеспечение кроссплатформенности с того, что просто выкинули на мороз все posix/pcntl-врапперы, возможность передачи дескрипторов деткам - да и вообще, какой нафиг форк, это же не-кросс-платор-мен-но, товарищи! Ну вот потому (сколько там еще у нас лямов осталось? на датацентр хватает? на перекупить разработчиков соляриса хватает? вау, так о чем я) вот потому мы щас выпилим все, а к следующему билду - ну как фишка ляжет. Придумали в итоге кастрат под названием "кластер" (лол), который нифига не умеет вплоть до того, что даже классическую схему "запуститься рутом - детачнуться - забиндиться на 80-й - дропнуть рута - расфоркаться детками" сделать до сих пор штатного способа нет.
Это все было первое.
Второе - это вот эта вся хипстота. Асинхронно это быстро, вон апач медленный, потому что там эти, как их, форки, а вот nginx быстрый, потому что там... этот, ну вася, помнишь нам на парах информатики рассказывали - конечный автомат, во! И вот с таким суждением о вещах суют это куда попало. CMS на nodejs, блог на nodejs, да вашу мать. Понятно, что нечего на придурков смотреть, но всеь hype создан в основном благодаря им. Притом что тот же твистед много лет уже как был, только про него на хабрах мало писали, видимо.