【QCon】精华内容上线92%,全面覆盖“人工智能+”的典型案例!>>> 了解详情
写点什么

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:455271
用户头像
罗燕珊 InfoQ中文站编辑

发布了 413 篇内容, 共 238.6 次阅读, 收获喜欢 756 次。

关注

评论

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

飞桨大模型分布式训练技术

Baidu AICLOUD

飞桨 百度百舸 AI 大底座

Coral Finance 将为 Zepoch 节点空投,Nautilus生态空投季开启

西柚子

基于因果关系知识库的因果事件图谱构建

汀丶人工智能

人工智能 自然语言处理 知识图谱

基于开源IM即时通讯框架MobileIMSDK:RainbowChat v9.0版已发布

JackJiang

网络编程 即时通讯 IM

火山引擎DataLeap的Data Catalog系统公有云实践 (上)

字节跳动数据平台

大数据 数据中台 数据治理 数据安全 企业号 7 月 PK 榜

IPQ9574 VS IPQ6010 VS IPQ5018 VS IPQ4019-Understand the performance of different chips

wifi6-yiyi

wifi WiFi7 wifi5,wifi6

广东省《5A物理抗菌纺织品》团体标准颁布

Geek_2d6073

从分片传输到并行传输之大文件传输加速技术

镭速

大文件传输

数据库集群方案详解

KaiwuDB

KaiwuDB 数据库集群技术

HDMI接口需注意的PCB可制造性设计问题

华秋PCB

接口 工具 PCB PCB设计 可制造性

中文人物关系知识图谱(含码源):中文人物关系图谱构建、数据回标、基于远程监督人物关系抽取、知识问答等应用.

汀丶人工智能

人工智能 nlp 知识图谱 智能问答

详解!视频直播源码布谷科技平台搭建开发:录制功能

山东布谷科技

软件开发 视频直播 源码搭建 短视频直播源码 视频录制

源码解析Collections.sort ——从一个逃过单测的 bug 说起 | 京东云技术团队

京东科技开发者

排序算法 源码解读 企业号 7 月 PK 榜 Collections.sort

一种配置化的数据脱敏与反脱敏框架实现 | 京东云技术团队

京东科技开发者

数据安全 脱敏 数据脱敏 企业号 7 月 PK 榜

明晚直播:可重构计算芯片的AI创新应用分享!

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨 百度飞桨

科研类项目核算的“法、术、器”(二)

用友BIP

项目管理 科研项目

2023年广西等保测评机构名单看这里!新增一家哦!

行云管家

广西 等级保护 等保测评

支付宝小程序云李铮:科技赋能,敏捷增长

TRaaS

支付宝小程序 小程序云开放 蚂蚁

万字长文浅析配置对MySQL服务器的影响 | 京东物流技术团队

京东科技开发者

MySQL 数据库 服务器 企业号 7 月 PK 榜 MySQL服务器

618技术揭秘 - 大促弹窗搭投实践 | 京东云技术团队

京东科技开发者

前端 弹窗 xview 企业号 7 月 PK 榜

揭秘ChaosBlade CPU故障:实现CPU故障的黑科技

柠檬汁Code(binbin0325)

源码分析 cpu 混沌工程 ChaosBlade 故障模拟

Docker 入门教程(简明易懂、零基础篇)

搞大屏的小北

Docker 容器 Docker-compose 入门 Docker 镜像

动态QPS压测模型【Go语言】

FunTester

Sugar BI:大模型时代的智能 BI

Baidu AICLOUD

BI 数据智能

超强阵容!HarmonyOS极客马拉松2023专家评审团来袭!

HarmonyOS开发者

HarmonyOS

中小微企业选择哪家云管平台好?理由有哪些?

行云管家

云计算 云管平台 云管理

2023开源数据库排行榜发布,“新晋黑马”瀚高IvorySQL跻身三十强

Geek_2d6073

Coral Finance 将为 Zepoch 节点空投,Nautilus生态空投季开启

大瞿科技

我身边IT业40岁的老家伙们都去哪儿了?

高端章鱼哥

程序员 IT 大牛

KaiwuDB 资深解决方案专家周幸骏:打造核心时序引擎,释放数据新价值

KaiwuDB

时序数据 KaiwuDB

扫盲低代码

互联网工科生

前端 低代码 应用开发

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