“All in Cloud”之后,和你聊聊「云原生DevOps的Kubernetes技巧」 了解详情
写点什么

编程语言将走入怎样的 2022

  • 2022 年 1 月 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 年 1 月 27 日 02:407616

评论

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

向女朋友解释乐观锁与悲观锁的小妙招!

小闫

spring 面试 Spring Cloud 乐观锁 悲观锁

Go: 字符串和转换优化

陈思敏捷

string 字符串 Go 语言

java基础思维导图,让java不再难懂 (建议收藏))

码哥小胖

面试 Spring Boot Java 分布式

系统架构师week04 Homework - 互联网架构技术手段和方案

尔东雨田

极客大学架构师训练营

自动特征工程在推荐系统中的研究

天枢数智运营

人工智能 推荐系统

java架构-一些设计上的基本常识

猿灯塔

Java

Kafka 消息丢失与消费精确一次性

奈学教育

kafka

猿灯塔:疫情冲击,去体验远程面试被怼10分钟,今年Java开发找工作真难

猿灯塔

理解 Mysql 索引底层原理只需这一篇就够了

小谈

MySQL 数据结构 面试 Spring Cloud Spring Boot

游戏夜读 | 互动剧的黎明到了?

game1night

高承实:区块链在新基建中的作用和未来发展

CECBC

新基建 政策扶持 技术特征 链上数据 产业场景

AndroidStudio真机调试 - Waiting for Debugger

麦洛

Android Studio 真机调试

听说你还没学Spring就被源码编译劝退了?30+张图带你玩转Spring编译

程序员DMZ

spring Spring源码编译

Kafka 消息丢失与消费精确一次性

古月木易

kafka

太牛 了!快码住!GitHub上标星75k!超牛的《Java面试突击版》

犬来八荒

Java git Linux 面试

忘掉 Snowflake,感受一下性能高出 587 倍的全局唯一 ID 生成算法

穿甲兵

redis 架构 分布式 CAP Go 语言

原创 | TDD工具集:JUnit、AssertJ和Mockito (二十五)运行测试-在IDE中运行测试

编程道与术

Java intellij-idea 编程 TDD 单元测试

Redis分布式锁课堂开课了!

小闫

redis Spring Cloud Redis项目

架构师训练营第4周总结

aoeiuvzcs

阿里技术官:这样带你学Spring全家桶,其实没你想的那么难

小吴选手

spring Spring Cloud Spring Boot

高效程序员的七个好习惯——你有吗?

小谈

程序员 面试 JVM springboot SpringCloud

nightingale安装详解

曾祥斌

五分钟让你搞懂Nginx负载均衡原理及四种负载均衡算法

架构大数据双料架构师

一致性hash

彭阿三

一致性hash

测试开发工程师修炼手册—测试技能大盘点

Zoe

测试工程师产出

逆袭之路,普通二本的八年开发码农如何进阿里拿年薪百万

小谈

Java 面试

四面阿里巴巴回来分享面经总结,定级P7架构师

小吴选手

架构 技术 面试 Spring Boot 阿里

分布式柔性事务之最大努力通知事务详解

古月木易

分布式事务

马匹、马镫、马车,和华为的数据基础设施革新

脑极体

信创舆情一线--印度封禁59款中国App

统小信uos

App 舆情 印度

分布式柔性事务之最大努力通知事务详解

奈学教育

分布式事务

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