重复造轮子对于用轮子的人没有意义,但是对于造轮子的人有意义。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
acmore
V2EX    程序员

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

  •  
  •   acmore 2020-11-23 11:26:33 +08:00 4456 次点击
    这是一个创建于 1787 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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     Solana     3190 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 00:34 PVG 08:34 LAX 17:34 JFK 20:34
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86