写点什么

Meta 在服务器端用了哪些编程语言?

  • 2022-07-29
  • 本文字数:1350 字

    阅读完需:约 4 分钟

Meta在服务器端用了哪些编程语言?

Meta 软件工程经理 Eric Garcia 在 7 月 27 日发布的一篇博文中介绍了 Meta 服务器端使用的编程语言有哪些,以及内部对于编程语言的采用是如何考虑的。


“在 Meta 内部,我们会在各种各样的平台和使用案例上用到很多不同的编程语言。支持一种新的语言并不是一个轻易就能做出的决定。”Eric 说道,“每当我们评估一种语言时,我们都要做大量的工作。一旦我们做出要采用某项语言的决定,就会坚持下去,因此我们需要从一开始就深思熟虑,为我们的工程师提供最好的工具。”


那么,一旦 Meta 决定支持、采用某个编程语言,这意味着什么?


  • 如果一种语言被支持,开发人员就可以在代码编辑、调试、构建和部署,以及核心库和互操作性方面获得良好的体验。并且开发人员不会被要求放弃这些受支持的语言,可以一直在这上面深耕。在大多数情况下,Meta 会建议新项目和服务选用受支持的语言。

  • 对 Meta 来说,全力支持一门语言是一项重大投资,所以对于那些依赖社区支持的“长尾”语言,Meta 的建议是避免在新的应用中使用它们。除非团队已经在该语言上有了非常大的投资。否则,采用这些语言的团队就不得不承担起维护的负担。


回到服务器端语言,Meta 主要用的是 Hack、C++、Rust 和 Python,具体而言:


  • 对性能敏感的后端服务,鼓励使用 C++以及 Rust。

  • 对于 CLI 工具,推荐 Rust。这是今年才有的一个新建议。

  • 对于业务逻辑和相对无状态的应用程序,Hack 生态系统在 Meta 内部拥有最高水平的自动化和最大力度支持,也是内部推荐的语言。

  • 对于数据科学、机器学习应用和 Instagram,Python 仍然是首选语言。

  • 对于特定用例,Meta 会支持其他语言,包括 Java、Erlang、Haskell 和 Go。不过这些语言目前在特定用例之外尚没有得到 Meta 的广泛支持。


那 Meta 是如何总结出这样一份编程语言推荐名单呢?


Eric 强调,他们一般不轻易在这份名单中增加新的语言,因为在 Meta 内部,要规模支持一种编程语言需要大量的工程投资,而且这个成本是很广泛的--不仅仅是由其用户承担。他举了几个例子:


  • 对核心库的支持。独立的服务很少,因此拥有的语言越少,核心库的负担就越小。

  • 安全和隐私。分散的堆栈加大了在服务中建立安全和隐私功能的复杂性。

  • 运营风险。如果某些服务遇到严重问题,则需要立即援助。Meta 在诊断和解决生产问题方面已经积累了大量的专业知识,其事件响应依赖于通过阅读、理解和调试服务以便在重大事件中提供帮助。避免碎片化可以降低运营风险。

  • 专业知识。Meta 建立并维持了大量在每一种语言上都有其专长的工程师。

  • 开发者经验。支持的语言都有团队致力于改善 IDE 支持、构建速度、调试体验等方面。


由此可见,如果没有进行慎重考虑而选择了不够好的编程语言,那 Meta 就有可能在时间成本、效率和生产力方面付出高昂的代价。因此,他们需要对各种语言进行严格审查。


Eric 在文中还特别提到 Rust,Rust 是 Meta 最新的服务器端语言。“自从开始使用 Rust 以来,在 Meta 中使用 Rust 的项目数量增速迅猛。”


了解,Meta 甚至组建了一个专门的 Rust 团队来发展 Meta 内部的 Rust 开发氛围,鼓励对 Rust 和基于 Rust 的项目的开源贡献,并提高对 Rust 社区的参与度。


Eric 表示,Rust 成为 Meta 服务器端支持语言也标志着 Meta 对 Rust 语言生态系统的长期承诺和支持。


参考链接:https://engineering.fb.com/2022/07/27/developer-tools/programming-languages-endorsed-for-server-side-use-at-meta/

2022-07-29 09:456282
用户头像
罗燕珊 AI practitioner | Tech media

发布了 492 篇内容, 共 329.0 次阅读, 收获喜欢 796 次。

关注

评论

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

实用机器学习笔记十:机器学习模型

打工人!

AI 算法 学习笔记 机器学习算法 12月日更

Go+ HTTP 客户端教程(5.1)

liuzhen007

28天写作 12月日更

在线JSON转Go Bson工具

入门小站

工具

2021,自动驾驶的“五代十国”

脑极体

将挖洞当作爱好和职业的笑与泪:微软漏洞研究员的自白

网络安全学海

网络安全 信息安全 漏洞扫描 漏洞分析 漏洞挖掘

Quantum Mechanics Is Different

Si Yuan

量子计算

HHL Algorithm

Si Yuan

量子计算

Flexagile 弹性敏捷 - 文化篇

RingCentral铃盛

图解 Volatile 原理三

悟空聊架构

volatile 28天写作 悟空聊架构 12月日更 嗅探

Gbase8a MPP Cluster 集群管理

南渡北归

gbase8a gbase8a集群管理 gcadmin

CSS之选择器(三)

Augus

CSS 12月日更

误删服务器/tmp下的文件之后引发的问题

熊斌

解决方案

Deutsch-Jozsa Algorithm

Si Yuan

量子计算

Flexagile 弹性敏捷 - 实践篇

RingCentral铃盛

Prometheus Exporter (二十三)Slurm Exporter

耳东@Erdong

Prometheus 28天写作 exporter 12月日更 Slurm

如何对数组中的对象进行排序

Changing Lin

12月日更

Android C++系列:Linux网络(四)TCP详解

轻口味

c++ android 28天写作 12月日更

在 Dart(以及 Flutter)中生成随机字符串的 3 种不同方法【Flutter专题21】

坚果

flutter 28天写作 12月日更

当诗人遇到熟读2600亿中文参数的大模型

脑极体

WebP,淘宝都在用的图片优化方法

CRMEB

我们需要一个React框架吗?

RingCentral铃盛

React 框架 分布式应用框架

Apache Log4j2远程代码执行漏洞攻击,华为云安全支持检测拦截

华为云开发者联盟

安全 华为云 漏洞 Apache Log4j2

成年人除了工作以外,在社会上还要争取什么?

DaemonStone

管理 技术人生 职业发展 人生选择

通过接口百度网盘下载文件

为自己带盐

28天写作 百度网盘 12月日更

技术架构的战略和战术原则

xcbeyond

28天写作 12月日更

Flexagile 弹性敏捷 - 理论篇

RingCentral铃盛

Flexagile

Musical.ly 创始人:演化成就伟大的产品

石云升

28天写作 产品创新 12月日更 产品演化

41 K8S之网络策略

穿过生命散发芬芳

k8s 28天写作 12月日更

回家

Tiger

28天写作

架构实战 - 模块六

唐敏

「架构实战营」

Linux之cd命令

入门小站

目录

Meta在服务器端用了哪些编程语言?_语言 & 开发_罗燕珊_InfoQ精选文章