rayshih 積分 3

我們使用 scala 開發 android app 已經過了半年,就單純 code 要我回去寫 java 我只會皺眉頭。

說真的其實可以只把 scala 當作語法調整過的 java,一樣可以不走 FP ,全部都使用 OO paradigm。也聽過一些純 FP 擁護者認為 scala 根本不能算 FP 語言,因為 scala 並沒有防止你寫 OO 之類之類。

就以這個觀點來說,scala 跟其他非 java 語言比起來根本沒有有所謂的較高的門檻。

回到 Rx

跟 promise 的 then 一樣,其實要用 Rx 只需要會 flatMap 跟 map 這兩個 function 就可以做到你所有想要做的事情,剩下的都是 helper method 而已。甚至,有些人根本只把 rx 當 event bus 用而已。

我覺得大家認為 Rx 的高門檻其實是建立在:大部份的工程師是從 imperative paradigm 開始學習 programming,所以要過渡到 declarative programming 會有很大的陣痛期,不過就這點來說 ReactJS 的社群接受度倒是很高,所以除去舊有思維的因素,我並不認爲 Rx 是一個高門檻技術。

我反而認為如果一個專案要跑五年以上,導入 Rx 絕對不會錯,FRP 的觀念下,state 被縮現在做小範圍,寫得好的話,所有 function 都可以沒有 side effect,這樣的架構是最好測試最好維護的。

倒是想請問你說「scala 被黑是因為開發者圈用實作的方式給了答案」,是怎麼樣的狀況?

這是文章的子討論串,你可以回到上層查看所有討論和文章
IngramChen 積分 3

好像討論的前題有點不大一樣?你說的我了解,也同意,不過我想你的說法可能比較適用只有兩個人一直開發同個專案二、三年這樣?不然就是要有個很有 sense 的團隊,很穩定地一起工作了一段時間。

我的前題比較類似這樣:

一個十萬行以上的專案,由 2 ~ 4+ 人開發,每年大概會替換 1~2 人,然後開發了 2 年以上。

說真的其實可以只把 scala 當作語法調整過的 java,一樣可以不走 FP ,全部都使用 OO paradigm。也聽過一些純 FP 擁護者認為 scala 根本不能算 FP 語言,因為 scala 並沒有防止你寫 OO 之類之類。

scala 的問題不在 FP 或是 OO,而是兩個都能寫,所以程式碼經過兩、三年;兩、三人經手開發後,就會開始混亂了,什麼寫法都會有。接手的人變成全部的寫法都要會,這不是說你想遵守某些原則就能解決的,因為人員會流動,計畫也會變更,很容易就變成拖彊野馬無法控制。這就是給太多功能的缺點之一。寫法太多又混了兩種 paradigm,門檻還不高嗎?

跟 promise 的 then 一樣,其實要用 Rx 只需要會 flatMap 跟 map 這兩個 function 就可以做到你所有想要做的事情,剩下的都是 helper method 而已。甚至,有些人根本只把 rx 當 event bus 用而已。

RxJava 的 helper method1 太多了,複雜到還要作圖來解說,這圖… 真的沒有比較好懂啊。而且你說的跟我想要的其實是一樣的東西啊。我就是比較希望有一個簡化版的 RxJava,flatMap/map 再加 5,6 個 helper,thread model 再簡化一點,這樣就夠了。寫法統一,維護的人門檻也不會太高。

scala 被黑是因為開發者圈用實作的方式給了答案

scala 在 200x 年的時候記得還蠻紅的 (在 startup 圈),但經過兩年後就有導入的人自己出來吐嘈,不過那些還可以說是個人的意見。但看看近幾年的新世代語言的風向,沒有人走 scala 的路子 (a scalable language, 一直不斷加強悍的功能)。我說的開發者圈 (設計語言的人) 用實作的方式給了答案,指的是這些設計者實作了新的語言,但他們的成品和 scala 的理念卻是相反的,換句話說就是認為 scala 的強項在他們眼中反而是缺點…

總之,我的想法就是語言和 library 本身提供的功能和概念,要限制在某種難度與自由度下。不然到後期就會失控。我不太相信靠開發者本身自律可以避免這種問題。(這某種程度上還真像法律與道德,道德的自律就是到某種程度以上就無能為力了)