写点什么

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

发布了 520 篇内容, 共 377.2 次阅读, 收获喜欢 839 次。

关注

评论

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

中国开源未来发展峰会“问道 AI 分论坛”即将开幕!

kk-OSC

峰会

适用于ARM的Linux系统镜像资源+安装教程

Rose

Linux Mac Parallels Desktop 虚拟机 系统镜像

不同设备如何统一语言编程平台高效开发?本文为你揭秘

HarmonyOS开发者

HarmonyOS

阿里Dubbo技术负责人准备的源码教程,很有大厂风格

做梦都在改BUG

Java dubbo

一顿饭的事儿,搞懂了Linux5种IO模型

Java你猿哥

Java Linux 后端 ssm io

美团太细了!HashMap可以存null,ConcurrentHashMap不可以为什么

Java你猿哥

Java hashmap ssm

苹果Mac电脑安装AutoCAD 2024卡死无响应,怎么办

Rose

cad AutoCAD 2024 Mac版 AutoCAD 2024下载 无响应

携手共赢 HashData亮相华为合作伙伴大会

酷克数据HashData

好的索引当然是要覆盖了!

江南一点雨

MySQL 数据库

被 ChatGPT 点燃的向量数据库们

Bytebase

人工智能 数据库 openai AIGC ChatGPT

最具有中国特色的微服务组件!阿里新一代SpringCloud学习指南

做梦都在改BUG

Java 架构 微服务 Spring Cloud spring cloud alibaba

增强型语言模型——走向通用智能的道路?

百度Geek说

人工智能 机器学习 语言模型 企业号 5 月 PK 榜

代码注释的艺术,优秀代码真的不需要注释吗?

阿里技术

代码注释

Omi NTFS磁盘管理 支持在 Mac 上修复和格式化 NTFS 磁盘

Rose

NTFS Disk by Omi NTFS NTFS 磁盘管理器 ntfs

华为研究院19级研究员几年心得终成趣谈网络协议文档,附大牛讲解

做梦都在改BUG

Java 计算机网络 网络协议

真香!阿里P8微服务实战心得首次公开,涵盖架构设计所有知识点

Java你猿哥

Java 架构 微服务架构 架构设计 架构师

Java 网络编程详解

timerring

Java

适用于Mac的七款最佳高清音乐播放器,专为发烧友而生!

Rose

iTunes mac音乐播放器 苹果系统 音乐软件

ElasticSearch中文分词和模糊查询

北桥苏

php elasticsearch thinkphp

所谓高手,就是跨过坑和大海| 社区征文

鸿蒙之旅

三周年征文

需求梳理会开2天是否合理?

BY林子

软件质量 需求分析 需求工程师 需求梳理

2步打通ModelArts和Astro,实现AI应用快速落地

华为云开发者联盟

人工智能 低代码 华为云 华为云开发者联盟 企业号 5 月 PK 榜

Django-Vue-Admin基于django+vue前后端分离开箱即用框架

巨梦科技

django Vue

发布会实录|悠易科技CTO李旸:洞察新引擎 品牌新增长

游读分享

已有多人中招:这张特殊二维码可致微信闪退,还会进入安全模式

Rose

微信防撤回 微信下载 微信小助手 微信闪退

从零开始打造一款基于SpringBoot+SpringCloud的后台权限管理系统

做梦都在改BUG

Java Spring Cloud Spring Boot 权限管理

技术领先、“忠”于业务,用友走出多维数据库的价值之路

用友BIP

数字人是否能成为企业智能化的门户?

Onegun

人工智能 数字人

ThottleStop 软件的应用场景

汪子熙

cpu intel 三周年连更

精准测试之过程与实践 | 京东云技术团队

京东科技开发者

精准测试 质量保障 企业号 5 月 PK 榜

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