LINUX.ORG.RU
ФорумTalks

Зачем нужен node.js?

 ,


0

4

Почему идея использовать инструмент не по назначению набрала такую популярность? Ведь js сам по себе сильно урезанный язык, и предназначался для создания всяких свистоперделок на стороне клиента? Как так получилось, что его стали использовать везде и повсюду? Мое имхо — куча фронтендщиков, которые не могут в программирование и не знают ничего кроме своего жаваскрипта загорелись идеей писать настоящие программы и зафорсили ноду.



Последнее исправление: beastie (всего исправлений: 1)

Ответ на: комментарий от shahid

WebCL?

А причём тут node.js?

Распараллелить типичный код можно через Future-Promise, т.е. те же асинхронные вызовы и callback'и, которые так любят node.js-проггеры.

И что, оно реально несколько ядер/процессоров задействует? Ну и управление состоянием в случае с коллбэками превращается в тот ещё кошмар.

hateyoufeel ★★★★★
()
Ответ на: комментарий от shahid

Они ничего не параллелят и тредов не создают. Плюс факториал - последовательная задача обычно, кроме совсем каких-то нетрадиционных решений

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

Плюс факториал - последовательная задача обычно

Вычисление факториала отлично распараллеливается. Я привёл его лишь как пример достаточно простой в реализации задачи в данном случае.

hateyoufeel ★★★★★
()

Ведь js сам по себе сильно урезанный язык

Всегда думал что js - сильно неурезаный. Прямо почти лисп какой-то

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

Самое смешное, что параллельные вычисления лежат за пределами применения любой из реализаций JavaScript, поэтому ему это вообще не нужно.

umren ★★★★★
()
Ответ на: комментарий от vertexua

Чйорт, факториал, а не фибоначчи. Все, пойду выпью кофе с утра

Выпей лучше водки, потому как вычисление ряда фибоначчи тоже распараллеливается.

P.S. Только это имеет смысл для очень больших чисел.

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от slyjoeh

Давай, приведи пример, где node.js будет ощутимо медленнее, чем с++.

А, это я еще тебе должен? Нап**дели тут сами без пруфов, а доказывать я значит должен?

Pavval ★★★★★
()
Ответ на: комментарий от hateyoufeel

А причём тут node.js?

Он будет крутится на сервере, который будет раздавать клиентам-браузерам считалку факториала, например. Или, если кому понадобиться считать факториал на ноде, заимплементят WebCL API на сервере.

управление состоянием в случае с коллбэками превращается в тот ещё кошмар

Состояние — это глобальные переменные?

shahid ★★★★★
()
Ответ на: комментарий от hateyoufeel

Выпей лучше водки, потому как вычисление ряда фибоначчи тоже распараллеливается.

Я это и имел ввиду, думал что приведут методы попроще, чем те, которые в голову приходят.

Но если речь шла о факториале, то тут тривиально, обсуждать нечего

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

Они ничего не параллелят и тредов не создают.

Они — это коллбэки? А колбэк на что вешается? Правильно, на задачу, которая выполняется в фоне. Этого хватает, чтобы весь http-бэкэнд запилить нормально. А заниматься математикой на ноде — это забивание гвоздей микроскопом.

shahid ★★★★★
()
Ответ на: комментарий от shahid

Ради такой задачи ничего не будут имплементить, а просто напишут отдельный сервер на С++/Java, как и рекомендуется делать в нормальном node.js программировании.

vertexua ★★★★★
()
Ответ на: комментарий от shahid

Да, синтаксис js для асинхронного программирование в js, мягко говорят, хреновый, но он есть. И есть костыли, облегчающие овладевание этим ужасом.

shahid ★★★★★
()
Ответ на: комментарий от vertexua

Там один тред и event-loop

ForkJoin осиливать не обязательно, чтобы отправить несколько асинхронных запросов к бд/удалённому серверу/etc.

shahid ★★★★★
()
Ответ на: комментарий от umren

давно есть cluster

Костыль через fork()? Чудесно, просто прекрасно.

hateyoufeel ★★★★★
()

njs полезен иногда для быстрого прототипа. пару раз довольно неплохо выручал.

Ну а некоторые на них вообще вон что делают http://virt2real.ru/node/55

Инструмент есть - можно пользоваться.

ossa ★★
()
Ответ на: комментарий от Pavval

На примере ряда 1 - 1/2 + 1/3 - 1/4 + 1/5 - ...

Javascript:

function calculate(end) {
    var start = 1
    var result = 0
    var plus = true
    for(var i = start; i <= end; i++) {
        if (plus) {
            result += 1 / i
        } else {
            result -= 1 / i
        }
        plus = !plus
    }
    return result
}
var a = calculate(10000000000)
console.log(a)

Запуск и результат:

$ time node hello.js
0.6931471805108239
node hello.js  41.63s user 0.16s system 100% cpu 41.608 total

C++:

#include <iostream>

double calculate(double end) {
    double start = 1.0;
    double sum = 0.0;
    bool plus = true;

    for(double i = start; i <= end; i++) {
        if (plus) {
            sum += 1 / i;
        } else {
            sum -= 1 / i;
        }
        plus = !plus;
    }
    return sum;
}

int main() {

    using std::cout;
    using std::endl;

    double a = calculate(10000000000);
    cout << a << endl;
    return 0;
}

Компиляция, выполнение и результат:

$ g++-4.9 -O3 -pipe -march=native -o hello hello.cpp
$ time ./hello
0.693147
./hello  40.74s user 0.01s system 99% cpu 40.755 total

40.74 секунды на С++ против 41.63 на javascript. Выигрыш меньше секунды, в пределах погрешности.

slyjoeh ★★★
()
Ответ на: комментарий от slyjoeh

Сборка мусора? Какая сборка мусора? И что этот тест показал? Что JIT отлично быстро собирает одну простую функцию, в которой типы очевидны и нету работы с кучей?

Pavval ★★★★★
()
Ответ на: комментарий от PolarFox

А потом мы случайно

Вот стоите вы в чистом поле, тут внезапно из-за угла выезжает танк

Vit ★★★★★
()
Ответ на: комментарий от hateyoufeel

Ну я не зря предлагал на caniuse сходить.

На самом деле за последние 5 лет народ уже навострился нормально на яваскрипте писать. Просто не надо там дергать за все ручки подряд, а потом плакать что попа болит. Там есть тонна легаси шлака. Но все кому надо, про него прекрасно знают и просто не используют.

Vit ★★★★★
()
Ответ на: комментарий от Vit

На самом деле за последние 5 лет народ уже навострился нормально на яваскрипте писать.

И в итоге получается та же самая лажа что и с C++ - переусложнённый язык с множеством несовместимых реализаций и кучей устаревшего шлака, из-за которого каждая команда разработчиков использует только подмножество языка, и у разных команд эти подмножества не совпадают. Только, в отличии от C++, JS нельзя использовать для полноценного программирования.

Просто не надо там дергать за все ручки подряд, а потом плакать что попа болит. Там есть тонна легаси шлака. Но все кому надо, про него прекрасно знают и просто не используют.

Может, вместо того, чтобы бороться с проблемами, создаваемыми кривым инструментом, стоит его выкинуть и взять нормальный?

hateyoufeel ★★★★★
()
Ответ на: комментарий от hateyoufeel

Мне ваши трепетные проблемы неведомы, пишу на яваскрипте и не парюсь. Хватает. Устраивает.

У кого есть непреодолимое желание стрелять на яваскрипте себе через пятку в голову - пускай стреляет, если больше заняться нечем.

Vit ★★★★★
()
Ответ на: комментарий от mono

Но джава-то больше не тормозит.

Куда уж больше!

Pavval ★★★★★
()
Ответ на: комментарий от slyjoeh

Ты меня утомил. Возьми да покажи пример. А то только языком махать горазд.

Унылая попытка перевести стрелки. Заявил, что нода сравнима с плюсами и ничем не доказал. Так слив и защитаем.

Pavval ★★★★★
()
Ответ на: комментарий от Vit

Ну фффааатит же мне числодробилки кидать. Мало кода+много итераций+нету работы с памятью -> да, JIT будет на высоте. А в реальной проге будет то, что мы видим на примере той же джавы (игра есть такая - угадай десктопный джава софт по тормозам).

Pavval ★★★★★
()
Ответ на: комментарий от slyjoeh

Так и запишем - балабол.

Ты факториал уже написал?

hateyoufeel ★★★★★
()
Ответ на: комментарий от Pavval

И я тебе объяснил, почему это херня, а не доказательство.

Я не посчитал твои объяснения убедительными. Тем более, ты не привел никакой конкретной задачи.

slyjoeh ★★★
()
Ответ на: комментарий от slyjoeh

Я не посчитал твои объяснения убедительными.

Лол, надо записать.

Pavval ★★★★★
()
Ответ на: комментарий от hateyoufeel

Ну я какбэ уже заметил, что вы взялись обсуждать то что слышали, а не то что знаете :)

Vit ★★★★★
()
Ответ на: комментарий от Pavval

Я вам просто наглядно показываю, что вы либо пишете глупости, либо очень плохо формулируете свои мысли, в надежде на телепатов.

Обсиратели яваскрипта какие-то унылые. В Белорибе уже праздник, а в Белобаджи до сих пор гневно трясут пачками перфокарт. Скучно же.

Vit ★★★★★
()
Ответ на: комментарий от vertexua

вертухай хоть и гнусная рожа у тебя на аватарке но ты шаришь

где учился-то? в Киеве?

rogerw
()
Ответ на: комментарий от Pavval

ну ваще то он показал пример и жс достойно справился

rogerw
()

Как ты думаешь, почему ардуйня (т.е. говнище по определению) стала попсой?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Vit

Неунылый, напиши мне на жабкоскрипте трассировщик через хитрую оптическую схему. Хотя бы 10 миллионов фотонов в секунду, чтобы за две-три недели получить результат.

Eddy_Em ☆☆☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.