作者 | Md Kamaruzzaman
译者 | 张健欣
策划 | 蔡芳芳
对于软件开发行业来说,2020 年是意义重大的一年,许多领域都取得了重大突破。本文将基于来自认证来源的数据、图表和事实,根据过去来预测未来。如果你想要了解软件行业在 2021 年会有哪些变化,请阅读本文,本文涵盖了云、边缘计算、容器、量子、区块链、人工智能、深度学习、批处理、流式处理、数据库、编程、软件架构、Web、App、低代码、无代码等重要方向。
本文最初发布于 Towards Data Science(《21 Predictions about the Software Development Trends in 2021》),由 InfoQ 翻译并分享。
2020 年是近代史上史无前例的一年。人类在过去一百年中都没有经历过像 COVID-19 这样的全球性大流行病。它影响了我们星球上所有的国家、部门和几乎所有的个人。
好消息是我们马上就会拥有疫苗,终于可以满怀乐观和希望迎接新的 2021 年。对于软件开发行业来说,2020 年是意义重大的一年,在许多领域都取得了重大突破。COVID-19 显著加快了数字化转型,而且 2021 年的数字化转型趋势会更明显。
一年以前,我写了一篇文章来预测 2020 年的软件开发趋势:
《20 个 2020 年软件开发趋势预测》
https://www.infoq.cn/article/piUh6NWQCu8GZW1v8eQg
在软件开发行业,一年几乎就是一光年。我没有更新旧帖子,而是创建了一个新的预测清单,预测 2021 年软件开发行业的重要技术趋势。
做预测是一项有风险的任务。但是我会使用来自认证来源的数据、图表和事实,根据过去来预测未来。如果你想要了解软件行业在 2021 年有哪些变化,请阅读本文。
1集中式基础设施:云,无处不在的云
在 COVID-19 期间,大部分行业遭受了沉重的打击,尽管只有少数行业。云是朝阳行业,在大流行期间,它实际上比以往任何时候都更强大。如果在云应用方面存在任何疑问和不确定性,COVID-19 已经消除了这一点。
像 Corona 这样的全球性灾难表明,我们不仅需要云升级规模,也需要降低规模,例如,当我们的服务需求显著下降时。想想旅游和运输行业,他们不得不维护昂贵的数据中心,尽管他们的市场下降了 90%。
Forrester 预测,全球公有云 IT 基础设施将在 2021 年增长 35% 至 1200 亿美元:
Amazon to help 29 million people grow their tech skills with free cloud computing skills training
https://go.forrester.com/blogs/predictions-2021-cloud-computing-powers-pandemic-recovery/
2分散式基础设施:边缘计算将出现指数级增长
在公有云中,我们希望有一个集中的数据中心来提供数据和计算能力。但在许多场景中,我们有相反的需求,例如,数据和计算能力接近终端用户。有些是非常低的延迟(5 到 20ms)、高带宽、监管原因、实时用例、智能且强大的终端设备等等。
虽然边缘计算是一个老概念,并且我们已经在内容交付网络 (Content Delivery Network,CDN) 中使用边缘计算,但近年来它正变得越来越流行。随着互联车辆(自动汽车、无人机)、在线游戏、物联网、智能设备和边缘 AI/ML 的兴起,边缘计算将在 2021 年及以后成为一个巨大的市场。边缘计算将在 2021 年成为关键的另一个原因是 5G 移动设备的兴起。
2021 年,两个行业集团将争夺边缘计算的市场份额。其中一个集团是公有云提供商,例如亚马逊、微软、谷歌,如下所述:
Out on edge: The new cloud battleground isn't in the cloud at all - SiliconANGLE
https://siliconangle.com/2020/12/01/edge-new-cloud-battleground-isnt-cloud/
在这方面,亚马逊是 AWS Snow family、AWS IoT Greengrass 等许多服务的领导者。微软也提供 Azure Stack Edge、Azure Edge Zone 等边缘计算服务。谷歌也使用 Google Anthos 将它的数据中心服务转移到终端用户。
另一个集团是已经具备边缘基础设施的行业,例如电信公司、数据中心提供商、网络提供商。如果它们能够快速行动并利用它们的优势(例如,现有的基础设施),他们就有机会在这方面发挥领导作用。混合云提供商 RedHat(IBM)凭借其混合云平台 OpenShift 和 OpenStack 的参与,将成为这里的关键选手。最近,三星与 IBM 合作开发边缘计算解决方案:
Samsung, IBM to Develop Edge Computing, 5G and Hybrid Cloud Solutions for Industry 4.0
https://www.thefastmode.com/technology-solutions/18721-samsung-ibm-to-develop-edge-computing-5g-and-hybrid-cloud-solutions-for-industry-4-0
State of the Edge 是为边缘计算制定开放标准,使边缘计算供应商中立的倡议。最近 State of the Edge 成为了 Linux 基金会的一部分。与 CNCF 一样,在 2021 年及以后,State of the Edge 也将获得更多高光时刻。
请为 2021 年及以后边缘计算领域的许多创新、融合、并肩战斗和标准化做好准备。
3云:AWS 领先,但多云会是未来
在公有云供应商中,谁是领导者是毫无疑问的。在 2020 年第三季度,亚马逊以 32% 的市场份额领跑公有云市场,如下所示:
Global cloud infrastructure market Q3 2020
https://www.canalys.com/newsroom/worldwide-cloud-market-q320
微软在其云产品方面表现强劲,在 2020 年实现了 48% 的年度增长。在 2020 年第三季度,微软的市场份额为 19%,而它在 2019 年第三季度的市场份额为 17%。
目前,谷歌是第三大公有云提供商,在 2020 年第三季度的市场份额为 7%。
在 2021 年,亚马逊和微软将分别保持第一和第二的位置。然而,阿里巴巴将在 2021 年取代谷歌,因为它在 2020 年第三季度的市场份额为 6%,仅次于谷歌。
此外,多云倡议将在 2021 年获得更大的发展势头。许多公司也转向了多云策略。中情局(CIA)最近将其云合同授予了多个云供应商而不是单个供应商:
Microsoft, AWS among C2E cloud provider contract awardees - Washington Business Journal
https://www.bizjournals.com/washington/news/2020/11/20/microsoft-aws-among-c2e-cloud-contract-awardees.html
直到现在,亚马逊还不愿意加入多云倡议来保护它的市场份额。但正如我们 10 年前在微软身上看到的那样,整个行业和社区比最大的单个公司更强大。最近,亚马逊已经悄然加入了多云倡议:
AWS quietly enters the multi-cloud era
https://www.protocol.com/manuals/new-enterprise/aws-multicloud-era
云原生计算基金会(Cloud Native Computing Foundation ,CNCF) 在多云运动中扮演着关键角色,可以说已经超过了 Linux 基金会。在 2021 年,我们可以看到 CNCF 有更多增长。此外,像 HashiCorp 这样的多云服务供应商会变得更加重要。
一些突出的项目也提供了与流行的特定供应商的云服务的 API 兼容性,例如 MinIO(提供兼容 AWS S3 的对象存储)。在 2021 年,将会有更多类似 MinIO 的倡议,这样我们就可以轻松地切换受欢迎的供应商的服务。
这对整个行业来说是个好消息,正如我梦想的那样,公司可以在多个云上无缝部署它们的应用程序。
4容器化:Kubernets 称王,Docker 将退场
容器化是云原生 IT 的核心技术,无论是公有云、私有云,甚至是边缘计算。几年来,Kubernetes 已经成为领先的容器编排和管理技术。就像 Linux 之前统治着数据中心一样,Kubernetes 也统治着公有云和私有云。起初,谷歌是 Kubernetes 背后的主导力量,但是现在几乎所有的巨头科技公司都支持 Kubernetes。
所有主要的公有云提供商现在都提供托管的 Kubernets 服务(Amazon EKS、Azure AKS、Google GKE)以及它们的托管容器化服务。另一方面,RedHat 正在使用 OpenShift 在私有云中提供托管的 Kubernetes 服务。
在 2021 年,我们将看到更多对 Kubernetes 的采用,因为它是混合云或多云战略的核心组件。非传统企业应用程序,如 AI/ML、数据库、数据平台、无服务器和边缘计算应用程序也将转移到 Kubernetes。
另一方面,Docker 正在慢慢失去它作为一种现代化技术的魅力。已经有一些倡议来标准化容器格式和运行时,其中两个在最近几年得到了巨大的推动。一方面是 Kubernetes 引领的容器运行时接口(Container Runtime Interface,CRI)。另一方面是 Linux 基金会引领的开放容器倡议(Open Container Initiative,OCI)。
最近,Kubernetes 弃用 Docker 而支持 CRI,并计划在 2021 年的后续 Kubernetes 版本(1.22)中完全移除 Docker:
Kubernetes to deprecate Docker container runtime in v1.22 - SD Times
https://sdtimes.com/kubernetes/kubernetes-to-deprecate-docker-container-runtime-in-v1-22/
由于 Kubernetes 是容器生态系统中的巨头,2021 年将会是 Docker 终结的开始。从好的方面看,CRI 和 OCI 在 2021 年会获得更大的发展势头,尤其是基于 CRI 的容器将在 2021 年获得巨大的爆发式增长。
5计算:量子计算将得到推动
量子计算是这个清单上最具革命性的技术。就像数字计算机一样,它有潜力影响每一个领域。我已经创建了一份 2030 年代最热技术的清单,而量子计算排名第一:
10 Predictions about the Software Development trends in the 2030s
https://towardsdatascience.com/10-predictions-about-the-software-development-trends-in-the-2030s-2fab86c5f661
换个角度看:如果我们把当今最先进的超级计算机当作正常人类,例如,一名象棋选手或者一个 8 年级数学学生,那么量子计算就是像马格努斯·卡尔斯(Magnus Carles)这样的超级天才,他可以同时和 50 名普通象棋选手对弈,或者像欧拉(Euler)这样的天才数学家。
在 2020 年,量子计算有了一些重大的突破和进步。在 2020 年 6 月,霍尼韦尔(Honeywell)声称其创建了最强大的量子计算机,打破了谷歌之前创造的记录:
Honeywell Says It Has Built The World's Most Powerful Quantum Computer
https://www.forbes.com/sites/davidjeans/2020/06/19/honeywell-says-it-has-built-the-worlds-most-powerful-quantum-computer/?sh=b8772137cd46
许多政府和科技巨头都在探索和投资量子计算。谷歌和 IBM 是这个领域的两个最大的选手。谷歌甚至推出了一个开源库 TensorFlow Quantum (TFQ),用于制作量子机器学习模型的原型:
Google launches TensorFlow for quantum computers
https://thenextweb.com/neural/2020/03/09/google-launches-tensorflow-for-quantum-computers/
亚马逊也通过其 Amazon Braket 云服务提供托管的量子计算服务。
考虑到其巨大的利润和无限的可能性,2021 年计算机量子将有一些突破和惊人的发现。
如果你想要探索量子计算,那么你可以使用开源 SDK qiskit,它还提供了免费课程:
Qiskit Learn
https://qiskit.org/learn/
6区块链:过山车仍将继续
区块链 (分布式账本) 也是近年来开发的主要颠覆性技术之一。就技术而言,它有改变整个行业的潜力。虽然加密货币在普及这项技术方面发挥了重要作用。它在推动这项技术走向 Gartner 的炒作周期曲线(Gartner’s Hype Cycle curve)的“期望膨胀期”方面也扮演了主要角色。
许多流氓实体利用比特币 Bitcoin 的流行,制造诈骗项目来欺骗那些想在短时间内暴富的普通人。现在,区块链正经历炒作周期曲线的“幻灭低谷”。另外,政府正在干预加密货币来防止诈骗。最近,中国政府查获了一个加密货币诈骗“Plus Token 庞氏骗局”:
Chinese Authorities Have Seized a Massive $4B in Crypto From PlusToken Scam - CoinDesk
https://www.coindesk.com/chinese-authorities-have-seized-a-massive-4-billion-in-crypto-from-plustoken-scam
Facebook 在 2019 年发布了它的加密货币 Libra,但在 2020 年面临巨大的监管压力:
Facebook is shifting its Libra cryptocurrency plans after intense regulatory pressure
https://www.theverge.com/2020/3/3/21163658/facebook-libra-cryptocurrency-token-ditching-plans-calibra-wallet-delay
其它开源区块链,如以太坊(Ethereum),正在将代码放入区块中,使它能够用于智能合约,这是区块链的未来。
在 2021 年,区块链将更多地作为一种智能合约机制使用,有望进入“启蒙斜坡(Slope of Englishtenment)”阶段。区块链将在 2021 年获得重大爆发,中国已经将它纳入其雄心勃勃的 50 万亿“新基建”计划:
Blockchain Officially Included in China's 50 Trillion "New Infrastructure" Plan | NEWS.8BTC.COM
https://news.8btc.com/blockchain-officially-included-in-chinas-50-trillion-new-infrastructure-plan
7人工智能:AI 将惠及所有人
作为近来最热门的技术之一,人工智能在 2020 年也取得了许多突破。另一个有意思的趋势是,人工智能开始以“全民 AI(AI for all)”的口号进入所有领域。
在自然语言处理领域,GPT-3 是 2020 年 5 月取得的最大的突破。美国公司 OpenAI 创建了 GPT-3,使得使用深度学习创建类似人类的文本成为可能。仅仅过了 4 个月,当《卫报》用 GPT-3 撰写了以下文章时,全世界都一起为之震惊:
A robot wrote this entire article. Are you scared yet, human? | GPT-3
https://www.theguardian.com/commentisfree/2020/sep/08/robot-wrote-this-article-gpt-3
在 2021 年,自然语言处理将取得突破性进展,人工智能将撰写文章或编写小型应用程序。
另一个有趣的发展是 AutoML 2.0,它支持工程自动化。在 2021 年,全周期人工智能自动化将取得重大进展,人工智能将更加平民化。
人工智能并不是没有偏见的,有道德的人工智能正变得越来越有吸引力。人工智能领域的另一个主要趋势是可解释的人工智能,即人工智能为什么做出某种决定需要一个解释。在 2021 年,随着欧盟对解释人工智能的决定制定法规,这些领域将取得重大进展。
人工智能在 2021 年及以后也将在航空业得到广泛应用。就在几天前,美国空军用人工智能作为副驾驶来驾驶了一架飞机:
U-2 Flies with Artificial Intelligence as Its Co-Pilot - Air Force Magazine
https://www.airforcemag.com/u-2-flies-with-artificial-intelligence-as-its-co-pilot/
人工智能也将成为未来中国数字基础设施的核心:
AI is Key to China Infrastructure Plan, as is AI Talent
https://www.enterpriseai.news/2020/06/24/ai-key-to-china-infrastructure-plan-as-is-ai-talent/
预计到 2021 年,人工智能会有许多令人振奋的创新和平民化。
8深度学习库:TensorFlow 2.0 和 PyTorch
谷歌和 Facebook 是深度学习和神经网络领域的两大主导者。谷歌的主要业务是搜索能力,它是自然语言处理领域的领先创新者。Facebook 的主要业务是社交网络,它必须处理图像、视频和文本。在图像处理领域,Facebook 是技术领导者,有许多创新。
出自谷歌的 TensorFlow 是深度学习领域的领先的库,但是 2016 年 Facebook 发布了 PyTorch 后一切都发生了变化。PyTorch 使用动态图而不是(TensorFlow 使用的)静态图,并且对 Python 更加友好。作为回应,谷歌在 2019 年创建了 TensorFlow 2.0,复制了 PyTorch 的很多功能(动态图、对 Python 友好)。它还与谷歌的 Collab 完美结合(Collab 是一款非常现代且功能强大的笔记本)。从那时起,谷歌的 TensorFlow 2.0 就越来越受欢迎。目前,根据 Stack Overflow 开发者调研 2020,TensorFlow 是最流行的深度学习框架:
图片来源:Stack Overflow Developer Survey, 2020
另一方面,开发人员喜欢用 PyTorch 工作,它以更好的开发人员工效学而更受开发人员的喜爱:
图片来源:Stack Overflow Developer Survey, 2020
在 2021 年,TensorFlow 2.0 和 PyTorch 将成为企业和社区的“首选”库。拥有 TensorFlow 代码库或者想要使用 Collab 笔记本的企业应该使用 TensorFlow 2.0。刚进入深度学习或者想要继续使用 Juypter 笔记本的企业或个人应该选择 PyTorch。
9数据存储:一个尺寸不能填满所有
现代数据库的前景充满选择和广泛的变化。我们有经典的 SQL 数据库,主要是四大数据库:MySQL、 Oracle、 MS-SQL、 PostgreSQL。我们也有 NoSQL 数据库,主要由一系列数据库组成:文档、键值对、宽列、时间序列、搜索、图。还有许多其它类型的数据存储。
我们最近看到了所谓的全球分布式 ACID 事务数据库或者 NewSQL 数据库。谷歌凭借 Google Spanner 成为这个领域的领导者,Google Spanner 是首个水平读 / 写可伸缩的 ACID 兼容数据库。亚马逊也有一个水平可扩展 ACID 兼容数据库,Amazon Aurora,提供几乎所有的 SQL 功能,但没有水平写入伸缩。除了超大规模云提供商之外,CockroachDB 也是一个非常突出的 NewSQL 或分布式 SQL 数据库。
在 2021 年,数据存储生态系统将保持现在的样子,有很多选择。没有一种数据库可以满足所有的目的。在 2021 年,选择正确的数据也将是一个非常具有挑战性的任务,需要仔细考虑。
许多流行的数据库已经修改了它们的许可 (MongoDB、 Cassandra、 Redis、Kafka),因为超级规模的云提供商,尤其是亚马逊,滥用了它们的创新,赚了钱却没有回报。这一趋势在 2021 年将继续,其它初创公司或创新型公司将使用更严格的许可来保护他们免受云提供商的掠夺。
10数据密集型计算:Spark 将继续领先
就在几年前,Hadoop 还是数据密集型计算或分布式批处理任务的默认选择。Apache Spark 目前是供应商中立的分布式批处理任务平台的首选,在大多数情况下几乎取代了 Hadoop。
这一趋势将在 2021 年继续,Spark 将被用作数据密集型计算的首选平台。Spark 是一个基于 JVM 的系统,需要非常大的资源,你将得到一份巨大的云账单。但不幸的是,目前还没有一个资源节约型的框架能匹配 Spark 的能力和成熟度。
所有主流的云提供商都有它们自己的云原生解决方案来进行数据密集型计算。我的个人建议是在 2021 年使用 Spark 而不是特定的云解决方案,以避免供应商锁定。
11实时流处理:Flink 将是明显的选择
近年来,随着企业抛弃传统的 Lambda 架构,转而使用实时流处理框架,实时流处理正变得越来越流行。
此外,这里存在两种类型的框架。一种是以 Spark Streaming 为核心的基于微批量的平台。另一种是以 Apache Flink 为核心的低延迟流处理平台。
Apache Flink 在需要实时流处理(欺诈检测、异常检测、基于规则的警报、实时数据即时分析)的场景中超越了 Spark 流处理。
所有超大规模云提供商也提供了它们自己的解决方案。我建议在 2021 年选择 Flink,而不是 Spark 或者专有云解决方案,因为它在实时流处理方面具有无与伦比的能力。
12数据平台:其他人将追随 Snowflake
现代数据架构相当复杂。它包含数据源、ETL 管道、数据仓库、数据湖、数据分析工具以及许多其它组件。下面是企业数据平台(ABM AMRO 的数据平台)的一个示例:
https://medium.com/abn-amro-developer/abn-amros-data-integration-architecture-f33506a211c3
Snowflake 通过提供一个集中的数据源、单平台,以及在它上面构建许多不同的工作负载,从而彻底改变了现代数据架构。在经典架构中,数据需要在不同的平台上转移,但在 Snowflake 中只有一个数据的“信源”。
这不是适用于所有情况的完美案例。但是对于大部分情况,这将普及并赋能数据平台和数据仓库。正如甲骨文的 CEO 拉里·埃里森(Larry Ellison)所说,它已经动摇了数据仓库市场:
Oracle's Larry Ellison Admits Snowflake Is a Killer: 'It's Killing Amazon Redshift'
https://cloudwars.co/oracle/oracles-larry-ellison-admits-snowflake-is-killing-amazon-redshift/
在 2021 年,我预期更多的创新将为企业案例带来像 Snowflake 一样的单数据平台。这对于许多公司将是一个巨大的帮助并改变游戏规则。
13快速应用开发:低代码 / 无代码将扩展
快速的数字化转型正创造巨大的软件工程师供需缺口。尽管越来越多的新工程师加入这个行业,但仍然不够。近年来,低代码 / 无代码倡议的势头正越来越强劲。
市场上有许多低代码 / 无代码平台,主要是在 Web 开发领域,例如 Bubble。它们的成功也为 LCNC 在其它领域的开发铺平了道路:无代码应用程序开发、无代码人工智能、无代码机器学习。LCNC 工具可以通过如下所述的好主意促进业务或人员的发展:
Low-code platforms will save your business. Here's how.
https://www.techrepublic.com/article/low-code-platforms-will-save-your-business-heres-how/
而且,正如我去年预测的一样,公有云提供商正提供 LCNC 服务。微软提供 Power Apps,谷歌提供 AppSheet,AWS 提供 Honeycode 作为一个 LCNC 平台来快速构建应用程序。
在 2021 年,LCNC 将成为激烈竞争的领域之一,有许多创新、合并和收购。如果你是一个拥有伟大想法的个人或企业,请关注 2021 年的 LCNC。
14软件架构:微服务、单体式、无服务器将共存
近年来,微服务架构成为大型企业应用程序开发的首选。然而,设计微服务应用程序比设计“一刀切”单体应用程序要复杂得多。微服务架构需要一组最佳实践,正如我在下面这篇文章中所列出的:
Effective Microservices: 10 Best Practices
https://towardsdatascience.com/effective-microservices-10-best-practices-c6e4ba0c6ee2
像其它软件架构一样,微服务也有它擅长的用例和失败的案例。它还需要一套设计模式,我总结如下:
Microservice Architecture and its 10 Most Important Design Patterns
https://towardsdatascience.com/microservice-architecture-and-its-10-most-important-design-patterns-824952d7fa41
最近,由于微服务架构的复杂性和在某些用例中的失败,人们对它产生了强烈的反感。Kelsey Hightower 在下面的推特中总结了对微服务的批评:
这与我们几年前所看的趋势形成鲜明对比,当时单体架构受到批评并被视为过时的。实际上,单体架构也是一种很好的架构,它特别适合我在下面这篇文章中提到的用例:
Looking Beyond the Hype: Is Modular Monolithic Software Architecture Really Dead?
https://towardsdatascience.com/looking-beyond-the-hype-is-modular-monolithic-software-architecture-really-dead-e386191610f8
另一个近年来大肆宣传的软件架构是无服务器架构(Serverless Architecture)。亚马逊开创了无服务器计算的先河,推出了开创性的 AWS Lambda 服务,开发人员只编写代码,服务提供商托管服务器。这个架构也有人炒作,有人批评。像单体架构和微服务架构一样,无服务器架构也不是万能的,应该用在它适合的地方(例如,事件驱动和突发负载)。
在 2021 年,所有的软件架构(单体架构、微服务、无服务器)都将共存,因为它们都有各自的用例和优缺点。我建议在大型企业开发中选择微服务架构(传统上使用 SOA),在小型开发中使用单体架构,在事件驱动和突发负载中选择无服务器架构。
15编程(主流):Python 和 Java 将引领潮流
近些年,编程语言领域也经历了重大变化。传统的偏重的编程语言的市场份额正逐渐被更简单且对开发人员更友好的编程语言所占据。在 2020 年 1 月,我对需求中的语言进行了广泛的分析,将 Python 和 Java 分别放在第一位和第二位:
Top 10 In-Demand programming languages to learn in 2020
https://towardsdatascience.com/top-10-in-demand-programming-languages-to-learn-in-2020-4462eb7d8d3e
最后,最受欢迎的编程语言排名网站 TIOBE 承认了这一变化,并将 Python 置于 Java 之上:
TIOBE Index: Python slithers ahead of Java for the first time
https://developer-tech.com/news/2020/nov/06/tiobe-index-python-ahead-java-first-time/
随着软件开发行业的蓬勃发展,以及大量新开发人员加入这个行业,更简单、对开发人员更友好的编程语言将在 2021 年更受欢迎。
Python 是数据科学中排名第一的编程语言,在除了底层编程之外的几乎所有其它领域也都是排名第二或第三的编程语言。
Java 是 Web 开发领域毫无争议的头号语言,在其它领域(包括后端开发)中也越来越流行。它也是初学者的绝佳语言。
Java 正慢慢丧失其作为最流行的编程语言的受欢迎程度。然而,由于其传奇般的向后兼容性和不断更新(6 个月的发布周期,polyglot Virtual Machine GraalVM),它仍然是企业软件开发的首选编程语言。
C++ 是另一个近年来发生了重大变化的主流编程语言。几天前刚刚发布了 C++20,它将完全改变 C++ 截至目前的编程方式。这是近年来最具破坏性的 C++ 版本之一,将极大地影响其在 2021 年及以后的流行度。
在 2021 年,主流编程语言将保持它们的地位,尽管它们会感受到来自现代编程语言的压力。
16编程(现代):Rust 终将到来
最近几年,编程领域的另一个有趣的趋势是现代编程语言的兴起。比较老的语言存在过去的包袱,不能快速变迁(Java),或者通过增加越来越多的功能而变得臃肿且令人望而却步(C++)。
现代的比较新的编程语言没有过去的包袱,能够满足当今开发者的需求。它们大多非常关注开发人员的工效学,支持现代功能,例如类型推理、null 安全性、表达力强、简洁。其中许多还被设计来利用现代硬件和现代基础设施(云、多核、GPU、TPU)。
以 Rust、 Go、 Kotlin、 Swift、 Type 为首的现代编程语言正日益流行,正如我在下面这篇帖子中预测的那样:
Top 7 Modern programming languages to learn now
https://towardsdatascience.com/top-7-modern-programming-language-to-learn-now-156863bd1eec
这一趋势将在 2021 年继续,因为它们是增长最快的语言之一。
其中,随着行业的注意,Rust 将在 2021 年取得突破。在过去 5 年中,根据 Stack Overflow 开发者调研,它是最受喜爱的编程语言:
图片来源:Stack Overflow Developer Survey, 2020
科技巨头终于在安全敏感的复杂项目中使用 Rust 而不是 C/C++。微软最近声明,他们将使用 Rust 来修复安全漏洞:
Microsoft: Here's why we love programming language Rust and kicked off Project Verona | ZDNet
https://www.zdnet.com/article/microsoft-heres-why-we-love-programming-language-rust-and-kicked-off-project-verona/
就在几周前,亚马逊宣布大力投入 Rust 并解释了他们这样做的原因:
Amazon AWS Invests In Rust
https://www.i-programmer.info/news/98-languages/14183-amazon-aws-invests-in-rust.html
谷歌的 Go 已经是主流且成熟的编程语言。随着 Go 2 release 规划的大量改进,它将在未来获得更多人气。
JetBrain 的 Kotlin 已经成为 JVM 生态系统中第二流行的类型化编程语言。在 Android 应用开发中,它已经超过了 Java:
Android's commitment to Kotlin
https://android-developers.googleblog.com/2019/12/androids-commitment-to-kotlin.html
微软的 Type 已经成为 Java 的类型化替代品。最近,随着许多复杂项目(例如 Deno、 Vue.js)选择 Type 而不是 Java,它的流行度大幅跃升:
Type Surges in GitHub Octoverse 2020 Report -- Visual Studio Magazine
https://visualstudiomagazine.com/articles/2020/12/03/octoverse-2020.aspx
苹果公司的 Swift 已经取代 Objective-C,成为 macOS 和 iOS 的首选编程语言。它在其它领域也有被采用。
在科技巨头的支持下,预计包括 Rust 在内的现代编程语言将在 2021 年获得更多吸引力和普及使用。
17客户端 Web 框架:React 将继续统治
大多数面向用户的企业应用程序是 Web 应用或移动应用。在 Web 开发中,基于 Java/Type 的客户端 Web 框架已经占据主导地位很多年了。趋势是使用 Java 框架进行 UI 开发,使用服务端框架进行后端开发,其中前后端是分离的服务。
Facebook 的 React 在客户端 Web 框架中处于领先地位。它是行业中引领潮流且应用最广泛的框架。如果你想了解更多关于基于 Java 的客户端框架,可以阅读我下面这篇文章:
Top 5 In-Demand Java Frameworks for Front-End Development in 2020
https://medium.com/java-in-plain-english/top-5-in-demand-java-frameworks-for-front-end-development-in-2020-a59c4340d082
如下图所示,React 是目前下载量最多的客户端 Java 框架:
图片来源:NPM trends
尽管如此,最流行的 Web 框架并不是 React,而是另一个基于 Java 的 Web 框架——Vue.js:
图片来源:作者
Vue.js 在中国也是头号框架,因为 Vue.js 的创造者(尤雨溪,Evan You)是一名华人前谷歌开发者。不幸的是,这种与中国的联系引起了大企业的安全担忧,Vue.js 在美国 / 欧洲的采用率比较低。
谷歌的 Angular 落后于 React 和 Vue.js,但仍然是一个稳定的框架。然而,最近最具革命性的 Web 框架是 Svelte。与其它框架不一样,Svelte 是一个非运行时框架,专注于编译步骤。
在 2021 年,所有主流的基于 Java 的框架都将彼此学习,吸收其它框架的特性。在 2021 年,它们将更加趋同。
18服务端 Web 框架:面向企业的 Spring 和 ASP.NET
服务器端框架是端到端框架,提供端到端 Web 开发,包括服务端渲染的视图层。但是正如之前所说,如今的趋势是只在后端使用它们。
基于 JVM 的 Spring 框架在企业开发领域是排名第一的服务端框架。它还提供开发小型和大型复杂应用所需的所有必需功能:控制反转、依赖注入、云原生开发、响应式、事件驱动应用开发、快速应用程序开发。在 2021 年,Spring 仍将保持企业的头号后端框架。在之前的一篇文章中,我将 Spring 作为排名第一的服务端 Web 框架。
Top 10 In-Demand Web Development Frameworks in 2021
https://towardsdatascience.com/top-10-in-demand-web-development-frameworks-in-2021-8a5b668be0d6
微软的 ASP.NET Core 是另一个引人注目的 Web 框架,与流行的 Java 框架(React、Vue.js、Angular)无缝协作。在 2021 年,ASP.NET Core 将成为企业服务端开发的主要选手。
许多初创公司和小型公司都希望有一个包括视图层的端到端框架,以便快速开发应用程序。基于 Python 的 Django、 PHP Laravel 和 Ruby on Rails 在 2021 年将成为他们的绝佳选项。
19App 开发:原生 App 将继续占据主导地位
智能手机现在是我们日常生活的一部分。智能手机用户已经达到 35 亿,明年将达到 38 亿:
图片来源:Statista
因此,移动应用对于终端用户越来越重要,尤其是对于年轻一代来说。
在移动应用开发领域,有 4 个主要趋势:原生应用开发、跨平台应用开发、混合应用开发和基于云的应用开发。
原生应用开发提供了最高的灵活性,拥有最好的性能和用户体验。但由于企业需要保留两个独立的团队,因此开发成本最高。
跨平台应用开发正变得越来越流行,因为 iOS 和 Android 应用开发可以使用相同的代码库。尽管开发成本低,但是不够灵活,性能也不如原生应用。
近年来,基于云的应用变得越来越流行,其数据和主要业务逻辑保存在云端。特定设备的瘦客户端被开发来连接云端并从中获取数据。虽然对于数据密集的应用程序是一个不错的选择,但对于普通应用开发来说,它还不是主流。
尽管跨平台应用开发正迎头赶上,原生应用开发仍然是企业普通应用开发的更好的选择。在 2021 年,一般企业将偏爱原生应用开发,而初创企业和小公司将偏爱跨平台应用开发。
20跨平台应用开发:React Native 将占据主导地位,但 Flutter 将迎头赶上
跨平台应用开发正变得越来越流行,因为它的开发成本比较低。市场上有许多跨平台应用开发平台,但 Flutter 和 React Native 是其中的领导者。
Facebook 的 React Native 是基于最流行的基于 Java 的 Web 开发框架——React。它的口号是“一次学习,随处编写。”Facebook 正积极开发 React Native,用 27 亿 Facebook 用户测试其功能。如果一家企业已经用了 React 来进行 Web 开发和 React Native 来进行 App 开发,它们可以在 Web 和移动开发中共享组件和代码库。另外,React Native 是基于 Java 的,而 Java 是最流行的编程语言之一。目前,React Native 比 Flutter 流行得多,如下所示:
图片来源:Stack Overflow Developer Survey, 2020
https://insights.stackoverflow.com/survey/2020
在 2021 年,React 将主导跨平台应用开发,因为 React 和 React Native 的性能会有一个重大更新。
谷歌的 Flutter 是一个相对比较新的框架,但近年来非常流行。它提供了一个功能强大的 UI 工具箱,用来从单一代码库构建漂亮的原生编译的移动、桌面和 Web 应用程序。然而,Flutter 还不像 React 那样是 Web 开发中的主流框架。Flutter 使用了一种现代编程语言——Dart,一种快速发展的效率非常高的编程语言。就性能而言,Flutter 比 React 有优势。它还提供了更好的开发者工效学,而且开发人员喜欢使用 Flutter 工作:
图片来源:Stack Overflow Developer Survey, 2020
https://insights.stackoverflow.com/survey/2020
与 Facebook 全力支持 React Native 不同,谷歌在 Web 和 App 开发方面有很多框架(例如,用于 Web 开发的 Angular),没有把所有精力都放在 Flutter 和 Dart 上。
综上所述,我预测 React Native 将在 2021 年继续领先 Flutter,因为 Facebook 正计划对 React 生态系统(React Native 的致命弱点)进行重大性能提升。
21API: REST 面向业务应用
微服务架构和无服务器近些年正变得越来越流行。微服务或纳米服务需要通信,通常,同步通信用得比事件驱动的异步通信多。即使传统的单体应用是通过异步通信进行通信的。
REST 是 2020 年最主要的 API 技术。REST 是一种基于 Web 技术的通信标准。它在行业中已经有相当一段时间了(20 年)。REST 和 SOAP 几乎同时出现,但当 SOAP 几乎被认为是遗留技术时,REST 将继续统治。无论是大型企业还是小型初创公司,都在使用 REST。在 2021 年,REST 仍将占据主导地位。
在 API 开发领域,也有一些优秀的候选者。最突出的是谷歌的 gRPC。与 REST 不同,gRPC 是一个类似 SOAP 的 RPC 协议。谷歌吸取了旧 RPC 协议的教训,创建了适合现代软件开发需求的 gRPC。gRPC 使用高性能的消息格式 Protocol Buffers(也是由谷歌开发),而不是 JSON。因此,与 REST 相比,gRPC 性能更高、可读性更差。在机器对机器的通信中,这是比较好的选择。
另一种越来越流行的 API 技术,尤其是对于 UI 开发者,是 Facebook 的 GraphQL。通常,UI 需要对后端进行大量 API 调用来获取所有它所需的数据。GraphQL 允许聚合 API 来减少 UI 和后端之间的通信。GraphQL 的一个主要缺点是,它不适合高安全性要求的开发。
这三者实际上都有各自的用例,可以相互补充,这种趋势将在 2021 年继续。
22结论
这里,我使用了当前的趋势、数据和事实对 2021 年最重要的软件开发趋势进行了 21 个预测。整个软件开发行业要大得多,我无法涵盖所有重要的领域。
另外,我还简要地讨论了一些话题,例如数据存储,它需要一篇单独的文章。另一方面,我详细写了一些话题。另一个有趣的事实是,科技四巨头:谷歌、Facebook、亚马逊和微软,是如何主导几乎所有的软件开发领域的。我希望这篇文章能让你 360 度地了解 2021 年的软件开发趋势。
作者介绍:
Md Kamaruzzaman 软件架构师 | 技术作家 | 全栈 | 云 | 大数据