您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

编程语言将走入怎样的 2022

时间:2022-01-29 13:00:53  来源:  作者:InfoQ
编程语言将走入怎样的 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 还是主要用在了 Kube.NETes 生态里面。我们这边也有项目尝试过用 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 语言的,哈哈。

 

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



Tags:编程语言   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
什么编程语言最好?这是个能让各路程序员吵翻天的话题,每种语言都有自己的拥趸,全球现在找出三五十种编程语言都不是问题,热门的至少也有20种,先不说这些语言好用与否,它们的性能也...【详细内容】
2022-07-01  Tags: 编程语言  点击:(29)  评论:(0)  加入收藏
转自:https://www.jdon.com/61280 本文分析了来自 5,508 个软件工程职位列表的数据,以帮助您找出哪些编程语言的薪水最高。 我们分析了RemoteOK(世界上最大的工作委员会)上 5k...【详细内容】
2022-06-30  Tags: 编程语言  点击:(27)  评论:(0)  加入收藏
出品|开源中国文|叶子2015 年的 5 月 15 日,Mozilla 发布了 Rust 1.0。 走近Rust Rust 是通用的编译器型编程语言,设计准则为“安全、并发、实用”,支持函数式、过程式以及面向...【详细内容】
2022-05-16  Tags: 编程语言  点击:(49)  评论:(0)  加入收藏
1 语言先来说一下什么叫语言吧,以及语言的功能。我们用来交流的工具叫语言,通过这个工具,你可以和你想交流的人进行一番的交流,这就叫语言;它只是一个用来交流的工具而已。它的功...【详细内容】
2022-03-30  Tags: 编程语言  点击:(76)  评论:(0)  加入收藏
近日,Rust和Swift资深专家Aria Beingessner发布的一篇文章《C 不再是一种编程语言》在Hacker News上引起了热烈讨论。原文链接: https://gankra.github.io/blah/c-isnt-a-lang...【详细内容】
2022-03-25  Tags: 编程语言  点击:(121)  评论:(0)  加入收藏
为什么编程对黑客很重要?在了解黑客的最佳编程语言之前,您必须了解编程在黑客中的重要性。 必须了解编码:黑客攻击涉及破坏协议和利用网络;因此,作为一名黑客,您需要了解您所关注...【详细内容】
2022-02-23  Tags: 编程语言  点击:(136)  评论:(0)  加入收藏
本文是“2021 InfoQ 年度技术盘点与展望”系列文章之一,由直播内容整理而成,重点聚焦编程语言领域在 2022 年的核心趋势展望,希望能帮助你准确把握 2022 年编程语言领域的核心...【详细内容】
2022-01-29  Tags: 编程语言  点击:(114)  评论:(0)  加入收藏
即使在安全技术取得进步之后,网络犯罪仍在不断增加。据统计,网络犯罪每分钟给企业造成约 290 万美元的损失。主要是因为新技术不断涌现,难以维护安全。随着网络威胁的增加,网络...【详细内容】
2021-11-04  Tags: 编程语言  点击:(157)  评论:(0)  加入收藏
作为程序员吃饭的工具,编程语言之间也形成了某种鄙视链,各大论坛里弥漫着剑拔弩张的气氛,众口难调。也难怪有很多初学者会有疑惑,为什么会有这么多编程语言,我到底应该学什么语言...【详细内容】
2021-06-29  Tags: 编程语言  点击:(198)  评论:(0)  加入收藏
JavaScript是Web开发中最简单的面向结果的语言之一。该语言使数据的处理和计算成为一种方便。它还有助于将视觉效果添加到屏幕上。它是一种同时用于客户端和服务器端应用程...【详细内容】
2021-06-25  Tags: 编程语言  点击:(186)  评论:(0)  加入收藏
▌简易百科推荐
1. 前言了解响应式编程,首先我们需要了解函数式操作和Stream的操作,下面我们简单的复习一下喽。1.1 常用函数式编程函数式接口中我们先来回顾一下Java中的函数式接口。常见的...【详细内容】
2022-07-15  二哥学Java    Tags:编程   点击:(1)  评论:(0)  加入收藏
在本文中,我们将学习如何使用 Next.js、 Prisma、 Postgres 和 Fastify 构建一个 Full-stack 应用程序。在本文中,我们将学习如何使用 Next.js、 Prisma、 Postgres 和 Fastif...【详细内容】
2022-07-12  qaseven    Tags:全栈   点击:(9)  评论:(0)  加入收藏
好的软件开发网站有哪些?做软件开发哪些网站能提供帮助呢?这些很多做软件开发的小伙伴都会问到的问题。007出海全球社交流量导航网站,整合了多方出海跨境网站资源,为你介绍出海...【详细内容】
2022-07-08  Chuhai007    Tags:软件开发   点击:(10)  评论:(0)  加入收藏
我们用monkey做压力测试后,会保存一个monkey日志,那如果想快速的分析日志中有哪些异常,我们可以用批处理工具进行快速的筛查,我们一起来看看吧。先编写个小脚本,然后修改为bat后...【详细内容】
2022-07-08  溪流涌动    Tags:monkey   点击:(13)  评论:(0)  加入收藏
白盒测试落地实践分为两个大方向,一个是静态分析,一个是动态分析,当然啦,也可以叫做静态测试和动态测试。那我们如何高质量保效率的做好白盒测试呢?Parasoft已经为您准备好了成熟...【详细内容】
2022-07-08  Parasoft中国    Tags:白盒测试   点击:(11)  评论:(0)  加入收藏
Altium Designer 自带脚本功能的开发项目,可以调用官方AD API接口对原理图或者PCB进行自动操作,本文主要分享开发的流程,和一些基本的概念信息,本文介绍的脚本工具例子可以用在P...【详细内容】
2022-07-07  电子工程师伟哥    Tags:Altium Designer   点击:(21)  评论:(0)  加入收藏
一、目录介绍 前置知识点 NIO Netty 的核心组件 Channel Callback Future 和 Promise 事件和 ChannelHandler Hello World二、前置知识点1、NIO首先我们需要回顾一...【详细内容】
2022-07-06  架构师jickly    Tags:聊天系统   点击:(16)  评论:(0)  加入收藏
1.事件流事件流是对事件执行过程的描述,了解事件的执行过程有助于加深对事件的理解,提升开发实践中对事件运用的灵活度。2.捕获和冒泡捕获阶段是【从父到子】的传导过程,冒泡阶...【详细内容】
2022-07-06  金乾坤    Tags:API   点击:(13)  评论:(0)  加入收藏
刷盘策略CommitLog的asyncPutMessage方法中可以看到在写入消息之后,调用了submitFlushRequest方法执行刷盘策略:public class CommitLog { public CompletableFuture<PutMe...【详细内容】
2022-07-06  Java码农之路    Tags:RocketMQ   点击:(16)  评论:(0)  加入收藏
最近读了本好书-《深度学习推荐系统》,读完不觉全身通畅,于是就有了写这篇文章的想法,把自己的理解和总结分享给大家。 本文将按照从算法到工程的顺序,先介绍一下推荐系统整体...【详细内容】
2022-07-05  InfoQ    Tags:推荐系统   点击:(22)  评论:(0)  加入收藏
站内最新
站内热门
站内头条