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

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

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

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

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

猜你喜欢

转载自blog.csdn.net/torres_10/article/details/79834969