周末时间,就不聊具体的技术知识了,和大家分享一篇我最近看到的科技趣闻吧。

几天前,由微软研究院、加利福尼亚大学等组织组成的一个研究团队对全球最大的代码托管平台 GitHub 做了一项调查分析,还蛮有意思的。

经过对 450 万托管在 GitHub 平台的非 Forked 开源项目、将近 48200 万不同代码文件的分析,研究团队发现只有 8500 万的文件是唯一的。这些唯一的文件比例只占总数 17.63% 左右。

这次研究只分析了那些使用 C++、Java、JavaScript 和 Python 这四种语言编写的工程。其中,JavaScript 工程拥有 94% 的具有根据相同文件 Hash 值的超高比例占据榜首。

C++ 第二,重复文件比例为 73%,Python 以 73% 的代码重复率位居第三,Java 最少,仅占 40% 的比例。

为验证这一结论,研究人员同样也分析所有重复文件中的内容匹配度,结果也是如此。

为什么 JavaScript 项目重复性代码占有率这么高,倒也不难理解。原因在于 NPM 的使用,这个拥有超过 35 万数量的 librares、当前世界上最大最流行的包管理器,深得 JS 开发人员的喜爱。

前面都是生硬的数据分析,来看看一个有意思的地方。

GitHub 作为一个使用 Git 版本控制工具建立的代码托管平台,初衷在于鼓励大家使用 Fork 工作流保存项目。然而根据前面的数据,这些大量重复代码并不是通过 Fork 操作产生的,而是由于我们程序员惯用的复制和粘贴文件、甚至整个项目造成的。

我们都知道,在 GitHub 网站,Fork 操作的好处是,协助者可以通过 Fork 某个工程来帮助原作者一起改进和完善开源项目。而搜索到 Forked 项目的吃瓜群众们也能追本溯源,找到项目最初的版本,得到更多有用的信息,正确地使用开源库到自己的项目当中。

如果,没有了 Fork 工作流,大家都是通过 Clone,然后使用这个已经在 GitHub 网站存在的项目重新 Create 一个新的 Project 的话,很容出现这样一种场景:当你打开 GitHub 网站并输入关键字搜索你想要的开源库,然后得到不同项目地址的结果列表,逐一打开之后,发现相差无几,只是换了个名字而已。

近期原创

分享 Android 开发中三个与屏幕有关的小众知识@所有人,我这里可以直接进入这款小程序啦

超 82% 的 GitHub 代码是重复的,还不是 Forked 而来。相关推荐

  1. 降维算法总结(超全!附代码)

    降维算法总结(超全!附代码) 一.为什么要进行数据降维? 二.数据降维原理 三.主成分分析(PCA)降维算 PCA代码实现 四.其他降维算法及代码地址 效果总览及代码地址 KPCA(kernel PC ...

  2. 贝叶斯优化原理及应用[附XGBoost、LightGBM超参数调优代码][scikit-optimize]

    近年来机器学习和深度学习算法被越来越广泛的应用于解决对未知数据的预测问题.由于超参数的选择对模型最终的效果可能有极大的影响,为了使模型达到更好的效果,通常会面临超参数调优问题.但如何选择合适的超参数并 ...

  3. yolov3网络结构图_目标检测——YOLO V3简介及代码注释(附github代码——已跑通)...

    GitHub: liuyuemaicha/PyTorch-YOLOv3​github.com 注:该代码fork自eriklindernoren/PyTorch-YOLOv3,该代码相比master分 ...

  4. gitkraen_超详细!Github团队协作教程(Gitkraken版)

    超详细!Github团队协作教程(Gitkraken版) 一.前期工作 1. 在 Github 上创建 organization step1. 登录Github网站,点击右上角头像,选择 " ...

  5. 上传github代码

    上传github代码 github 自己理解的使用方法 摸索了半天时间了,连查再找 百度 GOOGLE的 真是费了不少劲呀,不过 网上的这个教程 那个教程 看的真是一头雾水呀,很多都是贴过来贴过去 , ...

  6. 使用IntelliJ IDEA同步Github代码

    IntelliJ IDEA集成了对GitHub的支持,使上传代码到GitHub和从GitHub下载代码更加方便快捷.   上传代码到 Github 1. 首先在IntelliJ中配置Git 点击 Fi ...

  7. python cnn模型_CNN系列模型发展简述(附github代码——已全部跑通)

    目录: 1 LeNet 2 AlexNet 3 VGG 4 GoogLeNet 5 ResNet 6 DenseNet 7 Non-Local Networks 8 Deformable Convol ...

  8. 用LSTM做文本情感分类(以英文为例)附github代码

    一 获得规整的数据集 1 原始数据预处理: 去除标点符号 .去停用词.大小写转换等 获得处理后的m条评价记录,reviews=["is good", "very happ ...

  9. GitHub代码搜索服务发展历史

    最近在做搜索相关的事情,也看到Github代码搜索的发展历程,不曾想其第一代搜索引擎上线居然是2008年(那一年刚上初一),或许是有时间的积淀与技术的进步才使得今天的我们在github上搜索代码可以如 ...

  10. 超好用的代码统计工具——cloc

    超好用的代码统计工具--cloc 因为申请软件著作权的时候需要进行代码统计,所以找了一圈代码统计工具.先找到了SourceCount,似乎不再更新了用不了.然后找到了cloc,操作有点繁琐,以下总结一 ...

最新文章

  1. [转]Git远程操作详解
  2. git的author和commiter的修改
  3. 使用xib封装一个view的步骤
  4. r2游戏服务器网站,云服务器win2008r2玩游戏
  5. 过程化技术:打造「开放世界」的秘密
  6. Java网络编程从入门到精通(7):用getHostAddress方法获得IP地址
  7. Qt 独立运行时伴随CMD命令窗口
  8. GBDT是如何成为推荐系统顶级工具人的?
  9. 用C语言设置程序开机自启动
  10. 数据结构:分块-区间加法、区间乘法和单点查询
  11. 详解 EnumWindows 与 EnumWindowsProc - 回复 SplendourChiang 的问题
  12. c语言message函数应用,调用input_message的参数太少在主函数中 是神马意思 大神们帮帮我...
  13. 学python lesson3
  14. Navicat 安装过程问题总结
  15. 三维空间内点到直线的距离计算公式
  16. Windows驱动开发——WDM驱动
  17. Introduction to Graph Neural Network(图神经网络概论)翻译:目录总览
  18. vue,下载导出文件,开新窗口导出
  19. 做生意要顺势而为,但不是盲目跟风
  20. 响应式图像--图片自适应大小

热门文章

  1. 悟道-看山是山,看水是水
  2. 女人50万年的进化(暴经典)
  3. beautiful report 的简单使用
  4. Stacked Hourglass笔记源码(一)网络结构
  5. 2017-2018年终总结书
  6. 知名互联网公司校招 Java 开发岗面试知识点解析
  7. 【小编教你有效的保护视力】
  8. android和手环教程,智能手环怎么连接手机_智能手环连接手机教程
  9. psv变革怎么安装游戏_创造变革游戏
  10. Guava-Splitter工具类