程序员所说的「轮子」是什么东西?
显然,车轮子是圆形的,这是大家公认的,最合适的形状。
而你非要发明另一种形状的轮子,这种行为就叫「重复发明轮子(Reinventing the wheel)」,即「造轮子」—— 明知道你做的不可能比前辈做得更好,却仍然坚持要做。
放到编程中,就是说业界已经有公认的软件或者库了,你明知道自己不可能比它做得更好,却还坚持要做。作为练习,造轮子可以增加自己的经验,很多事情看起来简单,但只有自己动手,才会发现其中的难点。当然实际开发中也有很多情况不得不造轮子,比如希望做到自主知识产权、刷 KPI 之类的;或者造轮子的人真的觉得自己开发的版本有更强的功能、更好的性能也说不定呢。
此一词语的由来是因为轮子由人类所发明,且在各方面都带来许多便利。有人认为,既然轮子已被发明,而且在使用上没有什么缺陷,重新再发明一次轮子是没有意义的,只是浪费时间,分散研究者的资源,使其无法投入更有意义及价值的目标。
不过在教导复杂概念时,“重造轮子”倒是个重要的方式。这种方式不是提供学生许多已知的事实及技术,然后就期待学生完美及快速的应用这些事实及技术。重造轮子的教学方式是提供新的材料,让学生自行完成其中重要的步骤,同时也理解此领域的相关事实及技术。
有时一些工程设计看似只是像“重造轮子”一様,但其中确实有其价值,例如用来回避软件许可的不相容,或是回避一些第三方提供模组或是零件的技术限制。例如要在网页中嵌入一个用Javascript写成的快速排序法。快速排序的算法广为人知,而在且在C++或Java的通用函式库中已有此模组,但有些Javascript的实现不一定包括此算法。因此若一程式设计者希望可靠的在网页中应用快速排序,他必须“重造轮子”,也就是重新实现一次快速排序法。程式设计者也可以直接从其他网页上复制,但这就会带来版权及软件授权的问题,在此例中重造轮子可以提供了欠缺的机能,但又不会有版权问题。
程序员所说的「轮子」是什么东西?相关推荐
- 每个程序员都可以「懂」一点 Linux
点击上方"马蜂窝技术",关注订阅更多优质内容 提到 Linux,作为程序员来说一定都不陌生.但如果说到「懂」Linux,可能就没有那么多人有把握了.到底用 Linux 离懂 Lin ...
- Java程序员被狠狠「暴击」,网友:愿天堂没有计算机 ....
都说一入Java深似海,从此代码是爱人,但是学习的过程却从来都不轻松. 当下,越来越多的互联网企业,招聘Java工程师时,明确写道需熟练掌握JavaWeb技术.作为衔接前后端的重要一环,JavaWeb ...
- 程序员版的「倚天屠龙」,看完泪奔!
作者 | 素年清时 责编 | 伍杏玲 出品 | 程序人生(ID:coder_life) 我剑 何去何从 爱与恨 情难独钟 我刀 划破长空 是与非 懂也不懂 我醉 一片朦胧 恩和怨 是幻是空 ...
- 这群程序员中的「广告狂人」,把抖音广告做成了AR游戏
在大部分人印象里,广告总是占据屏幕却平平无奇.但现在,广告也可以有丰富的玩法和有趣的互动,充满创新. 比如,你在刷抖音的时候,有没有玩过这些AR互动广告? 瞄准悬浮在空中的菜品,它们就都成了射击的靶子 ...
- 这款开源神器,堪称程序员界的「瑞士军刀」!
公众号关注 "GitHubDaily" 设为 "星标",每天带你逛 GitHub! 大家好,我是小 G. 正所谓「工欲善其事,必先利其器」,在日常开发过程中,如 ...
- 「轮子」是什么东西?创造它有什么意义?
程序员圈经常流行的一句话:"不要重复造轮子".在计算机领域,我们将封装好的组件.库,叫做轮子.因为它可以拿来直接用,直接塞进我们的项目中,就能实现对应的功能. 有些同学会问,人家都 ...
- 揭开程序员身上的「专业面纱」:非科班程序员,都来自哪些专业?
[文章来源微信公众号:每天学编程] 专业选择重不重要?这几乎成了每年高考后的「全民话题」.有人说「专业决定就业」,有人说「职业无关专业」.对于程序员群体而言,大学专业对他们的职业选择发展又有着怎样的影 ...
- 「程序员也要会生活」系列之第二话——唯有爱能拯救一切
上个周末,我们正式推出了「程序员也要会生活」系列,也许是介绍周末好去处,也许是介绍一部电影.一本书.一个旅游城市.一个人.一个新奇的礼物.一个居家旅行的好点子,也许只是跟大家聊聊最近发生的各种新鲜好玩 ...
- 程序员为什么热衷造轮子?
搜索一下"造轮子"或者"程序员为什么喜欢造轮子",会看到很多相关的讨论,这是个老生常谈的话题,很多人谈过了,谈了很多年.不过还是有再谈的必要. "造轮 ...
最新文章
- Markdown大法的尝试
- 远程机房监控设计方案
- 信用卡还不起会有什么严重后果?
- checkStyle -- 代码风格一致
- php curl_init函数用法
- JSR 303 - Bean Validation与Hibernate Validation 介绍
- JEECG参与2017年度最受欢迎开源项目投票,请投上宝贵一票
- 程序员和编码员之间的区别
- 大数据时代的河南机遇
- Python基础练习-002-求1000以内的完全数
- 【数据分享】工人收入工资及其社会经济影响因素数据
- 统计机器翻译与神经机器翻译区别_几十年的领域专家告诉你,机器翻译进化到哪一步了?...
- vs2010中svn使用教程_VS2010中使用ankhSVN | 学步园
- 疫情让鲸类暂时远离了人工噪声,但在这之前,它们已被打扰了一百多年
- iOS友盟社会化分享完全攻略
- 【Excel 教程系列第 14 篇】批量替换 Excel 中单元格的背景色
- 沃商店运营一周年凸显平台化优势
- 牛客网刷题java之变态跳台阶一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
- Leetcode 36:有效的数独(超详细的解法!!!)
- TFT-LCD液晶显示器的工作原理