显然,车轮子是圆形的,这是大家公认的,最合适的形状。

而你非要发明另一种形状的轮子,这种行为就叫「重复发明轮子(Reinventing the wheel)」,即「造轮子」—— 明知道你做的不可能比前辈做得更好,却仍然坚持要做

放到编程中,就是说业界已经有公认的软件或者库了,你明知道自己不可能比它做得更好,却还坚持要做。作为练习,造轮子可以增加自己的经验,很多事情看起来简单,但只有自己动手,才会发现其中的难点。当然实际开发中也有很多情况不得不造轮子,比如希望做到自主知识产权、刷 KPI 之类的;或者造轮子的人真的觉得自己开发的版本有更强的功能、更好的性能也说不定呢。

此一词语的由来是因为轮子由人类所发明,且在各方面都带来许多便利。有人认为,既然轮子已被发明,而且在使用上没有什么缺陷,重新再发明一次轮子是没有意义的,只是浪费时间,分散研究者的资源,使其无法投入更有意义及价值的目标。
不过在教导复杂概念时,“重造轮子”倒是个重要的方式。这种方式不是提供学生许多已知的事实及技术,然后就期待学生完美及快速的应用这些事实及技术。重造轮子的教学方式是提供新的材料,让学生自行完成其中重要的步骤,同时也理解此领域的相关事实及技术。
有时一些工程设计看似只是像“重造轮子”一様,但其中确实有其价值,例如用来回避软件许可的不相容,或是回避一些第三方提供模组或是零件的技术限制。例如要在网页中嵌入一个用Javascript写成的快速排序法。快速排序的算法广为人知,而在且在C++或Java的通用函式库中已有此模组,但有些Javascript的实现不一定包括此算法。因此若一程式设计者希望可靠的在网页中应用快速排序,他必须“重造轮子”,也就是重新实现一次快速排序法。程式设计者也可以直接从其他网页上复制,但这就会带来版权及软件授权的问题,在此例中重造轮子可以提供了欠缺的机能,但又不会有版权问题。

程序员所说的「轮子」是什么东西?相关推荐

  1. 每个程序员都可以「懂」一点 Linux

    点击上方"马蜂窝技术",关注订阅更多优质内容 提到 Linux,作为程序员来说一定都不陌生.但如果说到「懂」Linux,可能就没有那么多人有把握了.到底用 Linux 离懂 Lin ...

  2. Java程序员被狠狠「暴击」,网友:愿天堂没有计算机 ....

    都说一入Java深似海,从此代码是爱人,但是学习的过程却从来都不轻松. 当下,越来越多的互联网企业,招聘Java工程师时,明确写道需熟练掌握JavaWeb技术.作为衔接前后端的重要一环,JavaWeb ...

  3. 程序员版的「倚天屠龙」,看完泪奔!

    作者 | 素年清时 责编 | 伍杏玲 出品 | 程序人生(ID:coder_life) 我剑 何去何从   爱与恨 情难独钟 我刀 划破长空   是与非 懂也不懂 我醉 一片朦胧   恩和怨 是幻是空 ...

  4. 这群程序员中的「广告狂人」,把抖音广告做成了AR游戏

    在大部分人印象里,广告总是占据屏幕却平平无奇.但现在,广告也可以有丰富的玩法和有趣的互动,充满创新. 比如,你在刷抖音的时候,有没有玩过这些AR互动广告? 瞄准悬浮在空中的菜品,它们就都成了射击的靶子 ...

  5. 这款开源神器,堪称程序员界的「瑞士军刀」!

    公众号关注 "GitHubDaily" 设为 "星标",每天带你逛 GitHub! 大家好,我是小 G. 正所谓「工欲善其事,必先利其器」,在日常开发过程中,如 ...

  6. 「轮子」是什么东西?创造它有什么意义?

    程序员圈经常流行的一句话:"不要重复造轮子".在计算机领域,我们将封装好的组件.库,叫做轮子.因为它可以拿来直接用,直接塞进我们的项目中,就能实现对应的功能. 有些同学会问,人家都 ...

  7. 揭开程序员身上的「专业面纱」:非科班程序员,都来自哪些专业?

    [文章来源微信公众号:每天学编程] 专业选择重不重要?这几乎成了每年高考后的「全民话题」.有人说「专业决定就业」,有人说「职业无关专业」.对于程序员群体而言,大学专业对他们的职业选择发展又有着怎样的影 ...

  8. 「程序员也要会生活」系列之第二话——唯有爱能拯救一切

    上个周末,我们正式推出了「程序员也要会生活」系列,也许是介绍周末好去处,也许是介绍一部电影.一本书.一个旅游城市.一个人.一个新奇的礼物.一个居家旅行的好点子,也许只是跟大家聊聊最近发生的各种新鲜好玩 ...

  9. 程序员为什么热衷造轮子?

    搜索一下"造轮子"或者"程序员为什么喜欢造轮子",会看到很多相关的讨论,这是个老生常谈的话题,很多人谈过了,谈了很多年.不过还是有再谈的必要. "造轮 ...

最新文章

  1. Markdown大法的尝试
  2. 远程机房监控设计方案
  3. 信用卡还不起会有什么严重后果?
  4. checkStyle -- 代码风格一致
  5. php curl_init函数用法
  6. JSR 303 - Bean Validation与Hibernate Validation 介绍
  7. JEECG参与2017年度最受欢迎开源项目投票,请投上宝贵一票
  8. 程序员和编码员之间的区别
  9. 大数据时代的河南机遇
  10. Python基础练习-002-求1000以内的完全数
  11. 【数据分享】工人收入工资及其社会经济影响因素数据
  12. 统计机器翻译与神经机器翻译区别_几十年的领域专家告诉你,机器翻译进化到哪一步了?...
  13. vs2010中svn使用教程_VS2010中使用ankhSVN | 学步园
  14. 疫情让鲸类暂时远离了人工噪声,但在这之前,它们已被打扰了一百多年
  15. iOS友盟社会化分享完全攻略
  16. 【Excel 教程系列第 14 篇】批量替换 Excel 中单元格的背景色
  17. 沃商店运营一周年凸显平台化优势
  18. 牛客网刷题java之变态跳台阶一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
  19. Leetcode 36:有效的数独(超详细的解法!!!)
  20. TFT-LCD液晶显示器的工作原理

热门文章

  1. 使用不正确的主题来学习WordPress主题评论
  2. 与传统电商相比,微商城存在哪些优势?
  3. 【网络安全】渗透工程师面试题总结大全
  4. Python校实训第一天----分支语句之星座查询
  5. WPS操作时会留下历史记录如何关闭历史功能保护个人隐私
  6. 互转(经纬度、地心坐标、东北天坐标)
  7. windows下linux子系统(Ubuntu)配置(基础配置+zsh)
  8. 观复嘟嘟:职场是个技术活-马未都
  9. 重庆科创学院03级计算机文秘,重庆科创职业学院——国际商务文秘实务课程标准.doc...
  10. Unity导出模型为Obj文件