ArchSummit 全球架构师峰会杭州倒计时10天,速来围观! 了解详情
写点什么

Meta 选定四种编程语言作为首选语言,官方:每种语言都经过了严格筛选

  • 2022 年 7 月 29 日
  • 本文字数:2366 字

    阅读完需:约 8 分钟

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 也逐渐退出人们的视野。

 

参考链接:

 

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

2022 年 7 月 29 日 14:352424
用户头像

发布了 425 篇内容, 共 129.2 次阅读, 收获喜欢 565 次。

关注

评论

发布
暂无评论
发现更多内容

活动预告 | 洞见科技纪凯受邀出席「隐私计算应用与发展论坛」

洞见科技

「Substrate Evangelist Program」顺利开幕,期待各位布道者共建 Substrate 生态!

One Block Community

Substrate 区块链资讯 波卡生态 Parity

培训学习选择java好还是前端好

@零度

JAVA开发 web前端

javaScript深拷贝和浅拷贝简单梳理

程序猿布欧

JavaScript 前端 深拷贝 浅拷贝 深拷贝与浅拷贝

企评家,助力创业板企业成长性评价

企评家

企业评价 企业大数据 创业板 评价维度 成长性

手把手推导Ring All-reduce的数学性质

OneFlow

深度学习 reduce-scatter all-gather 环状算法

EasyCV开源|开箱即用的视觉自监督+Transformer算法库

阿里云大数据AI技术

算法 计算机视觉 开源技术

跨域处理

源字节1号

软件开发 后端开发 租房小程序

“一个扫描枪一张表”,韵达选择 TDengine 应对每日亿级数据量

TDengine

数据库 tdengine

为安全而生!浪潮云参编的《数据安全法》实施参考(第一版)重磅发布

浪潮云

云安全

一文详解Java日志框架JUL

华为云开发者联盟

Java 日志 框架 日志框架 JUL

【阿里云大咖说】填问卷送好礼正式上线,快来参与吧!

大咖说

大咖说 问卷 礼品

丁未篇 「元宇宙超次元 」 《「內元宇宙」聯載》

因田木

命書 我富網

全面解读OpenHarmony 3.1 Release版本,夯实技术底座 打造繁荣生态

科技汇

linux监控软件有哪些?用什么软件好?

行云管家

Linux 运维 监控软件

这是一个有关自律的复杂故事

翁一磊

数据分析 监控 自律 跑步 可观测

JavaScript的事件循环机制浅析

程序猿布欧

JavaScript 前端 前端面试 防抖节流

Hoo虎符研究院|Cradle调研报告

区块链前沿News

虎符 Hoo 虎符研究院

【易安联】安全都是有边界的,零信任也不例外

Geek_2d6073

想参加培训学习web前端不知道靠不靠谱

@零度

web前端开发

在MAUI中使用Masa Blazor

MASA技术团队

C# .net 微软 组件 组件库

Windows服务器运维用什么软件好?不想加班了!

行云管家

运维 IT运维 行云管家 服务器运维 Windows服务器

双许可、先决条件、附加条款……开源许可证的疑难杂问

一君

BIGO 的数据管理与应用实践

NebulaGraph

数据库 图数据库 数据管理

《数字经济全景白皮书》Z世代用户洞察篇(3)重磅发布!

易观分析

用户分析 Z世代

OpenHarmony 技术日直播回顾丨共建新技术,开拓新领域

OpenHarmony开发者社区

OpenHarmony 技术日

宣布 Databricks 支持 Amazon Graviton2,性价比提高 3 倍

亚马逊云科技 (Amazon Web Services)

Tech 专栏

新零售SaaS架构:组织管理的底层逻辑与架构设计

汤师爷

系统架构 SaaS 架构设计 组织架构

大数据培训学习程序员有必要吗

@零度

大数据开发

什么是敏捷开发,敏捷开发落地指南之迭代排期

阿里云云效

云计算 阿里云 敏捷开发 研发 研发敏捷

自研数据库技术破局与最佳实践 | DBTalk 技术公开课第3期

自研数据库技术破局与最佳实践 | DBTalk 技术公开课第3期

Meta选定四种编程语言作为首选语言,官方:每种语言都经过了严格筛选_区块链_李冬梅_InfoQ精选文章