作为全球知名的开发者社区 GitHub,包括了 Google、Facebook、微软等众多技术巨头都会在这里安营扎寨,而每年 GitHub 都会发布一份 Octoverse 报告,该报告总结了 GitHub 和开源社区的一些趋势和内部消息,以及来自 GitHub 数据科学团队的更多资料。
在 GitHub 上,每项技术的核心都是编程语言。今年的 Octoverse 报告(https://octoverse.github.com/projects)中,我们对 GitHub 上的编程语言的出镜率和趋势做了一个简单的分析。本文将深入分析最热门语言流行的原因和应用。
衡量编程语言的流行度有很多种途径。在这份报告中我们采用了公开和私有代码仓库中的主要语言的独立贡献者的数量。另外,我们还采用了主要语言的代码仓库的创建数量。
2008~2018 年编程语言排行榜,根据代码仓库创建数量排名
如今,使用 Java 创建的代码仓库超过了任何其他语言。过去十年内 JavaScript 创建的代码仓库数量稳定上升,从上图可以看出从 2011 年之后就有了稳定的上升趋势。在这个时间点,GitHub 的总代码仓库数量将近 100 万,而新的 JavaScript 服务器(如 2009 年发布的 Node.js)使得开发者可以在客户端和服务器开发中使用同一种语言。
编程语言排行榜,根据 2018 年 9 月 30 日时的贡献者数量排名
JavaScript 也是公开和私有代码仓库中拥有贡献者最多的语言。在世界上任何地方、任何大小组织中都是这样。但是,我们也看到了 GitHub 上新兴语言的成长。TypeScript 去年在所有区域的公开、私有和开源代码仓库中进入了前十名。而像 DefinitelyTyped(https://github.com/DefinitelyTyped/DefinitelyTyped)之类的项目能帮助人们在 TypeScript 中使用普通的 JavaScript 库,促进了 TypeScript 的接受程度。
我们也注意到一些语言的流行度在下降。Ruby 在过去几年的流行程度一直在下降。尽管 Ruby 的贡献者人数依然在上升,但 JavaScript、Python 等其他语言增长得更快。新的项目很少用 Ruby 写,特别是个人或小型组织的项目,这些项目更倾向于使用 JavaScript、Java 或 Python。
按照地理位置划分的流行程度,根据 2018 年 9 月 30 日时的贡献者数量排名
在过去 12 个月中,我们并没有看到不同区域中的语言使用情况有多少不同。但是,TypeScript 在南美和非洲的排名要高于在北美和欧洲的排名。原因可能是非洲和南美的开发者社区相对较新。去年非洲和南美的代码仓库平均要比北美和欧洲的代码仓库更年轻。这也许意味着开发者们更倾向于较新的开发技术。
增长最快的语言排行榜,根据 2018 年 9 月 30 日时的贡献者数量排名
许多大公司的项目都在使用 PowerShell,使得它排名上升。类似地,Go 也因为大型组织而进入了排名,而且在各种类型的代码仓库中都有增长,今年它在开源代码仓库中排名第九。我们也看到,趋势在朝着静态类型的方向发展,以增强类型安全性和互操作性。其中 Kotlin、TypeScript 和 Rust 增长最快。
2018 年为什么是这些编程语言流行?
那么,2018 年编程语言流行的原因是什么?下面是我们的观点。
类型安全
除了 Python 之外,我们看到了静态类型的崛起,很可能是因为它能为个人开发者和大型应用的开发团队带来安全性和效率。TypeScript 的可选静态类型增加了安全性,而 Kotlin 能提供巨大的交互性,同时还允许创建可信的类型安全的程序。
互操作性
TypeScript 在榜单中上升的部分原因是它能与 JavaScript 共存。Rust 和 Kotlin 也在上升榜中,两者分别吸引了 C 和 Java 的使用者。Python 的灵活性和互操作性也十分出色,比如开发者可以直接从 Swift 中调用 Python API(https://github.com/tensorflow/swift/blob/master/docs/DesignOverview.md#python-interoperability)。
互操作性不仅意味着语言可以建立在已有的社区上,还意味着语言可以与不同的社区融合并超越。比如,Kotlin 去年被认为是 Android 平台上的首选。
开源
当然,这些语言都是开源项目,且都在 GitHub 上维护。社区负责为 Kotlin 等新语言进行改进、回答问题并提供资源,帮助开发者选择这些语言,并在 2018 年以后继续使用这些语言。
如果你还想了解更多有关编程语言等技术趋势,请参考 2018 GitHub Octoverse 报告系列中的关于各区域的发展状况:
https://blog.github.com/2018-11-08-regional-spotlight-nigeria/
以及代码仓库的其他文章:
https://blog.github.com/2018-11-08-100M-repos/
原文:https://blog.github.com/2018-11-15-state-of-the-octoverse-top-programming-languages/
作者:telliott27
译者:弯月,责编:屠敏