Rust,程序員創業的最佳選擇?

【CSDN 編者按】創業公司在選擇編程語言時往往壓力很大,尤其在考慮選擇相對小衆的新語言時。不僅需要考慮編程語言本身的語法、性能,還需要關注其對人才的吸引力。然而,這家創業公司最終的選擇是 Rust。快來看看他們的使用體驗吧!

原文鏈接:https://dailyedit.com/blog/why-rust-is-a-great-choice-for-startups/

聲明:本文爲 CSDN 翻譯,轉載請註明來源。

譯者 | 彎月    責編 | 彭慧中

出品 | CSDN(ID:CSDNnews)

我們是一支短小精悍的團隊,每週都會發布一些新東西。雖然我們如此高效的原因有很多,但其中之一便是我們在技術上的選擇給予了很大的幫助。我們會盡可能使用 Rust,因爲這種編程語言能夠讓我們快速而自信地完成公司的使命。

想當初,這個項目剛啓動的時候,我們只有三個成員。我是團隊中唯一的工程師,因此我可以自由地選擇語言和工具。雖然聽起來很不錯,但其實我的壓力很大。除了機器學習部分明顯應該選擇 Python 之外,其他一切都懸而未決。我們應該選擇平庸的 Java?還是應該選擇擁有強大社區的 Python?還是應該使用 JavaScript,因爲這種語言幾乎可以編寫一切軟件?

每個備選項都有一定的利弊,所以我一直在原地打轉。打破無限循環的是一個簡單的問題:選擇哪種編程語言會吸引優秀的人才,讓我們更自信、更頻繁地發佈產品?

於是,我們選擇了 Rust,如今雖然我們的項目已走向成熟,但 Rust 仍然是我們成長和成功的驅動力。

背景介紹

在職業生涯的發展過程中,我曾涉足過很多編程語言、編輯器、工具以及方法論。1994 年,我開始嘗試 QBasic 和 MS-DOS 自帶的遊戲 Gorillas。後來很快接觸到 C,並開始在 Unix 平臺上工作。後來又陸續學習了 C++、Python、PHP、Ruby,當然還有 JavaScript。其中一些只是爲了好玩,尤其是在年輕的時候,喜歡嘗試各種編程語言。

2015 年,我聽說了 Rust,然後開始嘗試。朋友一直說 Rust 的語法非常出色,但我表示懷疑,因爲我像許多其他人一樣,認爲 C 纔是最好的系統語言,因爲它是如此簡單和易於推理。

直到我開始使用 Rust。

很快我的懷疑就消失了,實際上我在使用 C 語言的時候犯了很多錯誤,比如內存泄漏、內存釋放之後再使用等,當用 C 語言構建小程序的時候,感覺不到太大問題,但是當你開始使用庫,將指針傳遞給其他黑盒子時,一切都會變得混亂起來。Rust 讓我認識到,我的編程水平並沒有想象中那麼高。編譯器就像一個頑固的模擬器教練,無論你做得多麼好,都得不到它的認可。我在 “borrow checker” 的階段陷入了苦戰,就好像腳趾踢到了牆角,痛徹心肺。

但這種感覺很快就過去了。

我前後花了大約 3 個月的時候,就適應了 Rust。後來,我開始使用 Rust 編寫更復雜的系統,例如具有異步行爲的分佈式作業隊列,與 FPGA 接口的嵌入式系統,逐漸地我開始感受到 Rust 的強大之處。使用 Rust 就像健身一樣,你必須勤加努力才能感受到效果。在這些項目之後,我並沒有遇到太多煩人的編譯器,而且代碼的組織在任何項目的早期就能看得很清晰。這就是 Rust,雖然有點不討喜,但確實能幫助你構建優秀的架構。

但 Rust 最大的優勢還不在於此。

最大的優勢是,在構建龐大而複雜的系統,同時順利通過編譯器後,得到的二進制文件就能正常工作,而且能保證一直正常。Rust 項目所需的調試量比我在其他任何地方看到的要少一個數量級。你可以使用帶有標記的聯合體(Rust 的枚舉)之類的功能,編寫清晰的代碼。這讓我對部署的信心大增。其次,任何項目都有定期的更改和維護。通常,新進公司的工程師都需要花費大量時間,深入研究代碼。然而,熟悉 Rust 的代碼非常容易,如果新來的工程師以奇怪的方式修改現有代碼,編譯器就會指出來。

吸引人才

如今 Rust 的發展已步入全盛時期,很多博客文章都點名表揚,當然也有很多博客文章揭露了它的缺點。這是一個很好的現象,這意味着使用 Rust 的人很多。雖然我很喜歡 Rust,但其他工程師呢?我們選擇 Rust 這樣相對小衆的語言,最大的憂慮在於人才庫的規模可能太小。世界頂級的人才他們如何看待 Rust,他們會選用哪種工具?

這個問題就像小馬過河,需要親身實踐。於是,我們聯繫了 Rust 的新聞郵件,併發布了招聘啓事。我們是一家遠程辦公的公司,我們不在乎工程師選擇住在哪裏。幸運的是,Jack Dorsey 在推特上寫道:“Rust 是一種完美的編程語言”。

在接下來的八週裏,我收到了近四千名申請人的電子郵件。四千!其實,很多人並沒有 Rust 的經驗,只不過他們都對 Rust 感興趣。突然之間,我感覺自己擁有一支世界級的工程團隊。

看來我們對 Rust 人才庫的擔憂是不必要的。這是一種對程序員有很大吸引力的編程語言。

實際使用 Rust

我們決定儘可能在一切地方使用 Rust。現在我們的 Web 後端是用 Rust 構建的,後臺任務處理器也是用 Rust 編寫的,就連分析引擎的調度程序也是 Rust。但有些地方沒有使用 Rust,因爲這些領域有很多偉大的庫,但 Rust 生態系統尚不存在。還有移動應用,我們使用的是 Flutter。

人們常說,Rust 的缺點之一是語法過於冗長,閱讀和編寫都需要很長時間。這話雖然沒錯,但有一些也不過是誇大其詞。例如,在我們的整個代碼庫中,手動寫註釋的情況也就十幾次。這種情況在應用程序代碼中並不常見。

使用 Rust,前期的準備工作更多。你需要克服編譯器的一堆約束。然而,雖然經驗的增加,編寫代碼的速度會越來越快。我們在短短几周的時間裏,就取得了很大進步,工作的速度也越來越快。我們團隊一致認爲理解 Rust 代碼的難度遠低於許多其他語言。Rust 代碼中的疑惑與模糊性很少,只需閱讀代碼,你就能確切地知道程序將要做什麼。

我們的工程師團隊非常給力,代碼的迭代速度非常快。我們決定使用 Rust 代碼重新編寫一個完整又複雜的模塊,而且我們確信通過編譯後就能正常工作。有時我們的邏輯會出錯,或者我們對問題的理解不完全正確,但這些是無論使用何種語言都會遇到的問題,但如果是需要投入生產的任務,則使用 Rust 可以讓我們更快地完成工作。

使用 Rust 編寫代碼,不僅需要的工程師更少,而且發展更爲長遠。

性能

Rust 的速度非常快,甚至比 Python、Ruby、JavaScript 和 Java 快幾個數量級。

對於創業公司而言,高性能意味着所需的服務器更少,相應的運營開銷也更低。作爲一家創業公司,如果你需要花錢構建每秒只能支持幾百個請求的 Web 服務器,那麼很快你的資金就會枯竭。

也許有人會反駁說,“工程師時間比計算機時間更珍貴”,話雖沒錯,但使用 Rust 還可以節省工程師的時間,一舉兩得何樂而不爲。

創業公司是否都應該使用 Rust?

我不是創業公司的顧問。

正如本文開頭的介紹,爲創業公司選擇編程語言的壓力很大,尤其是選擇一種相對比較小衆的新語言,我也是誠惶誠恐。不過,根據迄今爲止使用 Rust 的經驗來看,我們不想再嘗試其他任何語言。雖然 Rust 的入門有點難度,但回報也非常豐厚。

而在經驗豐富的團隊手中,Rust 就會變成一種超能力。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/Ok9apMM514T7NORwQsP8zQ