编译 | 李磊 责编 | 张文
出品 | CSDN(ID:CSDNnews)
受新冠疫情影响, 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%)。
图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 的相关语言都添加到前者的搜索结果中。
图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 从实验室中带出来并付诸实践的技术。如果你理解了这个定义,那么有关机器学习的内容占使用量第一就很正常了:
图3.人工智能,机器学习和数据
相比去年,机器学习增长了 14%,人工智能增长了 64%;数据科学增长了 16%,统计数据增长了47%,尽管有人说 AI 已经停滞不前,但我们在数据中并未看到这一点。
自然语言领域在去年取得了惊人的进步,增长了 21%,例如 OpenAI 的 GPT-3,引起了大家很大的关注。但类似于之前 AlphaGo 获取围棋胜利的新闻在减少,AI 以及机器学习、数据科学等相关领域进入了炒作的低谷,将当前的研究具体应用于商业产品上,还需要很多年的工作。
Web 开发
自 1990 年代初期 HTML 发明,第一批 Web 服务器和第一代浏览器诞生以来,Web 开发平台在不断地演变进化。这些平台使 Web 开发变得更加灵活:可以支持各种设备,支持各种屏幕尺寸,可以在浏览器中运行复杂的应用程序。每到新的一年,之前的桌面应用就会看起来很过时。
那么,Web 框架的世界在过去一年具体发生了什么变化呢?
图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%。
图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/
程序员如何避免陷入“内卷”、选择什么技术最有前景,中国开发者现状与技术趋势究竟是什么样?快来参与「2020 中国开发者大调查」,更有丰富奖品送不停!
- 上一篇: 人工智能迫切需要一个“伦理转向”
- 下一篇: 人工智能技术成为楼宇对讲行业发展主流技术之一