阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

编程语言将走入怎样的 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:4016481

评论

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

在Chrome浏览器中最快速实现拾色器(颜色吸管)

茶无味的一天

前端 谷歌浏览器

【牛客刷题-算法】加精 _ 合并两个有序的链表 - 从思路设计、bug排除到最终实现的全过程

清风莫追

算法 链表 算法数据结构 10月月更

极客时间架构训练营模块二作业

李晨

架构

你的方案逻辑自洽吗?

老张

测试方案 思维逻辑

Redis--Redis持久化方式

Java学术趴

10月月更

书单推荐|书籍是人类的良师益友

图灵教育

书单 教师节

书单推荐|书籍是人类的良师益友

图灵社区

书单 教师节

二本Java菜鸟9面字节遭虐,苦修数月深造这份 Java面试宝典,终进阿里

程序知音

Java java面试 程序员面试 后端技术 Java面试八股文

【牛客刷题-算法】NC151 最大公约数

清风莫追

数据结构 算法 最大公约数 10月月更

pgsql数据库自动备份

衝鋒壹号

10月月更

Redis--Redis事务及错误处理方式

Java学术趴

10月月更

GitHub上的宝藏级SpringBoot核心文档,拿走不谢!

Geek_0c76c3

Java 数据库 开源 程序员 开发

阿里P8面试官总结的《2022最新java面试题》,搞定90%以上的技术面

程序知音

Java 程序员面试 后端技术 Java面试题 Java面试八股文

【C语言难点突破】指针的常见易错点

Geek_65222d

10月月更

Python 3.12 目标:还可以更快!

Python猫

Python

【Go实现】实践GoF的23种设计模式:访问者模式

元闰子

Go 设计模式 访问者模式

clickhouse准实时数仓能力探索

水滴

实时数仓 OLAP 数仓 10月月更 clickhosue

【愚公系列】2022年10月 Go教学课程 020-Go容器之数组

愚公搬代码

10月月更

Android Coder带你了解反射

子不语Any

后端 java; 10月月更

【Nacos源码之配置管理 四】DumpService如何将配置文件全部Dump到磁盘中

石臻臻的杂货铺

nacos 10月月更

【一Go到底】第六天---值类型、引用类型、标识符

指剑

Go golang 10月月更

Vue项目处理错误上报如此简单

茶无味的一天

Vue 异常捕获

为什么大家偏爱怪异盒模型border-box?

茶无味的一天

CSS 前端 HTML5, CSS3

【牛客刷题-算法】NC141 判断是否为回文字符串

清风莫追

数据结构 算法 刷题笔记 10月月更

开发者有话说|在刷怪升级的成长路上,技术人应该掌握的三个大招

迷彩

个人成长 10月月更 学会学习 学会提问 学会思考

Qt|使用QuaZip压缩包中文乱码问题解决

中国好公民st

c++ qt 10月月更

2022-10-06:以下go语言代码输出什么?A:[1 2 3] [1 2 3] ;B:[1 2 3] [3 4 5]; C:[1 2 3] [3 4 5 6 7 8 9];D:[1 2 3] [3

福大大架构师每日一题

golang 福大大 选择题

浅谈中小企业如何正确选择网络营销模式

石头IT视角

【结构体内功修炼】结构体实现位段(二)

Albert Edison

C语言 结构体 10月月更 位段

踩上元宇宙的风口后,消费级AR眼镜真的复兴了吗?

脑极体

【Nacos源码之配置管理 三】TaskManager 任务管理的使用

石臻臻的杂货铺

nacos 10月月更

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