LINUX.ORG.RU

Node.js: где лучше, а где лучше не


0

2

Людям, пользующимся или собирающимся попробовать node.js: как вы считаете, где его лучше использовать, а где лучше НЕ использовать?

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

Рассказы эрлангистов о бездушном устаревшем жаваскрипте тоже приветствуются ;)

★★★★☆

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

unikoid ★★★
()

> где его лучше использовать

Где нужно получить максимальную производительность по наименьшей цене. В этой связи «рассказы эрлангистов» не имеют значения, ибо там цена существенно выше.

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

>Язык то как раз супер.
Что, правда?
И коллекции нормальные есть, и ооп вменяемое, и наследование не через зад, и в общем синтаксис хорош и не располагает к глупым ошибкам (по типу забыл var - счастливой отладки)?
Добавим сюда, что nodejs основывается на v8, в котором нет множества вкусных фишек из js 1.7-1.8, по типу итераторов и генераторов с сопрограммами.

unikoid ★★★
()

Зачем его вообще юзать, непонятно

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

> И коллекции нормальные есть

Что не так с коллекциями?

ооп вменяемое


Более чем.

наследование не через зад


Я понял, не смогли осилить прототипы?

и в общем синтаксис хорош и не располагает к глупым ошибкам

(по типу забыл var - счастливой отладки)?



Что-то у меня таких проблем нет. С отладкой тоже никаких проблем нет.

по типу итераторов и генераторов с сопрограммами.


Сопрограммы там не нужны же.

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

А я и не говорил что отличный. Закусываешь нижнюю губу, на одной руку отжимаешься на кулаках от пола, под грудью раскаленные угли, свободной рукой пишешь на С и не плачешь.

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

>Что не так с коллекциями?
Как минимум нет нормальных ассоциативных массивов. У Object я даже длину без итерации узнать не могу.

Я понял, не смогли осилить прототипы?

Смогли, смогли, только не осилили, зачем такой изврат нужен.

Что-то у меня таких проблем нет. С отладкой тоже никаких проблем нет.

Очень рад за вас.

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

> Как минимум нет нормальных ассоциативных массивов.

Приплыли.

У Object я даже длину без итерации узнать не могу


Прототипы же. А, кстати, зачем? Это что, такая частая и нужная вещь?

зачем такой изврат нужен.


Это и есть «неосилил». Удобно же.

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

> Не надо ползать на корчах в поисках места, где случилось

неявное приведение типов.


Дайте догадаюсь, вы хаскелист? Ибо от питонщика такое всё же странно было бы слышать. Что вы такое пишете, что у вас с этим проблемы? Я вообще не помню, что у меня с этим были какие-либо проблемы, один сплошной профит.

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

>Приплыли.
Что, есть? Ткните носом, пожалуйста.

А, кстати, зачем? Это что, такая частая и нужная вещь?

Ну с учетом того, что другого способа построить ассоциативный массив я не увидел - по-моему вполне нужная.

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

он про то, что у хэшмапа нельзя вычислить длину кроме как через

var count = 0;
  for (var k in obj) {
    count++;
  }

и ниасилил прототипы

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от anonymous

Надеюсь, ты в шоке, что в питоне есть перегрузка операций?

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

Дайте догадаюсь, вы хаскелист?

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

baverman ★★★
()
Ответ на: комментарий от baverman
js> 2 + '2'
22
js> 2 * '2'
4

Это в стиле «а в Лиспе много скобочек!!!» Давно уже пора понять, что JS — это никакой не Си и не PHP. Просто выучи правила type cast'инга и почитай стандарт.

Например, вот.

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

Явное лучше неявного! — Сказали хором адепты церкви Святого Змия.

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

И коллекции нормальные есть, и ооп вменяемое, и наследование не через зад, и в общем синтаксис хорош и не располагает к глупым ошибкам (по типу забыл var - счастливой отладки)?

Со своими порядками, да в чужой храм вы лучше не лезьте.

Если ООП не такое же, как в Джаве, то это не значит, что язык — УГ. Предположу, что и на CLOS вы плюетесь. Верно?

По поводу var: правило как правило, которое нужно выучить.

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

Давно уже пора понять, что JS — это никакой не Си и не PHP.

Как раз по этому признаку он похож на Си и PHP, что совсем не к лицу современному языку.

И да, urxvt привел правильный псалом.

baverman ★★★
()

Унылая тема, фактически от исхода срача JS никуда не денется и ничего в нем не поменяется.

Интерестнее Node.js. Есть ли профит на чем-то кроме синтетических hello world. Есть ли в нем Continuations или что-то подобное, чтобы экономить память? Если взять Jetty и написать аналогичное Comet приложение, будет ли медленее? Если нет, то в чем профит, так как под JS есть намного меньше вкусяшек?

vertexua ★★★★★
()
Ответ на: комментарий от anonymous
Python 2.6.6 (r266:84292, Dec 26 2010, 22:31:48)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 2 * '2'
'22'
>>>

Дурацкий пример.

Попробуй 2 + 2. Выкинет TypeError.

А оператор умножения у строкового типа в Python определен и поведение его предсказуемо и определено.

Попробуй еще: 3 * 'test' или '5' * 4. Все логично.

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

> Интерестнее Node.js.

про это топик и есть

аналогичное Comet приложение


а не быстрее ли будет таки стандартное решение, без кометов в стиле Jetty/Servlet3? Часть серверов на обслуживание статики, часть серверов - на динамику с нодом, часть - на бд/мап, и общение между статикой и динамикой через JSON API по событиям со стороны клиента?

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от baverman

> Язык то как раз супер.

Поддерживаю

~$ js
js> 2 + '2'
22
js> 2 * '2'
4
Отличный язык

именно! отличный! :-)

а вот возмём например PHP:

$ php
<?php
if('0') { echo "в PHP это не случится\n"; } else { echo "вам кажется это логочно? тогда смотрите дальше...\n"; }
if('00') { echo "PHP такой PHP :-D\n"; }
^D
вам кажется это логочно? тогда смотрите дальше...
PHP такой PHP :-D
user_id_68054 ★★★★★
()
Ответ на: комментарий от user_id_68054

а вот возмём например PHP

А возьми, например, руби. А то несчастный пых только безрукие палкой не тыкали.

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

> По поводу var: правило как правило, которое нужно выучить.

по поводу var — нужно использовать 'use strict'

впрочем так подозреваю что для V8 это только ближайшее будущее [а не настоящее]

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

У него просто обычная производительность все-таки может хромать. V8, то да, но ведь это JS все равно. Вообще надо бенчить. Разница на вычислительно емких задачах и на коротких вызовах будет большая. И нужно побенчить Jetty на статике, в сорцах там я смотрел если источник - файл, статика, то выполняется transferTo, что копирует данные средствами ядра.

Но это не главное. Я просто говорю, что Node.js - наколеночное поделие и его интеграция может быть сомнительная

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

>Я понял, не смогли осилить прототипы?
А прототипы в Javascript вообще очень трудно осилить. Особенно после прототипов в нормальных языках где они сделаны просто и логично, а не через одно место.

Если, например, кто-нибудь выучил бы Lua, а потом взялся за Javascript, он бы, наверное, подумал, что JS сумасшедшие люди составляли.

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

2 + '2' и условие выглядит как: '2'+ 2 и ответ '22' + - это конкатенация строк :) Преобразование в строку. Так что отрабатывается правильно, тоже самое и в java. Если язык обрабатывает конкатенацию по другому значит значит «Отличный язык» и пользоваться им нельзя.

ИМХО: Товарищ тролль.

anonymous
()
Ответ на: комментарий от unikoid

> в котором нет множества вкусных фишек из js 1.7-1.8

V8 реализует ECMAScript. Спецификация ECMA-262 5th edition. Новее ничего нет. Следующая спека в разработке.

JS X.X это все мозиловские поделия.

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

> V8 реализует ECMAScript. Спецификация ECMA-262 5th edition. Новее ничего нет. Следующая спека в разработке.

есть в этом «ECMA-262 5th edition» генераторы и оператор yield?

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

> он бы, наверное, подумал, что JS сумасшедшие люди составляли

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

но зачем это убожество сегодня тащить в хайлоад - мне тоже не совсем ясно

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

2 + '2' и условие выглядит как: '2'+ 2 и ответ '22' + - это конкатенация строк :) Преобразование в строку. Так что отрабатывается правильно, тоже самое и в java. Если язык обрабатывает конкатенацию по другому значит значит «Отличный язык» и пользоваться им нельзя.

тогда самый лучший в мире ЯП которым офигенно как можно пользоваться это perl.

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

>javascript просто проектировали торопясь и на коленке
Именно. Сейчас вот чистят всякими strict mode от отклонений от спецификации, а было бы неплохо спецификацию почистить.

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

Его не чистить нужно, а писать следующую «версию», не совместимую с текущим стандартом. strict mode это агония перед перерождением маленькой кучки гогна в большую.

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

wtfjs.com

Крайне рекомендуется к прочтению всем адептам языка.

И? В мире существует очень много языков, в которых можно прострелить себе ногу.

Комментарий совершенно не в тему.

random_linux_user
()

Его стоит использовать в highload приложениях в качестве фронтенд-сервера. В качестве бекенда лучше всего rest-сервисы. Разделение труда, ептыть. Основной профит в том, что верстальщики знают js и могут заняться полностью разработкой фронтенда.

Ерлангисты идут лесом, так как их ерланг для stateful сервисов вроде онлайн игр и видео серверов. В обычном вебе оно как козе баян, так как проблем с параллелизмом в вебе не существует благодаря чудной stateless архитектуре.

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