LINUX.ORG.RU

JavaScript в Node.JS и реактивное программирование

 , , ,


0

2

Я вот никак не могу понять: использование JS для реактивного програмирования в Node.JS это недоразумение или штатное использование JS? Я всегда считал JS императивным языком но Node.JS разорвал мне шаблоны.

Под реактивным программированием подразумевается парадигма программирования, ориентированная на потоки данных.

Вопрос в контексте парадигмы чистого JS, без всяких либ и расширений.

★★★★★

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

Не совсем распарсил базворды. Если имеешь ввиду асинхронщину, то для js разумеется она штатная, это же гуи-скриптуха. Правда никаких удобных примитивов не было до недавних пор, только примитивные замыкания. В ноде асинхронщина скорее не самоцель, а побочный эффект. Пацанам хотелось заюзать быстрый гуглодвижок, который действительно уделывает скриптоту как бог черепаху. А иного способа делать бэкенд на однопоточном js кроме как через event loop то и нету.

anonymous
()

Ну есть RxJs, пользуйся. Вот в ангуляре асинхронные события рекомендуется через Observable<T>, а не Promise<T> обрабатывать.

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

Мне тоже сложно понять что именно вы подразумевали под асинхронщиной.

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

А иного способа делать бэкенд на однопоточном js кроме как через event loop то и нету.

Citation needed. Берем потоки/корутины без общей памяти, по инстансу JS-рантайма на каждый поток (isolate из v8 - легковесные) + чаннелы из go. Уж явно будет масштабироваться получше чем event loop. Только жс-онли макакам такое - «сложнаа», «ссылку на функцию не передать между потоками» и т.д.

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

Уж явно будет масштабироваться получше чем event loop.

Это не явно, это только на одном вполне конкретном железе. «event loop» это такой компромис который неплох на большом разнообразии железа, в первую очередь на XEON.

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

Берем потоки/корутины без общей памяти, по инстансу JS-рантайма на каждый поток

Что-то никто не берет. Наверно потому что проще сразу на чем то более подходящем писать, чем городить костыли для жоэс.

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

Наверно потому что проще сразу на чем то более подходящем писать, чем городить костыли для жоэс.

Ага, скорее всего. Зачем писать пвсевдо-golang для JS, когда можно взять полноценный go.

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

anonymous
()

что касается нативной поддержки, то она есть. К примеру, Object.gefineProerty

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

Но это никак не подтверждает то, что Node.js это якобы вершина технологического прогресса с JS на сервере.

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

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

Мысль которую ты пытался вложить в сообщение. Оно выглядить как случайный набор пафосных штампов.

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

никто о жс на сервере не помышлял.

4.2 в лохматые годы в сервере от netscape был js. Чуть позже jscript был в classic asp, доводилось на нем писать.

pawnhearts ★★★★★
()

использование JS для реактивного програмирования в Node.JS

где именно ты такое увидел?

это недоразумение или штатное использование JS?

непонятно: ты хочешь это сделать и спрашиваешь, можно ли, или видел где то такое и спрашиваешь, нормально ли это?

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

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

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

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

Я всегда считал JS императивным языком
Реактивное программирование — парадигма программирования, ориентированная на потоки данных и распространение изменений.

Вы вообще отдаете себе отчет в том что Вы пишите, или это просто набор бессвязных фраз?

onceagain2017
()

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

anonymous
()

Я всегда считал JS императивным языком но Node.JS разорвал мне шаблоны.

А что, в ноде жс какой-то другой, не императивный? Там поток исполнения черезжопныйасинхронный, только и всего. Такое дерьмо можно изобразить на любом недоязычке с замыканиями. Хоть на похапе.

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

Да - я пытаюсь восстановится после разрыва шаблонов :-)

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

Я понимал парадигму программирования, ориентированнуя на потоки данных

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

Ну например штатное использование модуля async в некотором проприетарном софте

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

стандартное «гадание по языку»

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

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

Ты с такой колокольни ...

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

А что, js где то работает синхронно? Хоть где нибудь можно в js запустить операцию, которая заблокирует основной поток выполнения?

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

Making javascript synchronous again (SO):

function pausecomp(millis)
{
    var date = new Date();
    var curDate = null;
    do { curDate = new Date(); }
    while(curDate-date < millis);
}
anonymous
()
Ответ на: комментарий от eternal_sorrow

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

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

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