Форум сайта python.su
Кто что думает о данном звере?
В плане веба и бизнес приложения.
Чем “затягивает” node.js
+ изначально асинхронный
+ полноценные анонимные ф-ии
+ на порядок быстрее (считается что обычно язык не является узким местом в приложении, но все же скорость лишней не бывает)
+ для веба, один язык для сервера и клиента (но пока не считаю это большим преимуществом)
+ по ощущениям гибче (не считая отсутствие yield), например у объекта можно подменить родительский “класс” (прототип), меньше “выкрутасов” для получения “магии” - метаклассы, декораторы и пр. а в JS это все делается в лоб - функциями, как по философии питона - “явное лучше не явного”.
в противовес, у питона:
+ стабильность (хотя node.js вроде уже не такой падающий как в первых версиях)
+ есть “yield” (в node.js пока этого нет)
остальное вроде примерно одинаково.
Вот все чаще задумываюсь о миграции, тем более что сейчас у питона непонятки с развитием, переходом на 3.х и т.п.
Офлайн
o7412369815963Как на счет gevent, Twisted например? Когда это действительно нужно, а не всегда.
+ изначально асинхронный
app.get('/', function(req, res) { var a = null; some_object.some_method('my_param', function(err, result) { if (err) { sys.puts('Error'); return; } other_object.other_method(result, function(err, result2)){ if (err) { sys.puts('Naive error'); return; } a = result2; }); }); });
o7412369815963Быстрее Питона? Зависит от задачи. Распараллеливание (и асинхронность) эффективно вне зависимости от языка.
+ на порядок быстрее
o7412369815963И все та же лапша из многовложенного кода.
+ полноценные анонимные ф-ии
o7412369815963Это чуть ли не единственный конек node.js.
+ для веба, один язык для сервера и клиента (но пока не считаю это большим преимуществом)
Офлайн
В догонку.
Молодой node.js уже показал себя не самой лучшей стороны фундаментальными изменениями в API.
Ну и, конечно, как на счет малого количества готовых библиотек - тоже следствие молодости.
Офлайн
С лапшой согласен, хотя можно и без лапши.
О построении страницы на стороне клиента.тут сервер не причем, с любым сервером можно строить на клиенте.
Эта естественная возможность - еще одна фишка node.js, которую объявляют как преимущество.
Молодой node.js уже показал себя не самой лучшей стороны фундаментальными изменениями в API.Где про это можно почитать?
Быстрее Питона? Зависит от задачи.Задача - само собой, я имею ввиду скорость отработки самого языка. но это не решающий фактор.
Ну и, конечно, как на счет малого количества готовых библиотек - тоже следствие молодости.Смотря как посчитать, вообще там уже навалом библиотек, конечно меньше чем у питона, но мне достаточно.
На примере Твиттера заявленный подход генерации страницы на стороне клиента в качестве способа оптимизации и снижения нагрузки на сервера оказался неработоспособным!это клиентская часть, сервер может быть любым, как бы node.js ни причем.
Офлайн
Я думаю надо попробовать что-то небольшое написать на node.js, что-б прочувствовать плюсы-минусы.
а там виднее будет, но подискутировать ещё готов.
Офлайн
o7412369815963Вот, например.
Где про это можно почитать?
o7412369815963Эта фишка была заявлена авторами на одной из презентаций как килер-фича.
тут сервер не причем, с любым сервером можно строить на клиенте.
o7412369815963Речь как раз о том, как быстро отдает серверная часть данные и как эта серверная часть масштабируется.
это клиентская часть, сервер может быть любым, как бы node.js ни причем.
o7412369815963Я читал это в блоге Твиттера - т.е. в первоисточнике, думаю, верить можно, иначе их бы давно заклевали.
тут вопрос клиентская генерация VS серверная, твитер конечно авторитет, но эта новость на хабре (там я её прочел) какая-то полужелтая да и думаю твитер что-то темнят.
У меня есть куча примеров где клиентская генерация по многим показателям опережает серверную.
Да и Google и Facebook юзает клиентскую и все ок.
Отредактировано Lexander (Июль 30, 2012 22:54:40)
Офлайн
LexanderЭто люди так страдают от отсутствия async?
Лапша из inplace обработчиков асинхронных событий в JavaScript - одна их худших вещей, что могли “придумать” для читаемости кода.
Например:
LexanderЭффективность асинхронности зависит от языка. Питон в многопоточность под нагрузкой не может - из-за гила он в несколько потоков и особенно на нескольких ядрах работает не быстрее, а медленнее Так что это не фича, а баг, пока дело не касается проблемы 10к соединений.
Распараллеливание (и асинхронность) эффективно вне зависимости от языка.
Отредактировано odnochlen (Авг. 1, 2012 06:21:21)
Офлайн
odnochlenРечь об асинхронности в контексте node.js. В основном, это - IO.
Эффективность асинхронности зависит от языка. Питон в многопоточность под нагрузкой не может - из-за гила он в несколько потоков и особенно на нескольких ядрах работает не быстрее, а медленнее Так что это не фича, а баг, пока дело не касается проблемы 10к соединений.
Офлайн
LexanderЭто как - там тоже GIL, и многопоточность через процессы?
то Нода однопоточна, как и Питон.
Офлайн
Что-то типа того.
Там есть пул потоков, которые обслуживаются в цикле (event loop).
Многопоточность - через процессы.
Их вкусностей - есть модуль кластеризации, который очень просто позволяет загрузить все ядра на текущей машине или передать работу на другие сервера кластера. Фактически - это синтакс-шугар для создания новых процессов (воркеров) и передачу им данных для обработки.
В Питоне, кстати, полно своих похожих инструментов. Parallel Python, execnet, например.
Да что там говорить, у нас есть целый раздел http://wiki.python.org/moin/ParallelProcessing
Офлайн