LINUX.ORG.RU

Мода на RxJava RxJS RxSwift

 , , ,


0

3

Мне одному кажется, что все эти Rx переусложнённая херня, с уклоном на функциональщину с асинхронными потоками, что в итоге выливается в сложность дебага и запутанный код, похожий на callback hell в миниатюре? Что все ООП паттерны выкидываются не понятно ради чего. Что работа с асинхронными абстракциями должна поддерживается в самом языке как async/await и Promise, а не базироваться на колбеках и observable, похоже, словно старый забытый KnockoutJS натягивают на Java, Swift и прочие ООП языки, и не понятно почему это довольно популярно, например, в мобильной разработке?

★★★★★

Rx кажется переусложнённой херней, потому что в массе своей, особенно в мобильной разработке, она используется для того, чтобы сделать что-то асинхронно, а потом результат обработать в main-треде.

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

Популярно это, потому что мода. В android уже заметили ужас ситуации и спешно запилили корутины.

mono ★★★★★
()

Что все ООП паттерны выкидываются не понятно ради чего.

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

Можешь сравнить, как это выглядит на рх/флоу и с «ООП патернами»

F457 ★★★★
()

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

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

Через setTimeout делается в две строчки, какие ещё флоу.

Legioner ★★★★★
()

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

При современных тенденциях вполне себе трендовая вещь.

ya-betmen ★★★★★
()

Что все ООП паттерны выкидываются не понятно ради чего.

ООП не нужно в реактивном программировании.

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

Причины, как ни странно, описаны топикстартером. Ты Observable пропускаешь через последовательности «функций-операторов» (нейминг не мой, все вопросы к ReactiveX), что по своей сути идентично point-free функциональным композициям, принимающим абстрактный тип данных.

Princesska ★★★★
()
21 января 2021 г.

Ну а что ты хочешь? Деды которые сделали computer science мертвы, а на местах архитекторов теперь сидят зумеры с половиной извилины. Да, фрп это натянутый на сову голобус, который сделали идиоты не знавшие про акторы. Асинки - это тоже форма рака, который появился потому что никто не понял что это в сути стиль передачи продолжений, и что кложуры и каррирование делают их фактически не нужными. Но количество идиотов увеличивается и дальше будет только хуже :)

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

Рад, что находятся люди, которые со временем изменят парадигму работы с асинхронным кодом, как один из паттернов - это делегирование, delegate pattern во всю использовали в старом Objective-C

menangen ★★★★★
() автор топика

Все-таки кто создал тред.

Как превратить негативное отношение в позитивное? (комментарий)

Эта штука переведена на десяток языков, а я до сих пор не могу придумать, зачем мне она была бы нужна. Особенно в JS, где есть промисы. Да и в C#, из которого эта волна пошла, оно непонятно зачем, поскольку в C# есть события-делегаты и async/await встроенный, релизнутый в том же году (2011), что и ReactiveX.

Если следовать парадигме позитивного отношения, то «если либы пишут, то это кому-то нужно».

работа с асинхронными абстракциями должна поддерживается в самом языке как async/await и Promise, а не базироваться на колбеках и observable, похоже, словно старый забытый KnockoutJS натягивают на Java, Swift и прочие ООП языки

При чем тут KnockoutJS? Она является, мягко говоря, не единственной либой с асинхронной обработкой.

не понятно почему это довольно популярно, например, в мобильной разработке?

На самом деле я толком почти не вижу на этом деле никаких проектов.

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

я тупо потоки пускал и там так же писал обычный блокирующий код

Бинго! Асинхронщина = зеленые потоки. А зачем это нужно, если вполне можно обойтись родными потоками?

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

Да, фрп это натянутый на сову голобус, который сделали идиоты не знавшие про акторы

Кто-то ремонтирует молотком телевизор. Ты гришь «молоток плох, им пользуются идиоты — ремонтируйте телевизор мясорубкой». FRP изначально был не более чем способом декларативного описания поведения, то есть, вместо модели «событие=>действия» применялось описание «тригер=>превращение», где само «превращение» могло быть вложенным описанием «тригер=>превращение», за счет чего декларативное описание могло изменять себя, при этом не задавая никаких конкретных действий, а оставляя некоторому исполнителю-реализатору свободу реализации конкретных превращений и определения моментов наступления событий. Эдакая функциональная инверсия управления. Вот и скажи мне, где здесь акторы и асинхронщина?

Вот React.js — это FRP, но только в месте функции render(), как декларативного описания поведения. Всякие там компоненты и состояния — это уже отход от FRP, или, скорее, детали реализации машины для выполнения FRP описания.

Асинки - это тоже форма рака, который появился потому что никто не понял что это в сути стиль передачи продолжений, и что кложуры и каррирование делают их фактически не нужными

Первые упоминания механизмов асинхронного программирования датируются 1992 годом, и это был Concurrent ML. Потом это начали разрабатывать для хаскеля в упомянутом тобой CPS стиле. В Microsoft функциональщину активно разрабатывали, и асинхронную монаду из хаскеля перетащили в F#, но, еще раз, она изначально и пришла из мира ML. Но CPS — это, прежде всего, форма описания асинхронного выполнения в функциональном стиле. Если у тебя императивный язык, то смысла в CPS нет вообще совсем никакого, это будет такое же натягивание совы на глобус, как реализация монад на сишных макросах.

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

один из паттернов - это делегирование, delegate pattern во всю использовали в старом Objective-C

Зачем нужны делегаты в языке, в котором есть замыкания? А то есть в почти любом современном высокоуровневом языке, включая Rust, C++, и Java.

byko3y ★★★★
()
Последнее исправление: byko3y (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.