作者jackypan1989 (傑奇)
看板Soft_Job
標題Re: [討論] 請大家聊聊 JavaScript的缺陷
時間Tue Nov 3 14:16:51 2020
我覺得這個真的吵個沒完
不過看到 TS vs JS 兩者在爭論我也是笑笑的啦
列舉一些 TS 的優缺點
pros
1. 去掉一些 JS 最最最初級的錯誤
2. 某部分從 OO 抄來的概念,可能相較容易學
cons
1. UNSOUND,你看到的型別安全其實只能算是宣稱
2. 侵入式的模式 (相較 flow)
3. 幾乎無法避免測試撰寫
當然為了『開發速度』跟『社群生態』跟『IDE支持』
無可厚非,但就 TS 也只能說比 JS 好那一咪咪
事實上還是很多第三方要靠自己標,很多推斷的也是 2266
詳情可參考今年 JSDC 的 jeremy 的發表
如果你認為這樣就是有維護性,或是根本性的安全
那我只能說你根本不懂 TS 也不懂真正所謂的 type-safe
接下來講幾個重點,給版友們參考 (純粹看 type-safe)
以下是由差到好的分水嶺
1. JS
2. TS
3. TS + ramda + blabla
4. fp-ts
5. flow
--- 分水嶺 ---
6. elm
7. rescript (前身 reasonml)
--- 分水嶺 ---
8. purescript
9. haskell + ghcjs 或其他轉譯方言
10. rust 轉 wasm
所以我真的不知道 1 跟 2 有啥好爭的
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.116.14.10 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1604384214.A.EBB.html
1F:推 Gaitz: 看來 WebAssembly 是那些抱怨 JavaScript 卻要開發瀏覽器上 11/03 14:22
2F:→ Gaitz: 程式的最佳歸屬 XD 11/03 14:22
3F:→ as30385438: JS到TS大概就是0->1,的確還是沒好到哪, 但終於像個 11/03 14:23
4F:→ as30385438: 5盎持語言了 11/03 14:23
5F:→ as30385438: *正常 11/03 14:23
6F:推 testPtt: blazor好用 11/03 14:44
7F:推 alihue: 幾年後都要被 WebAssembly 屌打了 11/03 14:59
8F:→ testPtt: 我4覺得還早 看能不能擺脫html 或是html能再進步 11/03 15:55
9F:推 justben: 可以請教一下大大 java的安全性 vs Go 的安全性嗎 11/03 17:33
10F:→ justben: 透過 JVM 跟 打包好的執行檔 安全性是差不多的? 11/03 17:33
你問錯人,也問錯問題
我這邊的 安全性 指的是語言本身所提供的『型別』安全性
而不是資安或是逆向工程防禦機制
型別安全性的話,我必須說 GO 跟 Java 都蠻 xxoo 的
※ 編輯: jackypan1989 (122.116.14.10 臺灣), 11/03/2020 18:30:51
11F:推 plsmaop: C 有 void*,能直接memset 更恐怖啦 11/03 18:32
12F:→ strlen: 結論:都是垃圾 11/03 20:02
13F:推 sp063439: flow type 真的比 ts 簡單多惹 11/03 22:40
14F:推 CoNsTaR: 用 purescript 啊,row polymorphism 和 OO + inclusion 11/03 23:14
15F:→ CoNsTaR: polymorphism 根本不用比 11/03 23:14
16F:推 CoNsTaR: 會選用 Java 的腦大概也懂不了 type safety 是什麼 11/03 23:16
17F:→ CoNsTaR: 這倒是可以放心,大概只會吹捧 OO 和排除異己 11/03 23:16
18F:→ laputaflutin: 最近一直想來玩玩elm, 感覺很棒 11/04 03:10
19F:推 CoNsTaR: 沒看到內文有提到 purescript 了,那推 Idris2 好了,比 11/04 03:37
20F:→ CoNsTaR: Rust, Haskell 還舒爽,只是沒用過 js 和 node backend 11/04 03:37
21F:→ CoNsTaR: ,不知道實用性如何 11/04 03:37
22F:推 peterlai: c 和 c++ 也可以轉 wasm 11/04 07:09
23F:→ leo5916267: 但大家好像比較推ts 而不是flow? 11/04 10:52
24F:→ jobintan: QT也支援WebAssembly… 11/04 15:13
25F:→ superpandal: 只有數據很簡單 有了型別就要注意是哪個物種 位於底 11/04 16:50
26F:→ superpandal: 層就gg 11/04 16:50
27F:→ laputaflutin: 昨天還看到一個Svelte,感覺根本披著框架皮的新語言 11/04 17:17
28F:推 lturtsamuel: 所以你去用yew了嗎 11/04 19:19
29F:推 csieflyman: 有人用 kotlin/js 嗎? 11/04 19:28
30F:推 lturtsamuel: 對底層語言來說 型別安全跟計算機安全常常是同一件事 11/04 19:40
31F:→ dream1124: @laputaflutin 前端現在越來越流行框架和開發工具整合 11/04 19:52
32F:→ dream1124: 有些人看了就高潮,但我是想到抽象外溢的狀況就怕 11/04 19:54
33F:→ dream1124: Svelte 還是個一人、非公司、非營利的專案欸 11/04 19:54
34F:推 laputaflutin: 同意樓上,不過看到這次美國大選很多新聞網都拿 11/04 21:02
35F:→ laputaflutin: svelte來寫,感覺蠻有趣的,應該會拿來試試看 11/04 21:03
36F:推 shortoneal: 希望web assembly可以趕快起來,這樣就多一堆人能寫前 11/04 23:32
37F:推 No: 請問什麼是「抽象外溢」? 11/05 02:10
38F:推 plsmaop: 樓上,我猜是 leaky abstraction 11/05 07:07
39F:推 electgpro: 某語言:「在座的各位都是____」XD 11/08 01:23