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

刚才看到一篇文章,讨论的是程序员该不该重复造轮子

  •  
  •   yrdr · 2015-01-04 12:54:35 +08:00 · 6466 次点击
    这是一个创建于 3399 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我自己比较喜欢写些杂七杂八的东西,就是大家常说的重复早轮子吧,所以去网上搜了下这方面的文章,还真的很多人在讨论这点。有种普遍的观点是尽量不要去重复造轮子,但什么都用现成的,也许可以美其名曰:我善于利用工具,但用着用着,也许很多年后你还是连轮子的原理都不知道吧,这还怎么进步。
    造轮子也是一个学习的过程,在这个过程中不断地进步,不断地了解轮子的原理。
    当然,我们技术不够,要做一件事,有轮子自然是好的,但现在的风气是很多人都轻视重复造轮子,过度依赖于工具。
    我是写php的,这方面尤其突出,各类框架几乎成为行业标准,所以很多新人几乎不管框架原理,觉得会了一种框架就会了一门语言,这实在太可怕了,这也难怪我们工资较低。
    也许凭我们的技术无法去重复造出一门新的语言或者是某些高大上的工具,但我们也不应该惧怕重复造轮子,去做一些我们的技术能做出的东西,我们要的不是重复造轮子的结果,而是在造轮子过程中的学习经验。
    第 1 条附言  ·  2015-01-04 14:29:55 +08:00
    补充下,其实我们都在用已经造好的轮子,而为了标准化,用轮子也是没错的。其实这个世界大部分都是屌丝程序员,真正高大上的太少了,所以用轮子也是必须的。
    只是感觉很悲哀,我们一直都在用美国的轮子,底层不说了,就连应用层我们都造不出好的轮子,这就实在太让人痛心了!不要重复造轮子这话是从国外传过来的,结果人家倒是百家争鸣,造轮子造得相当热火,我们反倒信了这话,秉承着拿来主义,到头来什么轮子都没有,岂不可悲!
    第 2 条附言  ·  2015-01-05 10:32:56 +08:00
    看来大部分人的观点跟我一样,是觉得可以重复造轮子。
    老早前就看到文章说,近代以来,真正的大师都是出自于民国时期,那也是一个百家争鸣的时代,一个自由时代。
    很快我也要发布自己的开源作品了,一款轻论坛程序。
    40 条回复    2015-01-06 11:14:20 +08:00
    bibizhang
        1
    bibizhang  
       2015-01-04 13:09:23 +08:00
    程序员我不知道,大学学的机械设计,很多东西都是要动手做一遍的。车钳铣刨磨就不说了,变速箱是要从头设计一个的,发动机是要拆过一遍的。
    imn1
        2
    imn1  
       2015-01-04 13:22:04 +08:00
    谁轻视谁都不对,因为双方的追求是不同的,也就是立场不同

    对于重复造轮子的人,可以看看老毛和李嘉诚善用人,M$和MAC善用系统,都是善用身边资源的典范
    对于总是借力他人成果的人,也该想想那些自称“自主产权”的为何总被人满大街取笑
    kchum
        4
    kchum  
       2015-01-04 13:25:47 +08:00 via iPhone
    @bibizhang 我来歪楼,大神,没有漫画新作了么,期待呀
    回 PO 主,我觉得像原理之类还是要懂的。看情况吧,有些小东西自己搞会舒心一点
    yellowV2ex
        5
    yellowV2ex  
       2015-01-04 13:31:46 +08:00
    我以前也是爱用各种框架,跟着框架的规则干,但到最后,发现越来越受限制,框架为了兼容不同的用途,嵌入了非常多的该次用不上的东西,为了结构,流程也是变复杂了

    所以现在不用框架了,用适合自己的设计模式,不过框架内的工具类还是可以拿来用用的,比如时间处理啊,文本处理之类的方法。

    但项目做多了,我自己做的一套也是加了不少可能项目用不到的东西,到某一个时间,又要再从头来一遍

    重构的时候,你会发现自己的进步和以前的水平确实有提升,这种感觉很爽。
    huobazi
        6
    huobazi  
       2015-01-04 14:19:44 +08:00
    前端程序员不造轮子会被鄙视的
    learnshare
        7
    learnshare  
       2015-01-04 14:23:45 +08:00
    造轮子练技术,写项目用轮子保平安。

    @huobazi 前端应该多造,Bootstrap 写一个出来,比 copy 代码来用能学到很多。技术深的可以写写浏览器。
    xuwenmang
        8
    xuwenmang  
       2015-01-04 14:24:03 +08:00   ❤️ 1
    @bibizhang 误会大了,练手的东西不叫造轮子。
    88250
        9
    88250  
       2015-01-04 14:28:24 +08:00
    造轮子的过程可以提升自己的技术,将自造的轮子用于生产有助于提升逼格。
    levn
        10
    levn  
       2015-01-04 14:37:25 +08:00
    不要教条。
    robertlyc
        11
    robertlyc  
       2015-01-04 14:54:16 +08:00
    先规范 后发散

    没有规范的创新毫无意义
    BGLL
        12
    BGLL  
       2015-01-04 15:03:31 +08:00
    剑客要会铸剑吗?
    我觉得得看方向吧……有的人专注顶层,有的人专注底层,有的人2端都略懂一点……
    只能讨论某个人适合什么。而不是大家应该怎么样。
    MOsky
        13
    MOsky  
       2015-01-04 15:26:03 +08:00
    有些轮子可以很重量级的哦,我只要用到轮子的 0.1% 的功能,却强行引入了其余不要用到的 99.9%。顺便你还必须理解这个轮子 20% 才行。

    哪天除了问题,解决也更麻烦。什么?轮子是开源的?重量级的开源轮子出问题你先看 20 几斤代码再说吧,其实就是义务给大型项目 debug 了。

    其实有时造个轮子是顺手的事。
    yakczh
        14
    yakczh  
       2015-01-04 15:45:27 +08:00
    造轮子是为了提升自己的逼格
    icedx
        15
    icedx  
       2015-01-04 15:49:03 +08:00 via Android
    当然该
    ipconfiger
        16
    ipconfiger  
       2015-01-04 16:02:16 +08:00   ❤️ 2
    国外搬来的原文是 :don't reinvent the wheel 正确的翻译是 不要重复发明轮子
    不知道是国内程序员的英文比较Y,还是有人别有用心的让后来人误入歧途,传来传去就成了
    “不要重复造轮子”
    语死早学啥都学不好!
    huigeer
        17
    huigeer  
       2015-01-04 16:04:24 +08:00
    造轮子自用提高战斗力, 爱折腾
    PrideChung
        18
    PrideChung  
       2015-01-04 16:10:26 +08:00
    最近也在经常思考这个问题,我的项目里面有很多第三方的库和框架,但后来自己统计了一下我经常用到的不过是其中的10%~20%的功能,剩下的部分只是白白增加了编译的时间。其实那些功能自己写出来也不过是100来200行代码,没什么大不了的。很多时候用第三方的库主要是看见人家上千个star,写了一大堆单元测试很唬人,自己没信心写出同等质量的代码。
    cuitao3000
        19
    cuitao3000  
       2015-01-04 16:18:45 +08:00
    不造轮子没成长,就这么简单~
    wdlth
        20
    wdlth  
       2015-01-04 16:30:22 +08:00
    不造轮子,缩水轮子可以么?
    TFNotGiven
        21
    TFNotGiven  
       2015-01-04 21:52:34 +08:00
    随便说下。
    首先,这个问题不仅仅发生在程序员身上。
    其次,你要不要造轮子取决于你个人规划,即你学习的颗粒度是多少,也就是你愿意付出多少时间精力,学习到哪种程度且其收益是最令你满意的。
    最终突出两个字"收益",每个人对这两个字的理解都不一样,也就造就了不同的人。
    其实这样也挺好,毕竟人无完人,没有人能在各个领域深度及广度上傲视群雄,同时在某方面超群的人也必然在某个领域上捉急-。-
    otmb
        22
    otmb  
       2015-01-04 22:22:50 +08:00
    @bibizhang 你搞机械,来这个论坛做神马,这里都是码农额,亲:)
    Dannytmp
        23
    Dannytmp  
       2015-01-04 23:19:00 +08:00
    自己生产的轮子是很宝贵的,不仅可以练手,当你满世界找你要的组件,花费大量时间后也没有满意的,还不如自己写一个容易的时候就会体会到了。
    前端最好都有自己的组件库,需要哪个就用哪个,即使没有符合的,也有能力很快造出来。总是依赖别人的框架,搞得自己的技术都褪化了,得不偿失。
    datou552211
        24
    datou552211  
       2015-01-04 23:29:36 +08:00 via iPhone
    读轮子,借鉴长处。觉得不适合自己的地方,封装一下
    Kilerd
        25
    Kilerd  
       2015-01-05 00:41:06 +08:00
    习惯读别人的轮子,然后自己造轮子,自己用。
    我现在的情况就是,去分析别人的轮子,然后就分开来一个一个写class,然后做项目的时候再从自己写过的class里面挑出要用的来,组装成项目所需的框架。
    Septembers
        26
    Septembers  
       2015-01-05 00:55:22 +08:00
    从设计出发面上做思想实验的话 轮子 根本就是不存在的
    williamx
        27
    williamx  
       2015-01-05 01:02:03 +08:00
    轮子这种事,有时间还是要尽量尝试自己去造的,因为大部分情况,造着造着就成其他了。
    bitwing
        28
    bitwing  
       2015-01-05 02:10:34 +08:00
    andrewpsy
        29
    andrewpsy  
       2015-01-05 06:44:11 +08:00 via iPhone
    @ipconfiger 说地非常到位
    stevegy
        30
    stevegy  
       2015-01-05 08:12:23 +08:00
    还是 @ipconfiger 说得有道理啊,“造”和“发明”不一样啊。如果有感觉现有的轮子各种不爽,可以先google一下,看有没有更好的,没有的话,就发明一个更好的啊。各种应用场景不一样的话,会有些不一样的地方需要改进,改进一下轮子,也是很不错的想法啊。
    说半天,我们不是练轮子功的。。。:D
    davidyin
        31
    davidyin  
       2015-01-05 08:24:15 +08:00
    可以重复造轮子的理由:
    1)别人的轮子太次了,自己可以做的更好。
    2)不熟悉轮子,造一个玩玩。
    3)轮子居然是圆的,造个方的,与众不同。
    timothyqiu
        32
    timothyqiu  
       2015-01-05 08:29:17 +08:00
    重复造轮子是很正常的,此时此刻汽车流水线上正在制造着大量的轮子。
    重复发明轮子才荒诞。
    xylophone21
        33
    xylophone21  
       2015-01-05 11:02:01 +08:00
    hello word才是最大的轮子
    bibizhang
        34
    bibizhang  
       2015-01-05 13:30:40 +08:00
    可以把语言本身理解为一种轮子吗?
    bibizhang
        35
    bibizhang  
       2015-01-05 13:30:56 +08:00
    @otmb 现在做设计
    Actrace
        36
    Actrace  
       2015-01-05 13:43:56 +08:00
    工资低,不是因为重复造轮子。
    irrienberith
        37
    irrienberith  
       2015-01-05 13:49:38 +08:00
    自己实现更适合自己用的轮子谈不上“重复”。
    kaneg
        38
    kaneg  
       2015-01-05 13:58:06 +08:00
    如果真有早轮子的能力,尽管造,只要你有能力做的比别人的好。像Jquery就是JS框架造轮子的最后胜出者,说不定什么时候PHP界最终有一个王者出现。
    jedihy
        39
    jedihy  
       2015-01-05 23:02:11 +08:00 via iPhone
    不造轮子写代码还有意思吗
    hxtheone
        40
    hxtheone  
       2015-01-06 11:14:20 +08:00
    有时候只是不想为了一点功能而引入大量无用的代码,干脆自己造一个
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5438 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 09:02 · PVG 17:02 · LAX 02:02 · JFK 05:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.