Meta选定四种编程语言作为首选语言,官方:每种语言都经过了严格筛选
当地时间7月27日,据The Register报道,Meta宣布将Hack、Python、C++和Rust作为员工和开发人员在其平台上构建软件的首选语言。
Meta向The Register表示,在众多编程语言中,决定使用哪种语言作为首选工作语言并不是件容易事。
Meta称,“重要的是,我们采用的每种语言都有最适合的特定应用场景,所以我们会非常严格地评估每一种编程语言。”“一旦做好了选择哪种语言的决定,我们会将这个决定坚持下去,因此我们希望从一开始就深思熟虑,为我们的工程师提供最好的工具。”
在Meta公司,一旦做出决定选择了某种语言,那这种语言就是能在代码编辑、调试、构建、核心库和互操作性方面为内部和外部开发人员提供良好体验的编程语言。此外,公司还保证称,使用公司批准的语言编写代码的人,将不会被要求将代码转换为不同的语言。
每种语言都有特定的应用场景
Python是目前最流行的编程语言之一,也得到了广泛的认可。Meta推荐Python用于数据科学、ML应用程序和Instagram相关代码。
另一种被广泛使用的通用编程语言C++,被应用在了Meta的后端服务中。
在最受欢迎的四种语言中,Rust是一种深受喜爱的系统语言,它起源于Mozilla,现在由Rust基金会监督。
Rust也被用于专注于性能的后端服务和CLI工具中。“我们的产品和服务中正在更多地使用Rust,我们致力于长期使用Rust并欢迎早期采用者,”该公司说道。
正如所料,Meta已将自己开发、开源的Hack指定为首选编程语言。Hack是一种类型安全的PHP变体,它依赖于HipHop虚拟机(HHVM),是Facebook大部分的基础。Meta推荐将Hack用于业务逻辑和相对无状态的应用程序。
Hack项目地址:https://hacklang.org/
Python和C++的受欢迎程度无需多言了,Meta使用自研Hack语言也是情理之中。那么,Meta又是如何引入并使用Rust的?
Rust在Facebook的使用及发展
2016~2017年:早期用于源代码控制
在引入Rust编程语言之时,Facebook还不叫Meta。
最古老的Rust代码库可以追溯到2016年。当时,Facebook单体仓库中的源代码变化率开始“侵占”Mercurial源代码控制管理工具所能跟上的最大提交率。对此,Facebook的源代码控制团队发起了一项名为Mononoke的重写项目,旨在将Mercurial的提交率再提高一些数量级,从而满足Facebook成千上万的开发者和自动化流程。
起初,使用C++开发Mononoke显然是个选择。在那时,Facebook的后端代码库对C++非常重视,这意味着Mononoke默认会使用C++实现。但是,源代码控制团队需要考虑源代码控制管理后端的可靠性需求,如果服务因停机或损坏而造成停顿时,那么可靠性就成了首要的考虑因素。因此,团队选择使用Rust代替了C++。
Mononoke是一款优秀的测试平台,因为它和其他Facebook系统有着天然的隔阂。如果Mononoke能够使用Mercurial协议与客户端服务进行对话,并使用Thrift协议与某些存储系统进行通信,那么选择Rust不会影响源代码控制团队工作之外的任何事情。
源代码控制团队愿意采用并且能够支持他们自己使用任何Rust特定的工具和基础设施。从2019年开始,Mononoke就已经成为我们单体仓库的生产后端,并在过去几年里成功地扩大了规模。
2017~2019年:采用曲线
Mononoke足以证明采用Rust是可行的,随着时间的推移,其他项目也开始考虑和采用Rust。一开始,这些项目通常是开发者的工具项目,它们不需要与更广泛的服务基础设施进行集成,也不需要小型服务/守护进程,只需围绕一些C++客户端库使用几个手写的包装器就能完成工作。
在Facebook的Rust工程师中,有许多人具有Python和JavaScript的背景,他们很欣赏Rust结合了高性能与编译时错误检测这一特性。随着越来越多的成功案例(例如性能提升了2到4个数量级等)在公司内部流传,人们对使用Rust实现后端服务代码,以及探索其在移动应用程序中的应用的兴趣越来越浓。
2019~2020年:Rust得到了一些专门支持
2017年到2019年,源代码控制团队成为Facebook内的非官方Rust支持团队。到了2019年,Facebook的Rust开发者数量成倍增长,达到100多人。
增长背后的原因之一是,Rust是开发Diem(原Libra)区块链的主要语言,由独立的Diem协会监督,而Facebook的数字钱包Novi就是Diem协会的成员。Diem区块链主要是由Rust编写的,并涵盖了94%的开源代码库。
考虑到需求的增加,源代码控制团队的兼职协助并不足以支持受益的团队数量。因此,Facebook创建了一个小型的Rust开发者体验团队,该团队致力于解决工具和集成方面的挑战,比如在生产非cargo构建中使用语言的开源包注册表生态系统的机制。该团队为整个公司的Rust开发者建立了一个中央连接点以解锁用例,优先考虑短期的开发者体验问题,改进核心库,并在刚刚起步的Rust代码库通过百万行大关时为其成功奠定基础。
尽管Rust以难学著称,但在过去几年中,得益于内存安全特性,Rust还是赢得诸多青睐。它已经被微软、谷歌和Linux内核开发人员采用,更不用说苹果、亚马逊和Dropbox。
Facebook自研编程语言Move的消失
除了上述提到的四种编程语言外,其他的一些编程语言如Java、Erlang、Haskell和Go,则被认可用于特定用例,但在这些情况之外不被采用。
在加密货币大火的2020年,Facebook还曾推出了一款自研Move语言,旨在为Libra区块链奠定安全和可编程的基础。
Libra(前称为:GlobalCoin或Facebook Coin)是一种由Facebook公司(今Meta公司)提出的加密货币,原计划于2020年发行,但因许多争议而暂停发行。
Move是一种安全灵活的Libra区块链编程语言,它是一种可执行的字节码语言,用于实现自定义交易和智能合约。
但随着扎克伯格“稳定币”梦碎,Move也逐渐退出人们的视野。