首頁>資訊 >
世界要聞:Meta選定四種編程語言作為首選語言,官方:每種語言都經(jīng)過了嚴(yán)格篩選 2022-07-29 15:31:51  來源:36氪

當(dāng)?shù)貢r(shí)間 7 月 27 日,據(jù) The Register 報(bào)道,Meta 宣布將 Hack、Python、C++ 和 Rust 作為員工和開發(fā)人員在其平臺(tái)上構(gòu)建軟件的首選語言。

Meta 向 The Register 表示,在眾多編程語言中,決定使用哪種語言作為首選工作語言并不是件容易事。

Meta 稱,“重要的是,我們采用的每種語言都有最適合的特定應(yīng)用場(chǎng)景,所以我們會(huì)非常嚴(yán)格地評(píng)估每一種編程語言。” “一旦做好了選擇哪種語言的決定,我們會(huì)將這個(gè)決定堅(jiān)持下去,因此我們希望從一開始就深思熟慮,為我們的工程師提供最好的工具?!?/p>


(資料圖)

在 Meta 公司,一旦做出決定選擇了某種語言,那這種語言就是能在代碼編輯、調(diào)試、構(gòu)建、核心庫和互操作性方面為內(nèi)部和外部開發(fā)人員提供良好體驗(yàn)的編程語言。此外,公司還保證稱,使用公司批準(zhǔn)的語言編寫代碼的人,將不會(huì)被要求將代碼轉(zhuǎn)換為不同的語言。

每種語言都有特定的應(yīng)用場(chǎng)景

Python 是目前最流行的編程語言之一,也得到了廣泛的認(rèn)可。Meta 推薦 Python 用于數(shù)據(jù)科學(xué)、ML 應(yīng)用程序和 Instagram 相關(guān)代碼。

另一種被廣泛使用的通用編程語言 C++ ,被應(yīng)用在了 Meta 的后端服務(wù)中。

在最受歡迎的四種語言中,Rust 是一種深受喜愛的系統(tǒng)語言,它起源于 Mozilla,現(xiàn)在由 Rust 基金會(huì)監(jiān)督。

Rust 也被用于專注于性能的后端服務(wù)和 CLI 工具中。“我們的產(chǎn)品和服務(wù)中正在更多地使用 Rust,我們致力于長期使用 Rust 并歡迎早期采用者,”該公司說道。

正如所料,Meta 已將自己開發(fā)、開源的 Hack 指定為首選編程語言。Hack 是一種類型安全的 PHP 變體,它依賴于 HipHop 虛擬機(jī) (HHVM),是 Facebook 大部分的基礎(chǔ)。Meta 推薦將 Hack 用于業(yè)務(wù)邏輯和相對(duì)無狀態(tài)的應(yīng)用程序。

Hack 項(xiàng)目地址:https://hacklang.org/

Python 和 C++ 的受歡迎程度無需多言了,Meta 使用自研 Hack 語言也是情理之中。那么,Meta 又是如何引入并使用 Rust 的?

Rust 在 Facebook 的使用及發(fā)展

2016~2017 年:早期用于源代碼控制

在引入 Rust 編程語言之時(shí),F(xiàn)acebook 還不叫 Meta。

最古老的 Rust 代碼庫可以追溯到 2016 年。當(dāng)時(shí),F(xiàn)acebook 單體倉庫中的源代碼變化率開始“侵占” Mercurial 源代碼控制管理工具所能跟上的最大提交率。對(duì)此,F(xiàn)acebook 的源代碼控制團(tuán)隊(duì)發(fā)起了一項(xiàng)名為 Mononoke 的重寫項(xiàng)目,旨在將 Mercurial 的提交率再提高一些數(shù)量級(jí),從而滿足 Facebook 成千上萬的開發(fā)者和自動(dòng)化流程。

起初,使用 C++ 開發(fā) Mononoke 顯然是個(gè)選擇。在那時(shí),F(xiàn)acebook 的后端代碼庫對(duì) C++ 非常重視,這意味著 Mononoke 默認(rèn)會(huì)使用 C++ 實(shí)現(xiàn)。但是,源代碼控制團(tuán)隊(duì)需要考慮源代碼控制管理后端的可靠性需求,如果服務(wù)因停機(jī)或損壞而造成停頓時(shí),那么可靠性就成了首要的考慮因素。因此,團(tuán)隊(duì)選擇使用 Rust 代替了 C++。

Mononoke 是一款優(yōu)秀的測(cè)試平臺(tái),因?yàn)樗推渌?Facebook 系統(tǒng)有著天然的隔閡。如果 Mononoke 能夠使用 Mercurial 協(xié)議與客戶端服務(wù)進(jìn)行對(duì)話,并使用 Thrift 協(xié)議與某些存儲(chǔ)系統(tǒng)進(jìn)行通信,那么選擇 Rust 不會(huì)影響源代碼控制團(tuán)隊(duì)工作之外的任何事情。

源代碼控制團(tuán)隊(duì)愿意采用并且能夠支持他們自己使用任何 Rust 特定的工具和基礎(chǔ)設(shè)施。從 2019 年開始,Mononoke 就已經(jīng)成為我們單體倉庫的生產(chǎn)后端,并在過去幾年里成功地?cái)U(kuò)大了規(guī)模。

2017~2019 年:采用曲線

Mononoke 足以證明采用 Rust 是可行的,隨著時(shí)間的推移,其他項(xiàng)目也開始考慮和采用 Rust。一開始,這些項(xiàng)目通常是開發(fā)者的工具項(xiàng)目,它們不需要與更廣泛的服務(wù)基礎(chǔ)設(shè)施進(jìn)行集成,也不需要小型服務(wù) / 守護(hù)進(jìn)程,只需圍繞一些 C++ 客戶端庫使用幾個(gè)手寫的包裝器就能完成工作。

在 Facebook 的 Rust 工程師中,有許多人具有 Python 和 JavaScript 的背景,他們很欣賞 Rust 結(jié)合了高性能與編譯時(shí)錯(cuò)誤檢測(cè)這一特性。隨著越來越多的成功案例(例如性能提升了 2 到 4 個(gè)數(shù)量級(jí)等)在公司內(nèi)部流傳,人們對(duì)使用 Rust 實(shí)現(xiàn)后端服務(wù)代碼,以及探索其在移動(dòng)應(yīng)用程序中的應(yīng)用的興趣越來越濃。

2019~2020 年:Rust 得到了一些專門支持

2017 年到 2019 年,源代碼控制團(tuán)隊(duì)成為 Facebook 內(nèi)的非官方 Rust 支持團(tuán)隊(duì)。到了 2019 年,F(xiàn)acebook 的 Rust 開發(fā)者數(shù)量成倍增長,達(dá)到 100 多人。

增長背后的原因之一是,Rust 是開發(fā) Diem(原 Libra)區(qū)塊鏈的主要語言,由獨(dú)立的 Diem 協(xié)會(huì)監(jiān)督,而 Facebook 的數(shù)字錢包 Novi 就是 Diem 協(xié)會(huì)的成員。Diem 區(qū)塊鏈主要是由 Rust 編寫的,并涵蓋了 94% 的開源代碼庫。

考慮到需求的增加,源代碼控制團(tuán)隊(duì)的兼職協(xié)助并不足以支持受益的團(tuán)隊(duì)數(shù)量。因此,F(xiàn)acebook 創(chuàng)建了一個(gè)小型的 Rust 開發(fā)者體驗(yàn)團(tuán)隊(duì),該團(tuán)隊(duì)致力于解決工具和集成方面的挑戰(zhàn),比如在生產(chǎn)非 cargo 構(gòu)建中使用語言的開源包注冊(cè)表生態(tài)系統(tǒng)的機(jī)制。該團(tuán)隊(duì)為整個(gè)公司的 Rust 開發(fā)者建立了一個(gè)中央連接點(diǎn)以解鎖用例,優(yōu)先考慮短期的開發(fā)者體驗(yàn)問題,改進(jìn)核心庫,并在剛剛起步的 Rust 代碼庫通過百萬行大關(guān)時(shí)為其成功奠定基礎(chǔ)。

盡管 Rust 以難學(xué)著稱,但在過去幾年中,得益于內(nèi)存安全特性,Rust 還是贏得諸多青睞。它已經(jīng)被微軟、谷歌和 Linux 內(nèi)核開發(fā)人員采用,更不用說蘋果、亞馬遜和 Dropbox。

Facebook 自研編程語言Move 的消失

除了上述提到的四種編程語言外,其他的一些編程語言如 Java、Erlang、Haskell 和 Go,則被認(rèn)可用于特定用例,但在這些情況之外不被采用。

在加密貨幣大火的 2020 年,F(xiàn)acebook 還曾推出了一款自研 Move 語言,旨在為 Libra 區(qū)塊鏈奠定安全和可編程的基礎(chǔ)。

Libra(前稱為:GlobalCoin 或 Facebook Coin)是一種由 Facebook 公司(今 Meta 公司)提出的加密貨幣,原計(jì)劃于 2020 年發(fā)行,但因許多爭(zhēng)議而暫停發(fā)行。

Move 是一種安全靈活的 Libra 區(qū)塊鏈編程語言,它是一種可執(zhí)行的字節(jié)碼語言,用于實(shí)現(xiàn)自定義交易和智能合約。

但隨著扎克伯格“穩(wěn)定幣”夢(mèng)碎,Move 也逐漸退出人們的視野。

參考鏈接:

https://www.theregister.com/2022/07/27/meta_approves_four_programming_languages/

關(guān)鍵詞: 編程語言 開發(fā)人員 應(yīng)用程序

相關(guān)閱讀:
熱點(diǎn)
圖片 圖片