為什麼Dark不選擇Rust/Clojure/Haskell/Scala? - darklang
本文來自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有大量的庫,它們工作得很好,並且整合得很好。他們具有Honeycomb,LaunchDarkly和Rollbar的3rdparty庫,它們對我們來說是重要的服務。但是,用於GCP的庫似乎是超級草稿。
當試圖使用非同步時,我真的很難使事情變得非同步。顯然,遞迴為非同步增加了新的複雜度。但是殺死我的是pinning。
Rust是一種低階語言
我正在使用的是F#/ OCaml的語言, 它們更容易實現;Rust的語義雖然使許多事情變得容易,但並非是我想做的。
我認為我們大多數人都不需要Rust。我認為Rust是一個很棒的社群,生態系統和工具,它包裝的語言很好地解決了我們很少有人遇到的問題。
Rust是一種非常底層的語言,這很容易忘記,我們對社群和工具如此著迷,以至於我們忘記了底層語言很爛。
也許Rust比大多數底層語言都更好,但請記住垃圾收集器很棒,透過使用GC,我們無需做任何會在Rust中所有涉及GC問題的工作。也許這會降低效能,但是我需要能夠快速編寫程式碼的能力遠遠超過我需要的額外效能。
相關:Dark網站的後端為什麼選擇F#?
相關文章
- Dark網站的後端為什麼選擇F#? - darklang網站後端
- Aembit為什麼選擇 Rust?Rust
- 為什麼選擇使用Rust?Rust
- Elasticsearch 中為什麼選擇倒排索引而不選擇 B 樹索引Elasticsearch索引
- 為什麼不上架,選擇企業簽名?
- 為什麼 Mac 使用者不選擇 LinuxMacLinux
- 為什麼選擇Rust作為物聯網的程式語言? - Ash MoosaRust
- 為什麼選擇Guice框架GUI框架
- 為什麼要選擇SQL?SQL
- 資質平平的你為什麼不選擇小程式代理?
- 為什麼選擇.NETCore?NetCore
- 為什麼選擇centos系統CentOS
- 為什麼選擇高防DNS?DNS
- 為什麼選擇Cynefin框架? – zwischenzugs框架
- (轉)為什麼選擇機器學習策略機器學習
- 我為什麼選擇 Angular 2?Angular
- Android為什麼選擇binderAndroid
- 為什麼選擇Twitter Storm?薦ORM
- 為什麼選擇ASP.NET CoreASP.NET
- 老闆:你為什麼要選擇 Vue?Vue
- 為什麼選擇PostgreSQL而不是MySQLMySql
- 我為什麼選擇成為獨立開發者
- 為什麼建議新手選擇Ubuntu?告訴你選擇理由!Ubuntu
- 為什麼我不選擇React、Vue.js作為SAAS網站的前端框架ReactVue.js網站前端框架
- 為什麼選擇獨立伺服器伺服器
- 為什麼選擇學習六西格瑪?
- 為什麼爬蟲要選擇住宅代理?爬蟲
- 為什麼選擇無伺服器模型?伺服器模型
- 為什麼選擇Python做爬蟲Python爬蟲
- 為什麼GitLab選擇Vue.js?GitlabVue.js
- 我為什麼選擇了 AdonisJsJS
- 如何選擇版本控制系統——為什麼選擇Git版本控制系統Git
- 為什麼要選擇蘋果企業簽名?蘋果
- 為什麼機器學習會選擇Python語言?機器學習Python
- 為什麼要選擇分散式資料庫?分散式資料庫
- 為什麼要選擇電話機器人?機器人
- 我為什麼放棄MySQL?選擇了MongoDBMySqlMongoDB
- 為什麼選擇高防DNS雲解析?(一)DNS