加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

程序员们为什么热衷于发明轮子?

发布时间:2019-02-21 12:36:18 所属栏目:建站 来源:技术风向标
导读:一再发现轮子这句话本来用于比喻无谓的一再劳动,但这个比喻好像也不那么适当,由于在人类的汗青长河中,轮子已经被一再发现了无数次。 假如把一再发现轮子这个比喻放到计较机规模,也不见得太适当,由于有许多普及传播的软件自己就是被一再发现的轮子,不
副问题[/!--empirenews.page--]

 措施员们为什么热衷于发现轮子?

“一再发现轮子”这句话本来用于比喻无谓的一再劳动,但这个比喻好像也不那么适当,由于在人类的汗青长河中,轮子已经被一再发现了无数次。

假如把“一再发现轮子”这个比喻放到计较机规模,也不见得太适当,由于有许多普及传播的软件自己就是被一再发现的“轮子”,不能说它们是无谓的一再劳动。

  • Linux 是对 Unix 的从头发现;
  • MariaDB 是对 MySQL(MySQL 是对 PostgreSQL 和 Oracle 的从头发现,而 PostgreSQL 是对 Oracle 的从头发现)的从头发现;
  • 当代 C++ 是对老版 C++ 的从头发现,C++ 是对 C 说话(C 说话是对 B 说话的从头发现,而 B 说话是对 BCPL 的从头发现)的从头发现,Rust 是对 C++ 和 C 说话的从头发现;
  • Clojure 是对 LISP 的从头发现,LISP 是对 IPL 和 Lambda Calculus 的从头发现;
  • Haskell 是对 System FC 的从头发现,System FC 是对 System F 的从头发现,System F 是对 Labmda Calculus 的从头发现;
  • DOT 是对 OO 的从头发现;
  • Kotlin 是对 Java 的从头发现;
  • Vim 是对 Vi 的从头发现;
  • Wayland 是对 Xorg 的从头发现;
  • Ubuntu 是对 Debian 的从头发现……

我可以举无数个这样的例子。

许多优越的软件并不可是简朴地往已有代码库中添加新特征罢了,而是通过不绝迭代,缔造出比以往更好的对象。GitHub 上许多风行的代码库都稀有百个分支,而对付每一类软件器材,我们又有许多差异的选择。

人们常常说“不要一再发现轮子”,但他们忽略了这样的一个究竟:大部门优越的计较机软件现实上就是被一再发现的轮子,而并非是全新的对象。这些变革是循规蹈矩的,我们基于已有的观念慢慢迭代,逐步修改它们,让它们变得更好。这是个无限尽的进程,,乃至我们健忘了本身是从那边出发的,也不知道终点在那边。我们独一要支付的是时刻,大概这就是计较机编程的神奇之处。在这里,没有所谓的资源欠缺,也不管我们怎样猖獗,我们总能缔造出一些对象。

一再发现轮子不是罪,只是我们要知道在何时以及怎样一再发现轮子。

没有吻合的轮子?本身造!

在找不到可用的器材时,就本身开拓一个,而不是基于已有的库开拓一个不那么好用的“次品”。或者其他人也有同样的需求,那么就可以把你开拓的器材分享给他们。本身开拓也许必要更长时刻,但会更风趣,并且开拓出来的器材也许更好用。虽然,详细要怎么做,完全取决于你本身。你可以“勤快”得像某些 C 说话开拓者一样,连 list 和 vector 都要本身实现,也可以“懒惰”得像某些 JavaScript 开拓者一样,连最简朴的判定奇数的函数都要从网上下载(好比日下载量高出十万的“is_odd”包,地点是https://www.npmjs.com/package/is-odd)。

以 Julia 为例,Julia 是一门与 Python 很是像的编程说话,只是它更轻易陈设,不必要假造情形就可以运行,它运行更快,并且支持大局限的并发。Julia 就是一个被一再发现的轮子,由于从理论上说,它所能做的工作,Cython 也能做到,只要行使适当的 C/C++ 库,修改一点代码,再加上一点耐性就可以。但 Julia 与生俱来就提供了便利性,为开拓职员节减了大量时刻,还闪开拓变得更风趣。或者,它会是 21 世纪最让人瞩目标编程说话之一。

现有轮子裹足不前?造!

当好久没有人一再发现轮子,就可以思量从头发现一个。呈现这种环境,也许是由于此刻的轮子已经够好了,没须要做出大的改造,但更有也许是由于大大都人但愿有更好的轮子,只是他们没偶然刻去做。好比,有些题目固然暂且获得了办理,但并不美满,由于当前的技能或框架无法提供更好的办理方案。这就留有余地,守候更好的机缘呈现。数年之后,或者技能成长到可以更好地办理这些题目。

以图像辨认为例,图像辨认属于经典的分类器题目。人们在分类器题目上不绝全力改造,直到 2010 年,通过行使 Fisher Kernel 这类算法才让分类器获得了很是准确的功效。虽然,这些成就还不敷以用于检测癌症肿瘤或汽车自动驾驶,从准确度和实习时刻方面来看,它们的程度还只是处在鹦鹉和大象之间。直到有人从头发现了并不太风行的卷积神经收集,还行使了当代的 GPU 来实习那些早在 90 年月就开拓出来的图像辨认模子。2012 年呈现了闻名的 AlexNet&Co,而几年之后,图像辨认技能成长到令人惊诧的境地,在中型数据集上实习出来的分类器乃至可以打败人类。

轮子全部权遭到限定?造!

好比 Linux、GCC 和 Git,它们都是对已有版权软件体系的从头发现。在某些方面,它们比版权软件更好,并且它们是开源的。这意味着有更多的人在行使,有更多的人参加开拓,这让它们可以或许以惊人的速率成长演化。

纯真认为好玩?造!

对一个已经很美满的软件来一次从头发现,这样做也没什么错。你也许会失败,但你会从中学到许多。尽量别人已包办理了大部门题目,但你如故可以或许从办理同样的题目中得到风趣的体验。数百万人想证明勾股定理或从头发现新的 LISP,虽说他们最终不外是在一再发现相似的轮子,但他们所做的并没有什么错,只要他们可以或许从中得到爱好。而假如你从头发现的轮子哪怕只是比原先的好那么一点点,都算是在造福人类。

想培育造!

尽量松手去做吧,一再发现轮子不是罪。

假若有人说一再发现轮子是无勤奋,就把马斯克造火箭的故事甩他脸上。

或者,你也可以开拓出一个更直观、更优雅的 JavaScript 库,可能一个更快的 Python 编译器,可能一个更自制的计较单位,可能一个更好的 Spotify,可能一个更高效的查找表……

由于你是热爱缔造的措施员呀~

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读