AI 告别炒作,Java 0 增长,2021 技术路在何方?

编译 |李磊
平台数据显示并发编程同比增长8%,这不是一个很大的数字,但不要因为数字小就忽略它。Java是第一种被广泛使用的支持并发的语言,在当时的90年代中期,因为处理器内存等硬件条件限制,多线程运行在当时是一种奢侈,并发编程的条件并不充足。

去年,CSDN整理了O’Reilly关于2020年技术趋势的解读,其中关于Python、AI和云平台的部分预测,在过去一年内都得到了验证。作为一个在线学习网站,O’Reilly每年都会对开发者需要注意和探索的趋势进行解析。在最新的2021年的技术趋势报告中,有哪些新变化,又受新冠疫情影响,2020年在线学习的使用量处于稳定增长,很多公司关闭了办公室,要求员工在家远程办公;线下教育也受到了冲击,线上教育同比增长了96%,图书的使用量增加了11%,教育视频的使用量增加了24%。

疫情期间,不少公司急需在线业务的支持以维持生存,包括小型餐馆和农贸市场都增加了网上下单功能。在此之下,每个公司的开发部门成了一个非常重要的部门,为其业务提供各种技术支持。具体在技术、编程语言、工具框架层面,O’Reilly通过数据分析发现:

Python使用量位列第一,并以27%的速度持续增长。

多重编程范式、并发编程、动态类型与静态类型的融合、低代码甚至无代码工具的普及将成为未来的趋势。

AI的内容持续增长,机器学习增长了14%,人工智能增长了64%;数据科学增长了16%,统计数据增长了47%。

Web开发越来越成为程序员的专业领域,Ruby on Rails和Django表现出了非常强劲的增长,有关PHP的内容使用量却相对较低且在持续下降。

云相关的内容增长了41%,微软Azure的内容增长了136%,Google Cloud增长了84%。许多公司已将重要的业务、关键软件和数据转移到云上,但未来还有很长的路要走。

Python位列第一,并持续增长

O'Reilly在线学习平台上,使用量最高的几种语言依次是Python(上升27%)、Java(下降3%)、C++(上升10%)、C(上升12%)和JavaScript(上升40%)。

2345截图20200908083720.png

图1.各编程语言使用量与增长情况

令人惊讶的是,JavaScript的使用量远远落后于Python和Java,仅仅是Python的20%和Java的33%。再往后看,我们发现Go语言和Rust语言也在以16%和94%的速率持续增长。

Go作为一门并发编程语言,显然已经确立了自己的地位。Rust的受欢迎程度也将继续增长,因为其现有存量小,实现94%的增长并不困难,下一步,Rust可能会在“系统编程”确立自己的地位:构建新的操作系统和用于云计算操作的工具。

因为一些编程语言的名称或其框架里包含了另一个语言和工具,就像许多Java开发人员都使用Spring框架,搜索“Java”相关的关键词时,往往会省略“Spring”。使用React、Angular和Node.js框架的JavaScript也是如此,而使用Python最常用的库是PyTorch和scikit-learn。所以我们将有关Python、Java和JavaScript的相关语言都添加到前者的搜索结果中。

2345截图20200908083720.png

图2.编程语言和框架组合后的使用量情况

组合后的结果依然和前面相似,但在一些关键信息上有所区别。Spring语言7%的增长可以中和Java 7%的下降,实现零增长,虽然零增长的表示并不恰当,尤其是对已经陷入困境的公司所拥有的语言来说。

如果在JavaScript的搜索结果中增加了最流行的框架:React、Angular和Node.js,那么O'Reilly中的JavaScript使用量将上升到Python的50%,仅略低于Java及其相关框架。将用户频繁使用的框架PyTorch和scikit-learn添加到Python中后,更是扩大了Python的领先优势

建议

但对入门者来说,选择一门优秀且有潜力的编程语言至关重要。初学者如果选择了一门排名靠后的小众的编程语言,可能会出现各种麻烦。

因此我们不提倡初学者使用Python、Java之外过于小众的语言。如果你在某种语言的使用上已经很熟悉了,你可以换个新语言尝尝鲜,但不要把工作重心全部押在上面。

随着潮流的变化和行业的发展,一些编程语言的使用量可能会上升或下降,但我们认为Python、Java这些主流语言,在很长一段时间里都不会过时,放心选择吧。

影响编程语言发展的4个关键因素

如果说语言之间的竞赛没那么重要,那什么才是影响编程语言发展的重要因素?我们总结出了这4点:

多重编程范式

去年以来,O'Reilly平台上函数式编程的使用量增加了14%。但是,经典功能语言Haskell和Erlang却不在其中,两者均未显示有开发者大量使用情况,且两者均下降(同比下降约20%)。面向对象编程的增长甚至超过了函数式编程,自去年以来增长了29%。这表明真正的趋势是,将函数特性集成到面向过程编程和面向对象编程的语言中。

从2008年的Python 3.0开始,到2014年的Java 8,编程语言持续增加了高阶函数(lambda)和其他“函数”的功能,现在几种流行的语言,包括JavaScript和Go语言从一开始就具有函数特性。这种趋势最初于20年前的C++的标准模板库出现,我们希望它一直继续下去。

并发编程

平台数据显示并发编程同比增长8%,这不是一个很大的数字,但不要因为数字小就忽略它。Java是第一种被广泛使用的支持并发的语言,在当时的90年代中期,因为处理器内存等硬件条件限制,多线程运行在当时是一种奢侈,并发编程的条件并不充足。

得益于摩尔定律带来的硬件发展,情况已经发生了巨大的改变,多线程运行越来越简单,所以对并发编程的支持就像如对函数式编程的支持,已成为板上钉钉的趋势,Go、Rust和大多数其他现代语言都内置了对并发的支持,而这一直是Python的弱点之一。

动态类型与静态类型

相比面向过程编程和面向对象编程之间的区别,Ruby、JavaScript这类动态语言与Java、Go这类静态语言之间的区别会更大。

曾几何时,将静态类型添加到动态语言的话题引起了不小的争议,随后,将各种类型范式进行融合也一度「甚嚣尘上」。作为动态语言之一的Python在3.5版本中添加了类型检查功能,并且在之后的版本不断增加静态类型检查的功能。TypeScript在JavaScript加入静态类型后,也实现了每年12%的增长。可见,动态类型和静态类型的融合也会在未来成为趋势。

低代码甚至无代码

电子表格是低代码计算的先驱,首款电子表格办公软件VisiCalc在1979年发布,使数百万人无需学习编程即可进行复杂计算。平民大众化是许多技术领域的重要趋势,编程也同样如此,低代码或无代码编程将毋庸置疑地改变编程的未来。

将来,一定会有新的语言和新的工具出现,实现无代码或低代码的编程,它们极其简单,可能会以任何方式出现(千万别是BASIC这样的),总会有程序员开发出这样的编程工具。

可以预见的是,低代码和无代码带来的强烈反差,会让程序员一时难以接受,甚至视而不见。但更大众化的低代码,会将编程的能力交到更多人手上,这是一件好事。这种趋势并不意味程序员会被「非程序员」淘汰,而是成为生产力更高的群体,成为编写这些低代码工具的人。

小结

鉴于我们已经越来越接近摩尔定律的尽头,并发对于编程的未来至关重要,我们不仅仅拥有更快的处理器,还将长期使用云服务器、微型服务器甚至功能本身就是服务器的系统,它们天生就是并发系统。

函数式编程不能解决并发问题,但是一些确定的原则会让我们少走弯路——每个人都喜欢一流的功能、软件项目越来越大、系统会越来越复杂……因此对于编程语言来说,通过融合功能特性来扩展自身具有重大意义。

无论您是技术leader还是新手程序员,都要注意这些正在发生的趋势,它们将长久改变我们行业的面貌。

AI、机器学习和数据科学

尽管AI和机器学习是两个截然不同的概念,但它们经常被混淆,于是我们将机器学习定义为「AI的有效部分」。AI更注重科研和前瞻性,机器学习是将AI从实验室中带出来并付诸实践的技术。如果你理解了这个定义,那么有关机器学习的内容占使用量第一就很正常了:

2345截图20200908083720.png

图3.人工智能,机器学习和数据

相比去年,机器学习增长了14%,人工智能增长了64%;数据科学增长了16%,统计数据增长了47%,尽管有人说AI已经停滞不前,但我们在数据中并未看到这一点。

自然语言领域在去年取得了惊人的进步,增长了21%,例如OpenAI的GPT-3,引起了大家很大的关注。但类似于之前AlphaGo获取围棋胜利的新闻在减少,AI以及机器学习、数据科学等相关领域进入了炒作的低谷,将当前的研究具体应用于商业产品上,还需要很多年的工作。

Web开发

自1990年代初期HTML发明,第一批Web服务器和第一代浏览器诞生以来,Web开发平台在不断地演变进化。这些平台使Web开发变得更加灵活:可以支持各种设备,支持各种屏幕尺寸,可以在浏览器中运行复杂的应用程序。每到新的一年,之前的桌面应用就会看起来很过时。

那么,Web框架的世界在过去一年具体发生了什么变化呢?

2345截图20200908083720.png

图4.Web开发使用量排行

如上图所示,React在使用量上处于领先地位,同时呈现34%的显着增长。尽管有传言称Angular正在逐渐消失,但它依然是排名第二的平台,增长了10%。服务器端平台Node.js的内容使用量仅次于Angular,增长了15%,这些都还比较合理。

令人惊讶的是,Ruby on Rails因为其稳定的性能表现,相比往年同比增长了77%。与Rails同时期出现Django也呈现了63%显著增长。

这些增长是否适用于所有旧平台?并没有。尽管几乎80%的网站仍在使用PHP,但有关PHP的内容使用量却相对较低,且下降了8%,期待看到PHP 8如何改变这一局面。

万维网的最初愿景是为每个人赋能,让技术和信息普及,大众无需成为技术极客,不需要学会编程,在浏览器中查看源代码,只要在感兴趣的地方点击一下即可。

25年后,情况依然没有改变,你仍然需要查看源代码,依然会看到各种难以理解的JavaScript,Web开发越来越成为程序员的专业领域,其它语言也是如此,这真的很讽刺。新一代平台或网络结构的出现是否会逆转这种趋势?我们拭目以待。

云服务

云服务在迅速增长已经不是什么新鲜事了。自去年以来,云的关键词使用量增长了41%,这还不包含特定供应商例如Amazon Web Services、Microsoft Azure或Google Cloud,如果加上这些,增长率高达46%。

2345截图20200908083720.png

图7.云

领先的云供应商AWS、Azure和Google Cloud之间的竞争愈演愈烈,AWS保持领先,甚至超过了「Cloud」这个词,微软和谷歌正在努力追赶,有关Azure的内容显示136%的增长,比任何其他竞争对手都快。Google Cloud 84%的增长也很不错。随着Azure和Google Cloud的快速增长,亚马逊的主导地位可能即将不保。

微软Azure强势增长的背后,显示着它在将自己改造成云计算公司方面做得非常出色。在过去的十年,微软重新梳理了各条业务线的方方面面,并转型成为了开源领域的领导者,同时拥有了GitHub和LinkedIn。没有如此坚定而激进的转型动作,微软永远不可能获得Azure这样的成功。

尽管大多数公司都在以各种方式使用云服务,并且许多公司已经将重要的业务、关键软件和数据转移到云上,但未来还有很长的路要走。

写在最后

所谓趋势不只是最新的流行动向,也是一个漫长的过程:容器化最早可以追溯到1979年的Unix 7,而Sun Microsystems早在1990年代就通过其工作站发明了云。

我们总是喜欢谈论“互联网时代”,认为技术的发展日新月异,但是最重要的技术趋势并不是几个月或几年就能形成的,而是横跨了几十年的时间,来到我们面前,甚至是在发明后不久就被大家遗忘,在漫长的岁月后被重新发掘,浮出水面,引领潮流。

带着这个思考,让我们往后退一步,重新观察一下棋面:我们要如何利用AI所赋予的强大能力?并发对处理海量运算很重要,然后呢?摩尔定律即将走到尽头,下一个突破点在哪里?开发者对计算机的操作从多对一变成了一对数千,自动化是否从一种选择变成了一种必要?

毋庸置疑,人人都应该学会编程,但这并不意味着每个人都要成为专业的程序员,而是每个人都可以有效地使用计算机,这一定要通过编程来实现吗?要知道,无代码和低代码的编程工具已经开始进入市场,使得用户可以独自构建从业务——应用——AI原型的所有内容,这个趋势甚至可以追溯到1950年代后期。

最后,还有一种可能就是,最重要的趋势根本不存在于我们的数据和工具之中。现有的法律对技术还没有进行监管和规范,使得工具和数据很大程度上都是免费的,在未来几年,法律法规将对技术起到重要作用,对隐私等问题会越来越重视,这也许是影响下一个趋势的关键因素。

二十年前,我们建造了一个并不是真正想要的未来,今后我们面临的问题也很简单:我们想要建立什么样的未来?

原文链接:

https://www.oreilly.com/radar/where-programming-ops-ai-and-the-cloud-are-headed-in-2021/有哪些值得我们关注的信息,不妨通过本文来一探究竟。

THEEND

最新评论(评论仅代表用户观点)

更多
暂无评论