您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    顺序员们为什么热衷于发明轮子?
    时间:2019-02-20 12:01 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

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

    “重复发明轮子”这句话本来用于比喻无谓的重复休息,但这个比喻似乎也不那么恰当,由于在人类的历史长河中,轮子曾经被重复发明了有数次。

    假设把“重复发明轮子”这个比喻放到计算机范围,也不见得太恰当,由于有很多普遍传达的软件本身就是被重复发明的“轮子”,不能说它们是无谓的重复休息。

    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,或许一个更高效的查找表……

    由于你是热爱发明的顺序员呀~

    【编辑引荐】

    撸码一时爽,独身两行泪!(附顺序员脱单秘籍)

    顺序员是吃青春饭的?一张图道尽顺序员的开展方向

    一个天赋顺序员的黑帮大佬人生

    不服就干,顺序员过年回家装逼指南_技术栈微信半月刊第35期

    顺序员专属灯谜,看完第一题就懵了…

    (责任编辑:admin)