Как стать автором
Обновить

Комментарии 33

Зачем переводить такой бред, похоже автор опуса не подозревает что под капотом рельс находится язык ruby.
RoR же является набором библиотек, так что все ссылки на то, что в ноде нужно что-то доставлять — вызывает улыбку.

Ну и у ноды киллер фича — асинхронность. Так что учить нужно обязательно, без разницы какой язык и фреймворк у вас основные. Это довольно разные молотки.
Ну и у ноды киллер фича — асинхронность. Так что учить нужно обязательно, без разницы какой язык и фреймворк у вас основные.

В ноде это все-таки через колбэки, что не очень приятно. В этом плане гораздо приятнее смотрится реализация на Tornado/Python
Есть библиотеки вроде asynс, которые позволяют писать нормальный код даже без кофескриптов. Читается лучше, чем магии рельс.
При чём это так удачно, что подобное апи я сейчас реализую подобным образом и для php библиотек.

p.s. пишу на обоих сабжах, но они они дополнительные и знание не глубокие, но проблем не испытываю ни с тем, ни с другим.
не холивара ради (сам использую async), но Вам не кажется, что использовать стороннюю библиотеку для возможности писать нормальный код — это как-то не очень?
В node.js это нормальная практика. Так получилось, что стандартная библиотека не очень богатая. Всякие request и lodash сильно упрощают жизнь.
Поддерживаю async и только async, для контроля асинхронного потока, методы mapSeries, parallel и waterfall просто необходимы. С coffeescript' ом все будет еще более читабельнее для человека, который знаком с node.js и async.
Я думаю это было неизбежно и кто-нибудь все-равно написал бы обертку под это дело.
Чёрт его знает, но в каком языке это не так. В мире ruby — rails, node.js — expressjs, javascript — jquery, C# — .net, java — spring, php — laravel…

Я воспринимаю это нормально, мир не идеален.
НЛО прилетело и опубликовало эту надпись здесь
В этом плане гораздо приятнее смотрится реализация на Tornado/Python

Кроме этого, в Python ещё есть gevent и свежий asyncio. Ассортимент.
ну а кто запрещает использовать EventMachine и получить асинхронность и reactor-паттерн на руби?
joyent/node на плюсах основная часть, причем)
Правда?
image
Статистика выглядит так, потому что в свое время из репозитория вынесли несколько элементов в отдельные зависимости. В первую очередь, это Libuv и HTTP Parser.
Вообще странно Гитхаб считает статистику по языкам в проекте. Вот что выдал мне Cloc:

--------------------------------------------------------------------------------
Language                      files          blank        comment           code
--------------------------------------------------------------------------------
C++                             454          79233          58793         663096
C                              1267          52937          84691         354145
Javascript                     3887          53394         106568         278543
C/C++ Header                    805          44693          55454         185470
Assembly                        131          12115           2284         155225
Perl                            173           8884           8237          70352
Python                          174          10047          17745          40322
make                             98           2140            854          15797
HTML                            130           3386             58          12647
Lua                              25           1040           1355           9264
Bourne Shell                    108           1247           1383           5932
DOS Batch                        42            510            143           1807
m4                                2            515              0           1640
CSS                              10            163             89           1523
D                                 4            102            316            712
PHP                               5            133            473            698
Lisp                              5             56            107            489
Bourne Again Shell                6             12              6             85
Ruby                              1             15              4             76
YAML                              9              9              0             46
XML                               4              2              0             20
awk                               1              1              2             10
--------------------------------------------------------------------------------
SUM:                           7341         270634         338562        1797899
--------------------------------------------------------------------------------


Интересно, что если выкинуть зависимости и папку /tools, то статистика будет совсем другой: чисто в самом ноде намного больше JS:

--------------------------------------------------------------------------------
Language                      files          blank        comment           code
--------------------------------------------------------------------------------
Javascript                     1013          15056          25471          60398
C++                              42           4995           1759          17025
C/C++ Header                     46           1197           1412           8153


А если сиключить тесты, то получим:

--------------------------------------------------------------------------------
Language                      files          blank        comment           code
--------------------------------------------------------------------------------
Javascript                      104           4940           4100          19838
C++                              37           4885           1738          16678
C/C++ Header                     46           1197           1412           8153


Получается, что 2/3 JS-кода в Node.js — это тесты.
Это точно. Не судите строго, это всего лишь перевод.
JS — особенный язык в плане своей идеологии. Но и Ruby довольно особенный. Имхо, в плане лояльности к разработчику Ruby выше всяких похвал.
Да суть не в том даже. Просто node.js и rails это вобще разные вещи. С таким же успехлм можно сравнить PHP с JQuery.
Ну знаете, есть такая плоскость сравнения, когда решают, на чем писать новый проект. Говорят «над Java, или на .NET, или на Python, или на Rails, или на Node.js, или еще на чем-то». Да, можно до хрипоты спорить, что Java и Python — языки, .NET и Node.js — среды выполнения, а Ruby on Rails — фреймворк. Все равно в момент, когда обсуждают, на чем писать, все понимают, что именно имеется в виду.

Сравнивают экосистемы в целом: Rails vs Node — это

— Ruby + Rails + Bundler + Rubygems +…

против

— JavaScript + Node.js + npm +…
Ну я не понимаю как можно сравнить среду и фреймворк. Если уж сравнивать, то хотя бы Express и Rails. Наверное самое близкое что можно сравнить это Sails и Rails. Просто когда сравнивают такие вещи сразу кажется, что у автора недостаток понимания предметной области. (К переводу претензий нет).
Как я понимаю сравниваются соотношения результата с потраченными ресурсами.
тогда как в Rails вам придется иметь дело с SQL, Ruby и Javascript


На счет SQL — сильно спорно. Его приходится использовать только в исключительных случаях. Т.е. очень редко.
Кстати, да! Пишу уже несколько лет на Рельсах и случаи, когда приходилось писать прямой SQL запрос можно пересчитать буквально по пальцам. Что, как я считаю, очень и очень замечательно!
Писать чистый SQL в рельсах, это вообще-то признаки плохого тона. Для всего кастомного нужно использовать Arel
Я бы не стал писать большой сайт на node.js. Слишком многое, что уже есть в рельсах придется писать самому. На мой взгляд, даже десятикратный выиграш в производительности не стоит того времени, которое придется потратить на разработку. С другой же стороны, для API node.js в самый раз, хотя тут конкурентом скорее будет Sinatra.
Кстати, о асинхронности. В типичном веб сайтике единственное место, которое, как говорит Ryan Dahl, слишком медленное, чтобы на него ждать — это база данных. Все остальное и так уже в памяти. Может, если вы не будете ходить в базу десятки раз на каждый запрос, потеря производительности будет не такая уж и большая?
Прежде всего, Node.js — это веб-сервер с низкоуровневой маршрутизацией и возможностями администрирования, написанный на Javascript с целью асинхронности и высокой скорости.

Почему Node.js — это веб-сервер, почемe C/C++ не веб-сервер, а Node.js веб-сервер. В одном из моих проектов она вообще веб клиент, а ещё в одном она применяется для парсинга бинарных файлов и записи распарсенного в базу. Да на к ней можно подключить модуль веб-сервера, но зачем пытаться загнать реализацию JavaScript в рамки веба?
Вы правы: node.js это не веб сервер, а набор библиотек для JavaScript, хотя чаще всего используется как раз для всяких действий по HTTP; автор node.js, например, немного повёрнут на HTTP, и поэтому нам приходится обрабатывать чанки ответов по мере их поступления вместо более привычного и удобного целого объекта.
Но вы и неправы: это не реализация JavaScript. Реализация называется V8 и пишется совсем другими людьми.
> Product.find(params[:id])
> доступный повсюду из приложения, модулей, контроллеров и вью в Rails.

Но это же хрестоматийный буллшит!
Нода, нода. Асинхронность. Ужас какой. Все умрем. Traceur пользуйте уже наконец на бэкэнде, динозавры.

app.post('/callback', function (req, res) {
        runGenerator(function* (resume) {
            var [, [cellReflection]] = yield Cell.getRandomFree(resume),
                [, [cell]] = yield Cell.find(cellReflection._id).exec(resume),
                user = new User(req.params.user);
            yield user.save(resume);
            var [, lastBiggestId] = yield Cell.findBiggestId(resume);
            cell.user = user;
            cell.index = lastBiggestId + 1;
            yield cell.save(resume);
            res.json(cell);
        });
    });
НЛО прилетело и опубликовало эту надпись здесь
в 0.11 часть пакетов не работает, увы(
Лучше уж тогда сравнивать, например, Meteor и RoR, было бы честнее.

Мне нравятся и рельсы, и метеор, на обоих пишу, если что (-:
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации