写点什么

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

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

关注

评论

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

传媒产业的数字化怎样被小程序影响

Geek_99967b

小程序

分布式系统中如何实现临界资源的互斥访问

华为云开发者联盟

云计算 后端 开发 企业号九月金秋榜

VS Code摸鱼神器,让你快速开发AI模型

华为云开发者联盟

人工智能 企业号九月金秋榜

大数据调度平台Airflow(五):Airflow使用

Lansonli

airflow 9月月更

算法基础(三)| 二分图解及代码模板

timerring

算法 二分查找 9月月更

带你认识全新的华为云IoT路网数字化服务

华为云开发者联盟

云计算 后端 物联网 交通 企业号九月金秋榜

校招 | StarRocks首次Open Day报名ING!

StarRocks

数据库

慢查询 MySQL 定位优化技巧,从10s优化到300ms

程序知音

Java MySQL 数据库 后端技术 MySQL 数据库

react面试如何回答才能让面试官满意

beifeng1996

React

如何创建 Angular library 并在生产环境中消费

汪子熙

JavaScript typescript angular library 9月月更

阿里前端面试题

loveX001

JavaScript 前端

火山语音7篇论文入选国际顶会Interspeech

科技热闻

写给自己的react面试题总结

beifeng1996

前端 React

最新MLPerf基准测试:基于阿里云GPU云服务器的AIACC在图像识别封闭式场景下夺冠

阿里云弹性计算

图像识别 GPU实例 AIACC

“密评”,听说过没

华为云开发者联盟

云计算 网络安全 开发 企业号九月金秋榜

以Vue为代表的提升小程序开发效率框架及工具

Geek_99967b

小程序

来自大厂 10+ 前端面试题附答案(整理版)

loveX001

JavaScript 前端

RabbitMQ怎么保证消息不被重复消费以及消息的可靠性

知识浅谈

RabbitMQ 9月月更

羊了个羊闯关游戏开发(链改代币分红)

开发微hkkf5566

日均数亿推送稳定性监控实践

得物技术

Java 设计模式 重构 SLA 企业号九月金秋榜

Pipy 同一 IP 多个 SSL 域名

Flomesh

Service Mesh 服务网格

云原生数字化转型与金融信创建设,鱼和熊掌可兼得

BoCloud博云

云计算 云原生 信创

阿里云大数据助力知衣科技打造AI服装行业核心竞争力

阿里云大数据AI技术

人工智能 大数据 模型训练 客户案例

百度交易中台之资产系统架构浅析

百度Geek说

数据库 架构 资产管理

linux入门学第一天

乌龟哥哥

9月月更

峰会倒计时3天!硅谷传奇投资人登陆专场,围炉共话分析型数据库的爆发式增长

StarRocks

数据库

本地服务调用K8S环境中的SpringCloud微服务实战

程序员欣宸

Kubernetes 9月月更

Qt|控件QPushButton讲解

中国好公民st

qt 按钮 9月月更

MySQL DDL执行方式-Online DDL介绍

京东科技开发者

Java MySQL 数据 ddl DML

Github上标星103K的Spring Security实战手册,直接霸榜

程序知音

Java spring 程序员 spring security 后端技术

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