V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
acmore
V2EX  ›  程序员

重复造轮子对于用轮子的人没有意义,但是对于造轮子的人有意义。

  •  
  •   acmore · 2020-11-23 11:26:33 +08:00 · 4008 次点击
    这是一个创建于 1463 天前的主题,其中的信息可能已经有所发展或是发生改变。
    kop1989
        1
    kop1989  
       2020-11-23 11:42:05 +08:00
    也未见得。
    大家所共识的轮子,最优解谈不上,最起码可以说是相对的合理解。(比如圆形,橡胶外部,充气)
    你自己再造一个,要么就是为了赶上现有轮子的性能,对现有的轮子进行像素级克隆。
    要么造出来一个方形的、或者木头的轮子(总之提升有限)
    wliansheng
        2
    wliansheng  
       2020-11-23 11:43:42 +08:00   ❤️ 2
    造轮子这个过程会提高自己使用轮子的经验,以及看到别的形状的轮子也有自己的见解
    blindie
        3
    blindie  
       2020-11-23 11:47:08 +08:00 via Android
    比如刷绩效吗
    eddycoding
        4
    eddycoding  
       2020-11-23 11:49:15 +08:00 via iPhone
    深有体会,一直在用公司内部封装好的框架,很多细节都给写好了,这些轮子让我自己写是无法完成的
    coderluan
        5
    coderluan  
       2020-11-23 11:50:02 +08:00
    意义肯定有的, 但是效率就不一定了.
    sagaxu
        6
    sagaxu  
       2020-11-23 11:52:28 +08:00 via Android
    大民企有 KPI 项目,体制内有政绩工程,同一批人做了不同的职业而已
    wysnylc
        7
    wysnylc  
       2020-11-23 11:56:55 +08:00   ❤️ 1
    Anarchy
        8
    Anarchy  
       2020-11-23 12:01:10 +08:00 via Android   ❤️ 2
    学习本身就是重复造轮子,应该抛去这个来考虑
    AndyAO
        9
    AndyAO  
       2020-11-23 12:01:41 +08:00
    @wysnylc #6

    这个澄清很好,「重新造」没啥问题,只要有价值就行。

    @acmore

    我认为楼主想表达的意思可能是:

    > 就像此书中引用的一句无法考证其作者的话说的那样:任何计算机的问题都可以通过增加一个层来解决。
    >...
    > 随着各种问题的解决,计算机的层增加的越来越多,我们这一代新成长的程序员离底层也越来越遥远了,而且可能还会越来越远。因此常听人感叹,计算机技术有多么的日新月异,多有追赶不及的感伤。
    >...

    来自网友对<程序员的自我修养:链接、装载与库 >的书评.
    PiersSoCool
        10
    PiersSoCool  
       2020-11-23 12:05:40 +08:00
    造轮子这种事情大部分时候应该避免 但自己也应该造一造
    就比如 今天你开汽车
    明天说不定你就开自行车 轮子的原理都是一样的 需要能造出来
    后台要开电动滑板车 也要可以造
    msg7086
        11
    msg7086  
       2020-11-23 12:11:26 +08:00
    目的不一样。重新造轮子的目的是学习。重新发明轮子的目的是改进。

    不要重新发明轮子,也不是说重新发明了没用,而是说不要局限在之前已经发明过的那些部分。
    eason1874
        12
    eason1874  
       2020-11-23 12:16:42 +08:00
    为学习重复造轮子意义很大,而且是必要的。

    为使用重复造轮子没什么意义,除非现有轮子满足不了你的要求。
    raaaaaar
        13
    raaaaaar  
       2020-11-23 12:28:25 +08:00 via Android
    什么叫“造轮子”?

    拆开来看,就是“造”,和“轮子”。

    那么,轮子是什么?
    如同上面说的一样,计算机就是一个天然的分层架构,无论上深入到底层,门电路封装成一些组合电路和时序电路,把底层封装的操作系统,封装系统 API 的 shell 程序,还是 web 里的 web 框架,log 框架等等。可以复用的,我们就可以抽象为一层,封装一下。

    现在再看,轮子是什么?轮子就是一层的意思,无论你写编译器还是写 web 框架,都是轮子。

    那么,什么是造轮子?
    自己去思考,有哪些可以封装,需要抽象到一层中,API 要怎么设计,怎么优化等等。这就是造轮子的过程。

    那么造轮子这个过程,我们能学到些什么?
    上面说了,我们可以学习底层实现原理,要踩的坑等等,同时这个过程也是读源码,设计的过程,这很大程度的提升了我们对这门语言的使用,经常会学到很多技巧,这对我们使用这门语言是很有好处的。同时呢,如果我们造的轮子就是平常经常用的,那么我们日常的工作就不是建立在黑盒上,我们的日常编写代码将更透明,设计站的高度更高,debug 也能深入到底层去。

    那么造轮子有什么坏处?
    当然有坏处了,坏处就是很消耗时间,如果和业务没处理好平衡,这就凉凉了。

    那么为什么有人会说,不要重复造轮子?这究竟是什么意思?
    不说别人说什么就是什么,这句话我们看它的来源,其实英文并不是这个意思。表达为,不要在生产中,用自己造的轮子。这句话就很好理解了,除了那些不得不自己造的情况外,如果有现成的轮子,就不要造,因为你的能力大概概率没有别人强,别人的时间,兼容性,性能等等,大概率比你好,如果出了问题,你自己造的话,还加强了维护的工作量。当你真的造过轮子,你就应该对自己的实力有所了解,你的轮子真的是圆的?
    aneostart173
        14
    aneostart173  
       2020-11-23 12:32:20 +08:00
    学生时代多造轮子,工作了能不造就不造,除非你有充足的理由。
    glfpes
        15
    glfpes  
       2020-11-23 12:52:10 +08:00 via iPhone
    重复造轮子只能用你私人时间。工作时没有合适的理由会被 diss 。
    IGJacklove
        16
    IGJacklove  
       2020-11-23 13:28:09 +08:00 via Android
    @wysnylc 发明和造是两回事。
    IGJacklove
        17
    IGJacklove  
       2020-11-23 13:29:30 +08:00 via Android

    @wysnylc 我的,看一半就评论了。
    isnullstring
        18
    isnullstring  
       2020-11-23 16:55:39 +08:00
    通用的轮子不合适,只好自己造
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   996 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:18 · PVG 05:18 · LAX 13:18 · JFK 16:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.