【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

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

评论

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

自助洗车到底有哪些不一样的地方

共享电单车厂家

自助洗车加盟 24小时自助洗车

揭秘支撑百度搜索、Feed、小程序三大业务的MVVM框架设计思想,San 核心人员倾力打造

图灵教育

前端开发 好书推荐 框架设计

Dubbo3 官方文档贡献者征集令

阿里巴巴云原生

阿里云 开源 云原生 dubbo

技术实践 | 场景导向的音视频通话体验优化

融云 RongCloud

你的城市有24小时共享自助洗车吗

共享电单车厂家

自助洗车加盟 自助洗车店

在线文档协作:办公必备高效率神器

小炮

Gartner 网络研讨会 “九问数字化转型” 会后感

明哥的IT随笔

数字化转型

有哪些好用的工作汇报工具

优秀

低代码 工具软件

自助洗车一次费用不到10元你敢信

共享电单车厂家

自助洗车加盟 自助洗车费用

深入剖析 HIVE 的锁和事务机制

明哥的IT随笔

大数据 hive 数据仓库

数据库主键一定要自增吗?有哪些场景不建议自增?

CRMEB

自助洗车为什么可以做到24小时营业

共享电单车厂家

自助洗车机 自助洗车加盟 24小时自助洗车

Move Protocol Beta测试版进行时,瓜分生态核心权益MOMO

鳄鱼视界

为 Serverless Devs 插上 Terraform 的翅膀,实现企业级多环境部署(上)

阿里巴巴云原生

阿里云 Serverless 云原生 开源项目

昇腾科研创新使能计划赋能开发者  华为计算提供三大维度支持

Geek_2d6073

Serverless 时代下微服务应用全托管解决方案

阿里巴巴云原生

阿里云 Serverless 微服务 云原生

天天在都在谈的S3协议到底是什么?一文带你了解S3背后的故事

wljslmz

对象存储 S3 6月月更

Nebula Graph入驻阿里云计算巢,助力企业打造云上超大规模图数据库

阿里云弹性计算

spark 分布式 云原生 图数据库 计算巢

pnpm 中无法使用 patch-package 打补丁

OpenHacker

前端 js

数字藏品系统开发,NFT艺术品交易平台搭建

薇電13242772558

NFT 数字藏品

Move Protocol Beta测试版稳定,临时决定奖池规模再扩大

小哈区块

如何使用 DATAX 以 UPSERT 语义更新下游 ORACLE 数据库中的数据

明哥的IT随笔

oracle 大数据 数据仓库 DataX

Move Protocol Beta测试版稳定,临时决定奖池规模再扩大

EOSdreamer111

带你区分几种并行

华为云开发者联盟

后端 开发 华为云

启动!阿里巴巴编程之夏2022

阿里巴巴云原生

阿里云 云原生 编程之夏

秒云云原生信创全兼容解决方案再升级,助力信创产业加速落地

MIAOYUN

运维 云原生 信创 智能运维 信创云

力扣每日一练之双指针1Day8

京与旧铺

6月月更

SQL操作:WITH表达式及其应用

华为云开发者联盟

数据库 sql 后端 华为云

Move Protocol Beta测试版稳定,临时决定奖池规模再扩大

西柚子

自助洗车方便主要体现在哪方面

共享电单车厂家

自助洗车 自助洗车加盟

Docker入坑篇

青柚1943

Docker DevOps 云原生 容器化

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