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

2022 年 7 月 29 日 InfoQ

作者 | 罗燕珊

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/

点击底部阅读原文访问 InfoQ 官网,获取更多精彩内容!

今日好文推荐

在中国ToB市场选一个对的供应商太难了

搞不定移动端性能,全球爆火的 Notion 从 Hybrid 转向了 Native

离开谷歌的副作用:外面很难找到这么好用的开发工具

字节将大幅压缩招聘规模;滴滴被罚 80 亿,违法行为持续 7 年;各国软件开发者薪资统计:中国上榜全球开发者薪酬最低国家名单 | Q 资讯

登录查看更多
0

相关内容

程序设计语言( Programming Languages )又称编程语言,是一组用来定义计算机程序的语法规则。
【2022新书】构建微服务:设计细粒度系统,615页pdf
专知会员服务
89+阅读 · 2022年9月4日
【AI与工业】2022最新发布《工业物联网AI框架》59页PDF
专知会员服务
141+阅读 · 2022年3月30日
《Julia数据科学》及代码,166页pdf
专知会员服务
44+阅读 · 2021年11月4日
【2020新书】高级Python编程,620页pdf
专知会员服务
232+阅读 · 2020年7月31日
【Java实现遗传算法】162页pdf,Genetic Algorithms in Java Basics
专知会员服务
42+阅读 · 2020年7月19日
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
56+阅读 · 2020年6月26日
最适合微服务的7大编程语言
CSDN
0+阅读 · 2022年11月1日
iOS 16 的新功能你更喜欢哪个呢?
ZEALER订阅号
0+阅读 · 2022年6月7日
D 语言是否可作为入门级的编程语言?
“C 不再是一种编程语言!”
CSDN
0+阅读 · 2022年4月4日
“C不再是一种编程语言”
AI前线
1+阅读 · 2022年4月2日
停止盲目使用微服务
InfoQ
0+阅读 · 2022年2月27日
Python再获年度编程语言,微软或成最大赢家
机器之心
0+阅读 · 2022年1月8日
2021 年 Python 的好与坏
InfoQ
2+阅读 · 2021年11月16日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
3+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
国家自然科学基金
0+阅读 · 2008年12月31日
Arxiv
0+阅读 · 2022年11月25日
Arxiv
24+阅读 · 2021年1月25日
Arxiv
12+阅读 · 2020年6月20日
已删除
Arxiv
31+阅读 · 2020年3月23日
VIP会员
相关VIP内容
相关资讯
最适合微服务的7大编程语言
CSDN
0+阅读 · 2022年11月1日
iOS 16 的新功能你更喜欢哪个呢?
ZEALER订阅号
0+阅读 · 2022年6月7日
D 语言是否可作为入门级的编程语言?
“C 不再是一种编程语言!”
CSDN
0+阅读 · 2022年4月4日
“C不再是一种编程语言”
AI前线
1+阅读 · 2022年4月2日
停止盲目使用微服务
InfoQ
0+阅读 · 2022年2月27日
Python再获年度编程语言,微软或成最大赢家
机器之心
0+阅读 · 2022年1月8日
2021 年 Python 的好与坏
InfoQ
2+阅读 · 2021年11月16日
相关基金
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
3+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
国家自然科学基金
0+阅读 · 2008年12月31日
Top
微信扫码咨询专知VIP会员