2.1 指南针篇

指南针团队使用网络爬虫与 GitHub 数据 API 获取开源代码库的数据如原代码、项目信息、项目的静态信息如项目名称、起始日期等、与动态信息如fork数、客户给与的星数等众多项目相关的信息储存在本地数据结构中。第一阶段是处理原始数据与结构化的单元,生成如排序、标签等总和数据,如此可以透过如排名、统计等信息的提供。

使用机器学习、自然语言处理、数据分析等技术,综合所有数据提供如分类、搜索、推荐、评比等应用服务。

另外运用图像数据库的关联技术,对于高维度智能的连接和查询、以交互方式的可视化的提供更复杂的关联呈现。

开源@中国

enter image description here

如同世界各地的开发人员和各种企业,中国也经历了对于开源的无感、抵制、怀疑、观望、尝试、接受、以至于认可到支持的过程。中国在开源社区的贡献与影响力,无论在数量与品质、深度与广度都逐年的扩大与攀升。

Google 以创新的形象深植在开发人员的心中,对开源的贡献例如在大数据(Hadoop、HDFS 等)、深度学习(如 TensorFlow)都是有目共睹。Microsoft 作为开源的后起之秀,投入的资源和近期的声势都开始受到认可。在 2018 年收购 GitHub 也为其投入与支持开源的决心更为凸显。RedHat 在开源社区的历史悠久,贡献和积累丰富,长期在排行榜中居重要地位。BAT 与华为无论在资源的投入比例和开源的推动力度在近年有明显增加,所以在 GitHub 排名有上升的趋势。

enter image description here

以 Python 的开发者数量为例,2017 年中国已位居第 3 名,已经微幅领先如英国、德国、法国等欧洲传统 IT 强国。

enter image description here

以 repo 数量和开发者数量的总和评比,2018 年美国仍然继续庞大的优势领先群雄。德国英国占据二三名。中国作为新起之秀成为亚洲第一,全球第四。

2017 回顾 Forbes: 7 Technology Trends to dominate 2017

  1. IoT and Smart Home Tech
  2. AR and VR
  3. Machine Learning
  4. Automation
  5. Humanized Big Data
  6. Physical-Digital Integrations
  7. Everything On-Demand

这是 Forbes 杂志在 2017 从比较商业的角度预测信息技术的趋势。说明了比较广泛的趋势,每个项目都是信息技术非常巨大的课题,包含物联网、AR、机器学习、从人的角度看到的大数据,云计算的扩充,实体和数字化的集成。

Gartner 对 2017 信息技术的趋势预判:

enter image description here

  • Trend No. 1: AI & Advanced Machine Learning
  • Trend No. 2: Intelligent Apps
  • Trend No. 3: Intelligent Things
  • Trend No. 4: Virtual & Augmented Reality
  • Trend No. 5: Digital Twin
  • Trend No. 6: Blockchain
  • Trend No. 7: Conversational Systems

Gatner 对于信息技术的预测比较深入,其中第一类是以智能为主的方向,包含人工智能特别在机器学习的范畴是值得关注。手机App和智能的结合,具有智能特性的物联网,也是令人深省的方向。

和 Forbes 同样预测 AR/VR 和实体和数字化的集成(Digital Twin)的趋势。区块链的议题开始被提出来成为关注的趋势。智能机器人(Bot)的应用以更加广泛的方式进入信息技术的领域。

2018 趋势

Gartner 对 2018 信息技术的趋势预判:

enter image description here

  • Trend No. 1: AI Foundation
  • Trend No. 2: Intelligent Apps and Analytics
  • Trend No. 3: Intelligent Things
  • Trend No. 4: Digital Twins
  • Trend No. 5: Cloud to the Edge
  • Trend No. 6: Conversational Platforms
  • Trend No. 7: Immersive Experience
  • Trend No. 8: Blockchain

Gartner 接续前一年的预测,把智能的范畴地位到以 AI 为基础的各种智能,不仅仅是机器学习的方向。还是继续关注手机 App 和智能的结合还有具有智能特性的物联网。

受到欧盟对数据存放的限制和用户对速度、费用的敏感以及物联网对带宽和计算的要求,云计算也演进到雾计算和边缘计算。

由 VR/AR 到更近一步的沉浸式体验。

区块链从 2017 年关注的趋势,到 2018 开始有比较深入的研究,并且投入实际的应用。

全球编程语言占比趋势排名

enter image description here

2017 年领先的语言基本的排名没有大的改变,但是比例却都缩小了,可能的原因是程序员在尝试新的语言和新的方向。这个尝试的结果在 2018 年反应出来的形式是由 2017 年排在第 4 位的 Python 升至第三呈现。其中的意义也反应出人工智能在 2018 更加获得程序员的认可与接受。传统的编程语言 C/C++ 已经在这样的趋势下退居第四,也象征传统的技术领域面临消退的现象。

GitHub 2017-2018:GitHub 2017-2018 statistics

enter image description here

GitHub 在 2008 正式运营到现今已经 10 年,大约在 2015 更加受到开发人员的青睐而快速的扩张。从 2017 到 2018 无论在人数和代码 repo 的数量,都有惊人的成长。因为这样的量级具有代表性,使得 GitHub 的各类数据成为开源的指标和参考。

2017 GitHub Keywords

enter image description here

根据 GitHub 关键字的显示,机器学习(Machine-learning)毫无悬念成为最大的关注热门词汇。游戏(Game)成为另一个热门词汇。

enter image description here

GitHub topic 是依据每个 repo 自主选择的标签(tag)归类在同一个主题下。这个排名方式是按照该主题所有 repo 的参与者授予的星数(star)总和以衡量受开发人员认可的程度。

  • JavaScript 作为脚本语言,经常和其他编程语言如 Java 和 Python 搭配,本身也可以在 web 开发里面简单功能实现有其贡献,加上相对比较容易上手的优势,获得开发者的喜爱占据第一。
  • React 与 Node.JS 作为 Web 开发框架排名二三。
  • Python 有语法简洁高效的优势,并且在数据分析的支持有丰富的积累,在人工智能浪潮的推哄下,有排名上升的趋势来到成为编程语言的第一来到总体排名第六。
  • 机器学习与深度学习作为热门的主题,经过不到 2 年的积累排名 12、13,而且没有消退的迹象,以后上升的机会非常大。
  • Java 在后台数据处理、复杂功能实现,各种支持框架的品质和选择上有一定的积累和优势,仍然是受到开发者的欢迎,但是也处于持平稳定的状态。

enter image description here

许多人应该对 freeCodeCamp 这个排名第一的 repo 和其他如 awesome、Your-Don’t-Know-JS 等排在前面的 repo 感到陌生和不解。这些是以推广和服务某一理念的 repo,可能因为鼓励其用户点赞加星数,所以拥有总多的星数而排在高位。

虽然和一般开发者的对星数的给与的采取谨慎的方式不同,但是 GitHub 也提出 GitHub 不仅是代码库,也是一个意见交换的平台(Hub)的论点。也许这样的机制也是提倡开源、自由、创新的一种认可吧。

有趣的是,bootstrap 作为 topic 并没有排在前面,但是单就 repo 的角度,却有比其他 repo 高的星数而成为第二。Google 的 Tensorflow 作为深度学习的框架,以 repo 受喜爱的程度高居第五,在上升的速度和喜爱的程度实在令人惊讶。

排名第九的 JavaScript 实际是 javascrip style guide 的一个以 javascript 为开发主题的文档集成。不是 javascript 本身的开源项目。

所以从这个实际的排名为例,也显现出 GitHub 用星数为排名依据的方式,有其不符合开发人员认知的地方。

开源的现况

由以上 GitHub 的排名或是分类的结果,可以看出由用户自己给星数或是选择自订 tag 来进行分类的方式,虽然让用户有比较高的自由选择和评判方式,但是可能会有失公平的地方。

我们来看一下开源项目的理想的情况:

enter image description here

对于规范的开发项目,项目说明、文档、架构、代码都是非常清楚和有条理,所以用户也会有多的 star 和 fork 数。用户可以根据这些说明文档等文字,综合 star/fork 数判断是不是这个是要找的项目/代码。

用户可以参考项目中提供的范例甚至是最佳实践方式,使用这个开源项目的内容。

甚至用户还可以对这个开源项目作出贡献,增加修改开源代码。 使用这样的开源,省时又省心!

但是真实的情形,不一定是如想象的乐观:

enter image description here

  • 但是开源里有更多的实验性质或是不完善的项目,因为没有受到关注,所以没有星数可以参考,使用者应该尝试使用还是选择其他星数高但是不一定符合自己需求的项目?
  • 具有同类 tag 的项目可能多达数百个,用户应该如何选择?
  • 许多的项目文档说明可能也不是非常齐全,用户如何选择?
  • 开源项目可能对其他框架有依存的关系,如何知道去评量是否符合已有的框架或是依赖库,而不用加入更多依存的框架和依赖库而增加自己项目的复杂度和维护的风险?
  • 项目是否有可能太常更新或是没有更新?

这些都是让评估使用开源项目会遇到的问题…

小结

信息技术在 2017 年有人工智能的议题开始发酵,许多的尝试、学习、研究造成新的关注和投入,由许多迹象显示 2017 年是一个变动(dynamic)时期。进入 2018,人工智能累积研究人员、开发人员、民间企业以至于国家级别的关注,在全球掀起人力与资源投入的风潮。这个现象可以从编程语言的排名在 2018 年 Python 升至第三、还有在 GitHub 包括 Tensorflow 等属于机器学习 / 深度学习的类别排名快速爬升的现象得到验证。

以 JavaScript/Node.js 等框架为代表的手机应用和互联网相关的开源,仍然是最大宗和热门的项目,基本上是以持平的状态维持在原有轨迹继续运作。不管从活跃度、贡献度、参与度和涵盖度都是领先的情形。由 Java 代表的传统开源项目有一定的积累,在以应用和基础框架项目的广度深度仍旧相当厚实,虽然成项目和贡献者长已经有饱和的现象。

先前新兴的热门技术如物联网、容器技术和区块链接续前面的动能仍然有创新的议题和项目出现,讨论和参与的热度还是比较高。相较于以往的热门议题如云计算和大数据有了相对成长缓慢的趋势,但是在于贡献者的参与比较稳定。

results matching ""

    No results matching ""