為什麼Dark不選擇Rust/Clojure/Haskell/Scala? - darklang

banq發表於2020-11-10

本文來自Dark Lang的創始人兼執行長Paul Biggar,Darklang語言是一種程式語言(具有內建基礎結構),承諾“deployless”部署,從程式碼到生產的時間不超過50毫秒
Dark正在使用F#。這對包括我在內的人們來說都是一個驚喜。多年來,我們一直在談論是否使用Rust重寫;我們已經有了一個用Rust編寫的CLI和兩個服務,所以我很確定將來重寫的語言是Rust。
 

Why not Clojure/Haskell/Scala?
人們也詢問其他幾種語言,因此讓我們先將它們排除在外。

  • Clojure

我對Clojure有很多經驗,因為CircleCI幾乎都是Clojure。但是,我們花了很多時間來處理意外的複雜性,特別是“此欄位是什麼型別”,並且在整個地方都為空。因此,即使Clojure是一種可愛的語言,我還是故意選擇不使用動態型別的語言。
  • Haskell

以前,我曾經愛過Haskell,當時我在Recurse Center時嘗試用它編寫翻譯,但我不喜歡它。HN一個使用者的帖子完全符合我的感覺:

根據我的經驗,Haskell社群的學術性更高。一篇最近的文章:“有人向我指出的私人通訊的元組函式\ X - >(X,X)實際上是biapplicative對角化和一些相關結構的一個特例,這篇文章收到了39封狂熱的回覆。

  • Scala

我沒有使用Scala的經驗,但是我對語言和社群的總體感覺是整個事情都是一團糟。所以我沒有考慮,現在仍然不會。

 

Ok, why not Rust?
快速總結一下, Rust好的部分是:

  • 工具很棒
  • 庫包生態系統很棒
  • 社群很棒
  • 宏很好(儘管我覺得我過度使用它們來覆蓋語言中的問題)

壞的部分是
  • 不得不做記憶體管理糟透了
  • 模式匹配不能很好地工作
  • 做事情的方式太多(Arc vs Rc,非同步vs sync,不同的stdlib)
  • 語言不是一成不變的
  • 必須與編譯器戰鬥

最終,當需要做出決定時,它歸結為幾項主要事情:缺少GCP庫以及該語言的低階本質。
Rust有大量的庫,它們工作得很好,並且整合得很好。他們具有HoneycombLaunchDarklyRollbar的3rdparty庫,它們對我們來說是重要的服務。但是,用於GCP似乎是超級草稿。
當試圖使用非同步時,我真的很難使事情變得非同步。顯然,遞迴為非同步增加了新的複雜度。但是殺死我的是pinning
 

Rust是一種低階語言
我正在使用的是F#/ OCaml的語言, 它們更容易實現;Rust的語義雖然使許多事情變得容易,但並非是我想做的。
我認為我們大多數人都不需要Rust。我認為Rust是一個很棒的社群,生態系統和工具,它包裝的語言很好地解決了我們很少有人遇到的問題。
Rust是一種非常底層的語言,這很容易忘記,我們對社群和工具如此著迷,以至於我們忘記了底層語言很爛。
也許Rust比大多數底層語言都更好,但請記住垃圾收集器很棒,透過使用GC,我們無需做任何會在Rust中所有涉及GC問題的工作。也許這會降低效能,但是我需要能夠快速編寫程式碼的能力遠遠超過我需要的額外效能。

相關:Dark網站的後端為什麼選擇F#?

 

相關文章