写点什么

2020 年软件工程现状:Python 或将成为第一大编程语言,中国开源涨势最猛

  • 2020-04-08
  • 本文字数:3230 字

    阅读完需:约 11 分钟

2020年软件工程现状:Python或将成为第一大编程语言,中国开源涨势最猛

现在,是时候谈一谈 2020 年及以后的软件工程状况了。


本文以 GitHub Octoverse 数据为基础,加上我作为一个拥有十年经验的软件工程师的经验和观察。软件工程在过去 20 年来实现了爆炸式的增长,而且这种势头似乎还在保持。据《财富》(Fortune)数据显示,2019 年全球前 15 家科技公司的总收入达到了创纪录的 1.67 万亿美元,比 2018 年增长了 2%。今天的软件公司比以往任何时候都要多。



此外,现有的非软件公司在产品中引入了更多的软件组件,从汽车到洗衣机,无所不包。未来是软件的天下,但并非所有的软件都是平等的。确定软件最有前途和发展最快的领域,可以帮助你实现事业和项目的腾飞。投资于一个发展中的领域,可以帮助你更容易找到一份工作,并获得更高的报酬,帮助你为项目筹到资金。那么,闲话少叙,直入正题。

编程的发展

2019 年,有 1000 万开发者新人进入了 GitHub。我猜想大部分新用户都是来自美国以外的地区,但即便如此,这仍然是一个巨大的数字。非常感谢 GitHub,能够在几乎没有任何问题的情况下,将规模扩大到这样的程度,我对 GitHub 表示敬意。



这些新开发人员为来自世界各地的 4400 多万个仓库做出了贡献。80% 的代码提交来自美国以外的国家和地区。同样,在美国以外的国家和地区,科技行业也在快速发展,GitHub 的数据也表明了这一点。也许在几十年内,硅谷将会有多个竞争者争夺世界软件工程中心的头把交椅。


还有一点要注意,GitHub 的数据并不能代表整个世界,但它能很好地反映出总的趋势,因为它是世界上最大的代码托管提供商。


去年,在全球财富 50 强企业中,近 70% 的企业为开源做出了贡献。70% 这一数字是巨大的,根据 GitHub 的数据,这一数字还在不断增长。不仅如此,去年 GitHub 上有 290 万个组织,这个数字听起来大得离谱,但随着越来越多的公司将软件组件引入到他们的流程中,即使再大的数字也将会变得司空见惯。


开源的发展

平均而言,GitHub 上的每个开源项目都有来自 41 个不同国家和地区的贡献者。这再次表明了美国以外的国家和地区的增长速度。



继美国之后,开源的使用在中国、印度和德国加快了速度。中国的开发人员分叉(Fork)和克隆的项目比去年增长了 48%。我想,没有人会对中国软件的增长感到意外。问题不在于中国是否会超越美国,而是在于何时超越美国。



开源使用情况


如果我们从大洲层面来看,亚洲已经领先于美国和欧洲。然而,看到南美洲和非洲远远落后,单单是欧洲的贡献还不到三分之一,这三大洲的人口加起来有 16 亿,出现这样的状况,是令人悲哀的,也有些令人惊讶。



提示:我专门写过一篇如何正确使用 GitHub 进行软件开发的文章。在这篇文章中,我提供了完整的 GitHub 工作流程,同时在我的 android-docker 开源项目上完成了一些实际工作。同时,我还提供了一些关于高效使用 GitHub 的实用评论和技巧。如果你想阅读的话,链接文末。

顶级库

在每一种编程语言的前 50 名开源包中,包括 JavaScript、Python、Ruby 等,都有大量的依赖项目。例如,尽管平均每个直接贡献者不到 40 个,但流行的 npm 包可能是数以百万计的其他仓库的依赖项。顶级依赖包有 Java、Python 和 JavaScript,这一点毫不奇怪。它们是目前排名前三的编程语言,我并不认为这一状况很快就会改变。


热门项目

随着开源运动风起云涌,人们对开源的贡献也越来越大。我强烈建议大家为开源项目做出贡献。这是一个进入开源社区并获得宝贵经验的绝佳机会。此外,你还可以在简历中列出你所创建和贡献的项目,这是一个很大的加分项。


你可以在表格中看到,去年贡献最多的项目也是最有用的项目之一。例如,Visual Studio Code 是最好的编程文本编辑器之一。TensorFlow、React Native 和 Kubernetes 也是如此。它们成为了无价的工具,人们喜欢它们并希望用自己的贡献来改进它们也就不足为奇了。


顶级编程语言

现在,是时候分析一下编程语言了。不难看出,作为 Web 的主要支撑语言,JavaScript 仍然排名第一,这并不令人震惊。我预计 Python 会在某个时候超越 JavaScript,但具体什么时候,我们还得拭目以待。事实上,在 GitHub 之外,Python 可能已经是第一大编程语言了。和以往一样,Java 与 PHP、C++ 一起并驾齐驱。



让我感到惊讶的是,TypeScript 的迅猛崛起。我曾预言,一旦 TypeScript 所有好的特性最终都出现在 JavaScript 本身中,它就会像 CoffeeScript 和其他许多东西一样被丢弃。相反,只有少数几个 TypeScript 特性最终出现在 JavaScript 中,包括私有字段 / 静态字段、可选链接和 null 合并。TypeScript 保留了它的独特特性,并继续在市场上大行其道。然而,我仍然认为,使用简单、现代的 JavaScript 会让 TypeScript 以简单和干净的方式脱颖而出。TypeScript 增加了大量的复杂性,包括工具和依赖项(即第三方类型定义包),我认为这并不值得。另一方面,我不是预言家,所以我们只能拭目以待,看看它是否与 CoffeeScript 有同样的命运。

数据科学与机器学习

2019 年是数据科学和机器学习的一年。我完全期望,在几乎整个十年中,它将会以同样的轨迹持续下去。分析和理解海量数据具有很大的价值。尤其是与机器学习相结合,这两者所产生的的价值可能会超过计算机科学的其他所有分支。我想说的是,唯一能让数据科学和机器学习退居幕后的是量子计算的突破。否则的话,在计算机科学这个最热门的分支领域投入一些时间是个好主意。就像我常说的那样,如果你投资一项正在发展的技术,你就能随之成长。



机器学习在生活的方方面面都有应用。利用机器学习预测购物行为并提供定制的推荐就是一个很好的例子。像 Siri 和 Alexa 这样的虚拟个人助理,像 Google 和 Microsoft Teanslate 这样的自动化翻译服务,垃圾邮件过滤器、自动化客户支持等等,都越来越多的以机器学习为基础。


云计算、DevOps 与安全软件

系统的复杂性和规模越来越大。此外,像机器学习这样的特定任务需要非常规的服务器硬件,如 TPU,即张量处理单元(Tensor processing units),这是一种定制设计的硬件,用于加速机器学习任务。这就导致了企业内部需要进行大量的工作来容纳服务器并手动维护它们。解决这个问题的最明智的做法是使用 DevOps 工具实现服务器部署和维护的自动化。将这些服务器迁移至云计算供应商那里也是合理的,这样你就不必再看别的裸机服务器了。


随着对云托管和 DevOps 需求的增加,这些技能在市场上越来越受到青睐。如果你有从事硬件和网络工作的愿望,那么尝试一下云服务提供商和 DevOps 工具,是一项不错的投资。大多数云服务提供商都提供了慷慨的免费套餐,因此,你可以在 Google Cloud、Amazon Web Services、Azure 或其他任何较小的云服务供应商创建一个免费的账户,并立即开始试验和学习。



显然,将你所有数据都搬到云端上,会带来重大的安全隐患。这增加了任何从事 DevOps 或云的人对安全意识的需求。此外,这也增加了对专用软件和网络安全工程师的需求。投入时间去了解云计算和 DevOps 决策的安全影响至关重要。如果你打算面试 DevOps 或任何基础设施的职位,你应该会非常强调安全性。


总结

软件的发展如盛壮之时的骐骥,一日而驰千里。它正在融合到其他所有的行业领域。既然软件是一个不断发展的领域,那么学习编程并提高自己的软件工程技能,在未来会有巨大的回报。此外,找出软件发展最快的领域,并将时间投入其中,可以让你获得更好的发展。不断学习,努力寻找一切可以利用的机会,或者是可以在不断发展的软件领域中,找到可以为小众服务的产品,当这个小众成为主流时,你最终可以将一个成功的产品掌握在你的手中,这可能成为你未来的成功。如果失败了,那将是成为产品专家之路的一次巨大的经历。


本文引用的资源:


GitHub Octoverse


Wikipedia:最大的信息技术公司列表


Stack Overflow 年度开发人员调查


Hired:软件工程师状况


本文提到的文章:


《如何正确使用 GitHub 进行软件开发:我的完整开发工作流程》


(How to Correctly Use GitHub for Software Development - My Full Dev Workflow)


原文链接:


https://quanticdev.com/articles/software-engineering-in-2020/


2020-04-08 17:122989

评论

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

@DateTimeFormat 注解 和 @JsonFormat 注解

乌龟哥哥

4月月更

java培训Mybatis动态Sql处理解析

@零度

sql mybatis JAVA开发

Linux驱动开发-内核共享工作队列

DS小龙哥

4月月更

从玄学走向科学:在字节跳动广告投放这么干

字节跳动数据平台

大数据 字节跳动 广告系统 ab测试

Docker 实战教程之从入门到提高 (六)

汪子熙

Docker 容器 docker image 容器镜像 4月月更

重学架构之消息队列存储消息数据的 MySQL 表格

陈华英

架构实战营 「架构实战营」

设计消息队列存储消息数据的 MySQL 表格

浪飞

亚马逊云科技 2022 年 3 月新服务新功能强势来袭

亚马逊云科技 (Amazon Web Services)

服务 亚马逊

一个系统工程师的14条建议

一席

高可用 稳定性 SRE 混沌工程 故障排查

模块8作业

Leo

架构实战营

谈谈客户体验管理有效实施

龙国富

客户体验 CEM CXM 客户体验管理

EasyRecovery2022全功能数据恢复介绍

茶色酒

EasyRecovery15

云原生训练营 -Week08-2

jjn0703

spring-cloud-kubernetes背后的三个关键知识点

程序员欣宸

java 4月月更

「架构实战营」模块八 消息队列存储设计

hxb

「架构实战营」

建信金科在中国建设银行物联网平台项目的实践

EMQ映云科技

物联网 IoT 金融 银行 emq

攻克编译器技术

刘旭东

编程语言 编译器原理 4月月更

设计消息队列存储消息数据的MySQL 表格

Geek_8d5fe5

「架构实战营」

5 月亚马逊云科技培训与认证课程,精彩不容错过!

亚马逊云科技 (Amazon Web Services)

架构师 培训 认证

加速OpenHarmony生态繁荣,华为使能OpenHarmony发行版厂商

科技汇

设计消息队列存储消息数据的MySQL表格

张逃逃

软件工程学习之道

乌龟哥哥

4月月更

面试突击40:线程休眠的方法有几种?

王磊

Java java面试

企业如何才能发挥出知识管理真正的价值

小炮

知识管理 企业知识管理

模块八

blazar

「架构实战营」

设计消息队列存储消息数据的 MySQL 表格

风中奇缘

#架构实战营 「架构实战营」

CityClub游览随笔记录

耳东@Erdong

InfoQ InfoQ写作社区2周年 City Club

4月28日,一场为IT工程师们准备的盛宴

观测云

云原生 可观测性 IT 直播 产品发布会

入驻快讯|欢迎小红书技术团队正式入驻 InfoQ 写作社区!

InfoQ写作社区官方

入驻快讯

OpenHarmony 3.1 Beta样例:使用分布式菜单创建点餐神器

OpenHarmony开发者

OpenHarmony OpenHarmony应用开发 点餐

web前端培训React基础知识点的梳理

@零度

前端开发 React

2020年软件工程现状:Python或将成为第一大编程语言,中国开源涨势最猛_AI&大模型_QuanticDev_InfoQ精选文章