感叹一下,写代码真的很爽,有同感的没,我很享受make的乐趣 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
refresh
V2EX    程序员

感叹一下,写代码真的很爽,有同感的没,我很享受make的乐趣

  •  
  •   refresh 2013-08-07 11:47:50 +08:00 6512 次点击
    这是一个创建于 4449 天前的主题,其中的信息可能已经有所发展或是发生改变。
    前提是按自己的意愿写代码,我不喜欢完全按照别人的旨意写代码。当然不是说不管需求,我不喜欢太死的需求,比如说外包公司,你完全没有发挥的空间。
    38 条回复    1970-01-01 08:00:00 +08:00
    jianghu52
        1
    jianghu52  
       2013-08-07 11:51:48 +08:00
    稍微泼点冷水,你现在的写的代码超过90%都是已经重复过的轮子
    laskuma
        2
    laskuma  
       2013-08-07 11:58:11 +08:00   1
    @jianghu52 为什么会有这样的冷水呢?我并不觉得造轮子是一件浪费时间的事情。如果只会调用,永远把那些“轮子”当成黑盒,你就永远也理解不了轮子的巧妙。也没有能力自己创新,在新的方面造出新的“轮子”
    sethverlo
        3
    sethverlo  
       2013-08-07 12:03:47 +08:00
    @jianghu52 就像 Livid 说的「我觉得,有很多开源软件满足的不是用户,而是作者」,在这种情况下自己造个轮子其实也没什么不好的……而且有的轮子的学习成本(主要指代码规范等方面)要远远高于重新再造个轮子的成本……而且如果想深入学习某个技术的话(比如代理)重复造轮子也是必要的吧……
    bengol
        4
    bengol  
       2013-08-07 12:04:31 +08:00
    羡慕啊,天天调试的飘过
    rteta
        5
    rteta  
       2013-08-07 12:44:38 +08:00
    的确,部分开源项目是就是个渣,只是爽了作者的满足心理,对用户毫无价值。
    zhujinliang
        6
    zhujinliang  
       2013-08-07 12:50:34 +08:00   6
    借话题说说自己的事:
    顺便 @jianghu52 讨论下

    我还是菜鸟,我承认,我还在不断学习探索的路上。

    前些日子,心血来潮去面试一个工作。电话面试,对方要求会xxx框架、熟悉xxx环境。我没接触过那些框架,或仅有所耳闻。

    那些框架无非是些加载器,或者MVC之类的。基本原理我懂,我在自己的项目中用自己的觉得优雅方式,造了一个自己满意的轮子来实现了诸如此类的功能,甚至说,让我实现一个这样的框架我都可以做到。
    有时也不乏,“原来这就是xxx框架啊,我以前都是这样实现这个功能的”这类的感慨。

    结果是,虽然双方表示互相理解,但面试不成功。
    可能的原因:对方急需人手,无暇培训(大家做项目肯定需要用一样的框架)

    沟通中也提到过重复造轮子的问题。似乎对方认为重复造轮子是不对的,不符合程序员思想的。似乎“重复造轮子是错误的,别问我为什么是错的,社区里大家都这么说,书上也是这样写的”。

    但是我在满是自己的轮子的世界里玩的很happy。自己造的轮子,别人看起来可能跟常见的轮子没啥区别,或者觉得更难用,但对于自己来说:
    ◇自己的轮子自己用起来最舒服
    ◇使用中如果有不满意的地方可以随时改掉,改多了觉得恶心了,大不了再从头造一个
    ◇自己扩展、维护起来很轻松,不必啃别人的代码,研究别的思想
    ◇自己的轮子们能从头至尾保持一个统一的思想

    对于我来说,如果原理能够看透,学习如何用别人的轮子还不如自己造一个轮子。
    ◇花费的时间上,如果不是很复杂的功能,自己造轮子比学别人的轮子更省时间,而且记忆负担小。
    ◇获得的乐趣上,自己造一个轮子比学习别人的更有乐趣和动力。

    似乎是有的人乐于探索,发现一个好框架兴奋的不得了,“哇,居然还能这样用”,“比那个xxx好多了”,类似这样。
    应该也有不少人乐于创造,看到一个框架,表示“不就是xxx原理的么,我能写个更好的”。
    乐于探索的看不起乐于创造的,“重复造轮子,你看看人家的框架,学学人家先进的思想”,乐于创造的也看不起探索的,“不就是xxx原理的么,我能写个更好的”。
    乐于探索的似乎聊得开,各社区,群组,谈x框架,y库,z平台滔滔不绝。搞创造的自个儿在一边对着屏幕不停地抠手指琢磨如何来的优雅,偶尔手贱发表一下,有人就拿x框架,y库,z平台来进行对比。
    cxe2v
        7
    cxe2v  
       2013-08-07 13:26:36 +08:00
    @zhujinliang 说的太棒了
    refresh
        8
    refresh  
    OP
       2013-08-07 13:35:08 +08:00
    @jianghu52 呵呵,不用泼冷水,话说我写代码已经很多年了。以前也造过很多轮子,各种轮子,但我觉得造轮子是每个程序员的必经之路,写多了才会知道自己的不足。Copy不是坏事,就怕没有思考的Copy。我们都是普通人,我们不是大师,所以我们要多磨练。但不能闭门造车,多研究别人的代码和方法论是有必要的。


    @zhujinliang 年轻人造点轮子没什么不好,只有深入了解了,才会得心应手,才会happy
    cxshun
        9
    cxshun  
       2013-08-07 13:42:18 +08:00   1
    @zhujinliang 有同感。重复造轮子没什么不好的,反而能让自己对某部分的知识或者思想有更深入的理解。
    其实探索和创造并不矛盾,很多时候我们都是先探索,然后到一定阶段,发现某个框架或者工具不符合自己的要求,或者说改起来太费劲,我们就会学着去创造。创造的过程肯定会有一些思想迸发的东西,慢慢地把这个创造的东西做得更好。
    其实进行对比这是人类的天性,国外稍微好点,不会说啥啥框架做了,你这个有什么优点,国内就会有这样的说法,别人都做了,你做这个有什么用,好像就是说别人做了,再做另外一个就是浪费人生一样。
    很多时候,我们用一个东西,归根结底要深入到它的思想,这样才不会说他换了一个API就杯具了。就像python,python3和python2换了很多东西,但真正深入的人却没感觉有多少困难。探索->创造,感觉这是一个必然的过程,也是一个想要深入必须经历的阶段。
    ulmate01
        10
    ulmate01  
       2013-08-07 13:42:46 +08:00
    造轮子什么意思呢?谷歌得的不太全面,大概理解了,但是求指教。
    alexrezit
        11
    alexrezit  
       2013-08-07 13:51:20 +08:00
    楼主你想说的是 create 吧...
    Paola
        12
    Paola  
       2013-08-07 13:58:29 +08:00
    @zhujinliang 都用自己的框架,如何协同工作呢?
    edgar
        13
    /div> edgar  
       2013-08-07 15:25:03 +08:00
    SR1
        14
    SR1  
       2013-08-07 15:32:16 +08:00
    @zhujinliang 说得好,要有一颗乐于接受新事物的心,也要有一双热爱创造的手。
    jesonyang
        15
    jesonyang  
       2013-08-07 15:39:29 +08:00
    make 出现error 时,就爽不起来了!
    leavic
        16
    leavic  
       2013-08-07 15:39:38 +08:00
    调代码的时候爽吗?
    zhujinliang
        17
    zhujinliang  
       2013-08-07 15:45:26 +08:00
    @Paola 我刚才回避了这个问题。

    多个人共同开发的,不牛x的团队还是要用一个成熟的框架(否则各种配合的不舒服,以及带来更多的坑)。
    牛x的团队而且有时间的话可以自己搞一个框架,不少流行框架就是这样来的。
    或者是团队里有个牛x的人站出来说,用我的框架吧(估计会死的比较惨)。

    自己凭爱做的项目,我的意见是可以随性些,让自己获得更多乐趣不更好么。


    我是想表达下造轮子是个人爱好,未必坏事。更不会死板到到哪儿都非要用自己的轮子。
    那次面试也让我清醒了些,感觉有些脱节了,谈到有些框架我不了解,也没有框架方面经验的积累,谈实现某些功能也不知道去哪找合适的框架。

    @ulmate01
    搜一下 “不要重复发明轮子”。指有的项目或功能,别人已经做过,我们需要用的时候,直接拿来用即可,而不要重新制造。
    jacksonpan
        18
    jacksonpan  
       2013-08-07 16:50:41 +08:00
    重新造轮子是让自己了解的更清楚,而并非说要替代前人的工作,这个没有什么必要不必要的,只要你想,我非常支持你造轮子,但是一旦自己造了轮子,要坚持维护,不然就浪费资源了。
    wupher
        19
    wupher  
       2013-08-07 16:56:09 +08:00
    mvc、加载器,不会是写j2ee企业应用吧。
    wwqgtxx
        20
    wwqgtxx  
       2013-08-07 17:47:07 +08:00 via Android
    创造是人类最大的财富,支持楼主!!
    hanf
        21
    hanf  
       2013-08-07 17:48:06 +08:00   1
    偷偷地告诉楼主,我经常借助公司要“自主开发”的机会自己造一遍轮子...
    我完全理解你.
    timothyye
        22
    timothyye  
       2013-08-07 17:52:30 +08:00 via Android
    天天改bug,帮别人擦屁股的飘过……
    refresh
        23
    refresh  
    OP
       2013-08-07 19:11:58 +08:00
    @leavic
    @jesonyang 查找问题的时候很痛苦,但解决了也很开心啊,况且,又不是总出问题
    @hanf 嗯,这事我以前也干过,虽然会招来很多事,但学到了东西
    @timothyye 讨厌给别人擦屁股,所以我会尽量把代码写得优雅一点。我喜欢推倒重要,虽然我知道这样不好。
    @alexrezit 偶尔create,感觉得多数时候还是make
    thai9quohs6jae1C
        24
    thai9quohs6jae1C  
       2013-08-07 19:23:39 +08:00
    你的mark吗,中文不错嘛。
    leavic
        25
    leavic  
       2013-08-07 19:46:36 +08:00
    @refresh 看来你是没写过底层硬件代码啊,等你碰上连官方都没发现的芯片bug的时候就真的会崩溃了,刹那间觉得自己好孤独.
    refresh
        26
    refresh  
    OP
       2013-08-07 20:20:30 +08:00
    @leavic 汗,我是做应用层面的,你那个是科学家级别,我这个是代码匠人级别的,嗯,我就是个手艺人,只不过喜欢这门手艺
    leavic
        27
    leavic  
       2013-08-07 20:36:41 +08:00
    @refresh 别,还科学家呢,实在受不起,我同学才是科学家.搞嵌入式的都可能碰到这种官方没发现的bug.
    williamx
        28
    williamx  
       2013-08-07 20:46:01 +08:00
    “不要重新造轮子”已经成了“批评界”万能的法宝了,他们把这句话的主旨理解的异常透彻并且贯彻执行,以至于他们在“批判”的时候,都是同一个“轮子”。
    bradlee
        29
    bradlee  
       2013-08-07 21:09:34 +08:00
    @leavic 哈哈哈哈 是搞硬件的这种是常态吧?需要FAE支持的,我记得我去年调一个摄像头的驱动,其实很简单,FAE发来一个表格,那个表格是官方文档上没有的,全是一堆寄存器设置,调试那个才叫无语
    gzb1985
        30
    gzb1985  
       2013-08-07 21:09:51 +08:00
    重复去造轮子,不一定能造好,最近一直在模仿着造轮子
    zhaoyafei
        31
    zhaoyafei  
       2013-08-08 05:02:40 +08:00   1
    @fange01 突然有种被6L高深的认知甩出好几条街的感觉
    zhujinliang
        32
    zhujinliang  
       2013-08-08 08:26:16 +08:00
    @hanf 哈哈,我也这样

    @zhaoyafei 碰到熟人了,好羞耻
    zhaoyafei
        33
    zhaoyafei  
       2013-08-08 08:38:30 +08:00
    @zhujinliang 忽略我先
    jianghu52
        34
    jianghu52  
       2013-08-08 09:00:20 +08:00
    哈。一天没见,回复的人好多。看来很多人对于我那句“造轮子”很有意见啊。恩,那我解释一下,我并不反对造轮子,事实上我做的事情99%以上也都是在造轮子。所以我没有立场鄙视别人造轮子。
    但是最近一直跟着产品经理学习,最大的感悟是,在现实的商业社会里面,一个产品的成功,很大程度上归功于业务的创新,而不是代码的创新。换句话说,你可以用别人写到烂大街的代码,创造出别人从没有实现的业务,这才是社会所需要的。不要太过沉迷与写代码的那种感觉,那种看着机器按照自己的意愿输出各种各种值,实现了各种算法,各种功能,那种快乐我懂。
    holy_sin
        35
    holy_sin  
       2013-08-08 09:10:54 +08:00
    看完这个帖子,真的很激动人心,我偶尔就会产生厌烦,被不断变动的需求折腾
    zhicheng
        36
    zhicheng  
       2013-08-08 11:07:24 +08:00
    Unix 是重复过的轮子,BSD 是重复过的轮子,Solaris 是重复过的轮子,Linux 是重复过的轮子,ARM 是重复过的轮子,MIPS 是重复过的轮子,更别提数不胜数的“替代”软件。如果已经有 如果已经有 PC 了,我们还要 Mac 干嘛?如果已经有 Windows 了,我们还要 Mac OSX 干嘛?WPS 了,我们还要 Office 干嘛?如果已经有 iOS 了,我们还要 Android 干嘛?

    别那么死板,正是有了很多重复的创造和竞争,才有的伟大的变革。

    用别人的东西 -> 不爽,修改它 -> 修改得太多,不如自己创造一个 -> 别人用自己的东西 -> 别人不爽。。。。

    所有的项目和产品,都是这样出来的。
    Golevka
        37
    Golevka  
       2013-08-08 11:17:11 +08:00
    @leavic 并且一般嵌入式行业都是今年做明年/后年release的产品, 许多芯片还没量产就开始用了, 于是巨坑无数 (我们能发现的也只是冰山一角T T).

    去年还遇上个处理器访问Ext. Flash的pipeline hazard没处理好于是处理器直接lockup的bug... 芯片厂商不肯改, 于是我们只好改编译器让它生成访存代码时自动插入3个nop() /*fvck!*/
    picasso250
        38
    picasso250  
       2013-08-08 15:13:14 +08:00
    我也喜欢写轮子。喜欢写轮子的人都是好奇的人。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2340 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 42ms UTC 15:52 PVG 23:52 LAX 08:52 JFK 11:52
    Do have faith in what you're doing.
    ubao 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