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

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

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

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


(資料圖)

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

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

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

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

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

Rust 也被用于專(zhuān)注于性能的后端服務(wù)和 CLI 工具中?!拔覀兊漠a(chǎn)品和服務(wù)中正在更多地使用 Rust,我們致力于長(zhǎng)期使用 Rust 并歡迎早期采用者,”該公司說(shuō)道。

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

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

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

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

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

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

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

起初,使用 C++ 開(kāi)發(fā) Mononoke 顯然是個(gè)選擇。在那時(shí),F(xiàn)acebook 的后端代碼庫(kù)對(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é)議與客戶(hù)端服務(wù)進(jìn)行對(duì)話(huà),并使用 Thrift 協(xié)議與某些存儲(chǔ)系統(tǒng)進(jìn)行通信,那么選擇 Rust 不會(huì)影響源代碼控制團(tuán)隊(duì)工作之外的任何事情。

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

2017~2019 年:采用曲線

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

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

2019~2020 年:Rust 得到了一些專(zhuān)門(mén)支持

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

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

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

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

Facebook 自研編程語(yǔ)言Move 的消失

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

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

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

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

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

參考鏈接:

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

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

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