写点什么

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:456921
用户头像
罗燕珊 AI practitioner | Tech media

发布了 540 篇内容, 共 403.6 次阅读, 收获喜欢 849 次。

关注

评论

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

如何利用YashanDB数据库实现数据智能分析和挖掘

数据库砖家

如何使用YashanDB实现高效的数据存储和检索

数据库砖家

如何使用YashanDB提高团队的工作效率

数据库砖家

如何使用YashanDB优化Web应用的后端数据处理

数据库砖家

CST圆极化贴片天线阵列 --- 频域F-solver, 领域分解法 DDM

思茂信息

cst CST软件 CST Studio Suite

如何使用YashanDB提升企业数据库性能?实用指南

数据库砖家

如何为YashanDB数据库设计合适的架构?

数据库砖家

在YashanDB中优化查询性能的技术分析

数据库砖家

如何使用YashanDB进行数据可视化?提升数据洞察力

数据库砖家

如何优化YashanDB数据库以提升数据处理速度?

数据库砖家

如何利用YashanDB数据库提升企业分析能力

数据库砖家

如何使用YashanDB构建高可用的分布式数据库

数据库砖家

优化YashanDB的读写性能

数据库砖家

如何优化YashanDB数据库的写入性能

数据库砖家

在YashanDB数据库中实现高效的并发控制

数据库砖家

如何利用YashanDB提升用户反馈数据的分析能力?

数据库砖家

如何使用YashanDB数据库实现海量数据的快速检索

数据库砖家

如何使用YashanDB数据库优化企业数据策略

数据库砖家

优化YashanDB数据库的查询性能

数据库砖家

数字化转型三阶段:信息化、数字化、数智化分别代表着什么?

优秀

数字化 信息化 数智化

如何利用YashanDB数据库提升企业数据处理能力

数据库砖家

如何利用YashanDB数据库提升数据共享

数据库砖家

如何使用YashanDB实现多租户架构?

数据库砖家

在YashanDB数据库中实现定时任务调度

数据库砖家

如何利用YashanDB数据库实现数据实时分析与监控

数据库砖家

如何使用YashanDB进行数据聚合分析

数据库砖家

淘宝商品详情API接口全解析:从数据采集到商业洞察

tbapi

淘宝API 天猫API 淘宝商品详情API 天猫商品详情api

四个理由让你选择YashanDB数据库作为首选

数据库砖家

在YashanDB数据库中优化存储空间的方法介绍

数据库砖家

多款主流实用工具深度适配鸿蒙电脑,打造高效智能一体化工作流

最新动态

在YashanDB中如何实现高效的数据恢复和备份策略?

数据库砖家

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