50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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:123333

评论

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

龙蜥操作系统将捐赠开放原子开源基金会

OpenAnolis小助手

Linux centos 开源社区 开放原子开源基金会

巩固Java基础,备战来年跳槽——你的薪资自己说了算

Java 编程 程序员 面试 线程

阿里云性能测试服务PTS新面貌 - 压测协议、施压能力全新升级

阿里巴巴中间件

阿里云 中间件 性能测试 SaaS 压测

7张图揭晓RocketMQ存储设计的精髓

阿里巴巴中间件

阿里云 技术 RocketMQ 中间件 存储

在线2-36进制转文本工具

入门小站

工具

[ CloudWeGo 微服务实践 - 07 ] 阶段总结

baiyutang

golang 微服务 11月日更

Prometheus HTTP API 查询(二) 表达式查询

耳东@Erdong

Prometheus PromQL HTTP API 11月日更

模块9 毕设

SAKIN

使用 Spring Boot 构建可重用的模拟模块

码语者

Spring Boot Module

aardio 开发桌面应用,这几点必须要掌握!

星安果

Python aardio

Go语言,深入了解 RWMutex 实现原理

微客鸟窝

Go 语言 11月日更

死锁是如何工作的

卢卡多多

死锁 11月日更

如何解决 fs.renameSync() 跨区移动文件的问题

liuzhen007

11月日更

Android C++系列:通过 JNI 访问 Java 字段和方法调用

轻口味

android 11月日更

【死磕NIO】— 阻塞、非阻塞、同步、异步,傻傻分不清楚

chenssy

11月日更 死磕 Java 死磕 NIO

GitHub多次霸榜,两个月拿下10000+Star,不愧是阿里内部开源的SpringCloud Alibaba笔记

Sakura

Java 编程 架构 面试 计算机

《Kubernetes in action 读书笔记》:容器技术的发展

后台技术汇

Kubernetes 11月日更

基于 RocketMQ 构建阿里云事件驱动引擎EventBridge

阿里巴巴中间件

阿里云 RocketMQ 云原生 中间件 事件总线

远程代码执行漏洞分析

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

linux几个没用但是有趣的命令

入门小站

Linux

移动端自动化 AutoJS 快速入门指南

星安果

自动化 Autojs

程序员:我熟悉多线程!面试官:都不敢写精通,还敢要26K?

Java 编程 程序员 面试 多线程

设计模式【3.3】-- CGLIB动态代理源码解读

秦怀杂货店

Java 设计模式

树莓派

IT蜗壳-Tango

11月日更

构筑“数据连接器”,腾讯云大数据推出“开源开放”战略

腾讯云大数据

大数据

全面升级 —— Apache RocketMQ 5.0 SDK 的新面貌

阿里巴巴中间件

云计算 阿里云 RocketMQ 云原生 中间件

GitHub标星139K的:“嵌入式Linux系统开发教程”

Java Linux 编程 程序员

算法入门-快速排序

ES_her0

11月日更

浅谈DNS递归解析和迭代解析之间的区别

喀拉峻

网络安全

科技热点周刊|马斯克卖掉特斯拉 10% 股票;Facebook 停用面部识别系统;微软拥抱 Metaverse;雅虎退出中国

青云技术社区

云计算 facebook

08 K8S之资源对象介绍

穿过生命散发芬芳

k8s 11月日更

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