写点什么

编程语言将走入怎样的 2022

  • 2022-01-27
  • 本文字数:3401 字

    阅读完需:约 11 分钟

编程语言将走入怎样的 2022

本文是“2021 InfoQ 年度技术盘点与展望”系列文章之一,由直播内容整理而成,重点聚焦编程语言领域在 2022 年的核心趋势展望,希望能帮助你准确把握 2022 年编程语言领域的核心发展脉络,在行业内始终保持足够的技术敏锐度。

 

“InfoQ 年度技术盘点与展望”是 InfoQ 全年最重要的内容选题之一,将涵盖架构、AI、大数据、大前端、云计算、数据库、中间件、操作系统、开源、编程语言十大领域,后续将聚合延展成专题、迷你书、直播周、合集页面,在 InfoQ 媒体矩阵陆续放出,欢迎大家持续关注。

 

本期直播嘉宾:

李三红,阿里云程序语言与编译器团队负责人,在虚拟机领域拥有 10+项技术论文/专利。活跃于 Java 技术社区,GreenTea JUG(Java User Group) 组织者,QCon, JVMLS,JavaOne, JPoint 等国际会议受邀嘉宾。VMIL'18 程序委员会委员,Java Champion, Java 标准执行委员会(JCP-EC)成员,GraalVM Project Advisory Board 成员。

 

主持人:三红老师,我们现在能够看到整个编程语言领域,在 2022,会有什么核心的发展趋势吗?

 

李三红:首先感谢一鹏的介绍,我们先聊第一个话题。我开播之前也做了一些功课。IEEE 发布了编程语言的排行榜,我在看 Top 5 编程语言的时候,很有感触,因为那个榜单基本上能全面反映我们阿里云内部使用语言的基本情况。我说一些具体的例子,比如 C 和 C++,大家都知道,阿里是 Java 大户。我们很多线上应用都用 Java 写的,但实际上,像飞天、盘古存储、OceanBase、PolarDB 等应用,很多都是用 C++ 写的。Python 我们用的也蛮多的,当然主要是在 AI 领域,和 Tensorflow 相关的。

 

主持人:Java 在整个 21 年的版本更新速度很快,从 Java16 一直更新到 Java18。那么到了 2022 年,Java 的开发者应该去注意哪些趋势呢?

 

李三红:今年有几个事情正在发生。在 Java 里,有个概念叫做 long term support,就是 LTS 版本,所谓的长期支持版本。此前,Oracle 规定的是长期支持版本三年更新一次,但现在已经改成两年一次。两年一次的 LTS 版本更新意味着,我们可能要付出更多的代价跟进版本支持。尤其是做企业架构、Java 解决方案的同学要关注下,据我所知,国内大部分团队还停留在 Java8。

 

主持人:有一个同学在弹幕提问:Node.js 还有前途吗?三红老师怎么看?

 

李三红:我觉得,任何一个语言都是在特定领域里,解决一个专业问题,没办法武断地说有没有前途。我举个例子,Node.js 即便在数据中心也有一定应用,在 Serverless 场景中也是有用的,但是 Node.js 本身是单线程模型,如果要替代 Java,要走的路还是蛮长的,但这不妨碍 Node.js 在它目前的领域保持出色的表现。

 

主持人:InfoQ 今年在官网上也发起了一个编程语言排行榜,数据显示,截止到目前,使用 Java 语言的人仍然是最多的,大多数人对 Java 的生态也是最满意的。三红老师觉得未来是否会有某些语言威胁到 Java 的统治位置?会是 Go 吗?

 

李三红:Java 不单是生态好,在运维、可观测性、可监控性方面都是很优秀的。如果我们对比 Java 和 Go,确实业内在大量的尝试使用 Go。但从阿里实际的应用场景来看,Go 还是主要用在了 Kubernetes 生态里面。我们这边也有项目尝试过用 Go 替代 C++,但碰到了比较大的问题,C 和 C++ 的应用场景大部分是对性能敏感的场景, Go 的主要问题是它会因为 GC 导致暂停,继而影响上面所有的东西。

 

主持人:大家普遍认为 C++ 的学习成本最高。未来,在编程语言的设计上,会出现降低学习成本这样的一个设计趋势吗?

 

李三红:首先我觉得,编程语言是在塑造你对事物的思考方式,就像 Java ,本质上是面向对象,你需要深刻的掌握 OOP。那么谈到学习成本,假设我们没有很好的掌握 OOP,那么学习 Java 和 C++ 就比较困难。一旦你理解了编程语言本质的思维模式,学习就会变得简单。

 

主持人:那么降低学习成本,与放弃部分性能,存在必然的联系吗?

 

李三红:从我的角度看,可能用开发效率来替换学习成本这个词更合适些。当你在要求极致性能的时候,可能会损失开发效率。我举一些例子,比如 Java 的 Unsafe API,它就提供了极致的性能,但它也可能导致 Java 虚拟机莫名其妙的崩溃,开发成本是非常高的,生产效率是不高的。我觉得生产效率和性能确实是个平衡关系,要考虑取舍问题。

 

主持人:2021 年,Go 语言的火爆有目共睹。但我们今天说点别的,在三红老师看来,今天的 Go 语言还存在哪些问题?2022 年可能围绕这些问题而出现的趋势是什么?

 

李三红:曾经有人说,免费的午餐结束了,整个硬件来到了多核时代。多核就意味着,程序需要强并发、高并发,Go 是一个面向协程的语言,把协程内建在了云原生层面去实现,极大提高了开发效率。而且,Go 本身是一个静态编译语言,不存在 Run Time,但这是一个令人欣赏的取舍。

 

我曾经也和 Go 语言的开发团队做过一些讨论,我觉得包括 Go 、Python 等语言在内,未来很重要的一个趋势,是如何充分发掘硬件性能,做好硬件加速,毕竟硬件性能的增长是趋缓的。

 

主持人:随着 Rust 的兴起,函数式编程的这个概念重新火起来了,三红老师怎么看待 2022 年关于 Rust 和函数式编程的问题?

 

李三红:我觉得这是挺有意思的话题,函数式编程出来后,我们也看到一些讨论,好像函数式编程和 OOP 编程的程序员有时是有些互相鄙视的。从我的调度看,函数式编程有特别多的优点,我特别喜欢函数式编程的“无状态” —— 数据不可修改,这是非常好的。

 

在云计算领域里,有一个很重要的技术叫做 Serverless,Serverless 碰到的最大挑战是什么?就是冷启动和无状态。如果是用 Java 开发,第二个请求进来后,Java 就必须重启一个 Java 虚拟机。这就导致两个请求之间,我们很难保证启动速度 —— 这就是有状态和无状态的区别。对于函数式编程来说,问题就简单了,直接 Fork 一下之前的进程就好了。而且函数式编程的代码的可阅读性也更好,这点也非常棒。

 

但函数式编程也有它的问题。Twitter 团队早期用的是 Ruby,后面全部迁移到 Java 技术栈上,大部分用的是 Scala,Scala 就支持函数式编程。但 Twitter 团队反馈说,Scala 用起来非常好,但也遇见一些问题:相比于 OOP,函数式编程会创建更多的对象,给内存管理带来比较大的压力,对性能也有一些影响。

 

在我看来,2022 ,主流思想仍然会是面向对象,但函数式编程也有自己的优势场景。

 

回到 Rust 本身来谈,我觉得它仍然会是 2022 的焦点,我们也在调研 Rust。但 Rust 的是一个问题是,学习成本确实比较高。Rust 暴露了很多底层细节给你,并没有全部封装起来。对于开发者而言,能控制的越多,写起代码来就越需要细致考虑,把很多细节、原理想的比较明白。这也算是追求性能的代价吧。

 

主持人:前段时间,Rust 出了个审核团队离职的新闻,大家应该也都注意到了,三红老师觉得这种社区治理问题,会影响 Rust 在 2022 年的发展吗?

 

李三红:我觉得社区治理本身是非常关键的。我们内部也在说,所有的开源项目本身有三件事是非常重要的:

 

第一点是开源实现;第二点是开放标准;第三点就是社区的治理,社区的治理支撑着整个语言的健康发展,Java 有几十年的历史,在社区治理方面,就确确实实有一些经验可以供 Rust 借鉴,但 Java 的情况和 Rust 又不太一样。至少我们在看到审核团队离职这个新闻后,会想要继续增多一些对 Rust 的考察。

 

主持人:李老师如何看待运维可编程化的趋势?

 

李三红:这个问题应该是在说可编程的基础设施。我觉得这是一个比较正确的方向,但它可能存在质量完全不可控的问题。云原生的 DevOps 讲究用可编程的方式去做,有代码提交,有所谓的 Commit Log,有变更记录,是通过软件工程的方式去控制 Infrastructure 的变化,否则就很难规模化复制。

 

主持人:有好多同学也在问 Python,主要是寻求三红老师对 Python 工程师的个人发展建议,三红老师怎么看?

 

李三红:Python 在 AI 领域受关注度是非常高的。我觉得 Python 本身只是个工具,如果从技术角度说,它的创造性空间可能确实是比 Java 要小,从我的经验来谈,要学好 Python 还是要关注它解决的问题域,包括 AI 算法、Tensorflow 生态等等。关注通过 Tensorflow 怎么去规模化地解决问题,这可能比关注 Python 语言本身更重要。

 

主持人:R 语言的发展前景怎么样?

 

李三红:我看到有些同学是直接从 R 语言转到 Python 的,但没看到过从 Python 转到 R 语言的,哈哈。

 

主持人:好,我们今天的直播到这里就结束了,感谢三红老师!

 

更多直播内容和弹幕互动,请参考原视频。

2022-01-27 02:4019155

评论

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

淘宝商品详情API返回值中的商品推荐理由与卖点

技术冰糖葫芦

API 接口 API 文档 API 测试 API 性能测试

NIPs 平台:Mint Blockchain 推动 NFT 创新的新平台

NFT Research

NFT\ #Web3

调优:在Java 中字符串重复数据删除性能

哦豁完蛋了

Java’

京东大模型革命电商搜推技术:挑战、实践与未来趋势

京东零售技术

大模型 LLM

1688跨境代采集运系统

tbapi

1688代采系统 1688代购系统 1688跨境代采系统

AI+云原生时代,高校该如何创新教育模式

是但求其发

云计算 软件工程 计算机 大学 #云原生

不是大模型,而是业务和技术如何统一指标定义

奇点云

大数据 AI 互联网 软件 IT

一图为你揭秘云数据库GaussDB管理平台亮点

华为云开发者联盟

云原生 GaussDB 智能运维 数据库·

零一万物 Yi-Lightning:超越 GPT-4o 冲击全球榜单;阿里国际 Marco 翻译大模型发布丨 RTE 开发者日报

声网

AIGC加速商业化落地,抖音开放平台如何打造新ToB商业模式?

ToB行业头条

百度搜索2024考研大数据:北方考生“南移”成潮流

极客天地

CloudberryDB内核分享:增量物化视图的原理与实现讲解

酷克数据HashData

完全指南:如何高效进行业务应用开发?

NocoBase

开源 低代码 开发工具 无代码 业务应用开发

什么政府网站一定要安装SSL证书吗?应该选择哪种SSL证书?

防火墙后吃泡面

长途自驾游太累?火山引擎数据飞轮携手车企持续优化驾车体验

字节跳动数据平台

数据飞轮

得物iOS函数调用栈及符号化调优实践|得物技术

得物技术

ios

实时语音交互的游戏队友——网易伏羲AI Agent创新应用 | DataFunSummit2024演讲实录

网易伏羲

人工智能 AI 语音 网易伏羲 游戏AI

天猫商品评论API:评价内容中的用户情感倾向分析

技术冰糖葫芦

API 接口 API 文档 API 测试 API 性能测试

视频直播技术干货(十二):从入门到放弃,快速学习Android端直播技术

JackJiang

即时通讯;IM;网络编程

RUM性能优化之图片加载

乘云数字DataBuff

前端监控 可观测性 JavaScrip RUM

博睿数据首届“观测先锋 · 2024 可观测平台创新应用案例大赛”现已启动!

博睿数据

淘宝商品详情数据接口:解锁电商数据分析新密码

tbapi

淘宝商品详情数据接口

面试官:我是如何提问候选人的

老张

招聘 职场成长 面试求职

一文看懂——SimSolid的优势

智造软件

仿真 有限元 SimSolid

活动预告 | 10月26日,中国数据库联盟(ACDU)中国行·上海站邀您探讨数据库前沿技术

墨天轮

数据库 开源 国产数据库

观测云产品更新 | AI 智能助手、云账单智能监控、日志错误追踪等

观测云

人工智能 监控 日志

鸿蒙开发案例:绘制中国象棋棋盘与棋子的技术教程

zhongcx

编程语言将走入怎样的 2022_语言 & 开发_王一鹏_InfoQ精选文章