前段时间,在网上或者书籍里时常看到“尽量避免重复造轮子”的忠告,话是不错。可是我们也不能片面理解这个忠告。
我们学习编程之初,不就是要慢慢学会自己造轮子吗?只不过,那些轮子很是粗陋、简单而已。从实现一个简单的功能扩充到实现一个比较通用的系统框架,到实现一个比较通用的系统。
要说造轮子,以数据库访问接口(Data Access)为例,微软的ODBC, OLEDB, ADO,ADO.NET,无不是造了一个又一个的轮子,我们难道要排斥它们吗?还有,Java里的JDBC,JDO以及其它一些持久化、O/R Mapping框架层出不穷,它们也是在造轮子,以前Borland的BDE (Database Engine),Sybase的PowerBuilder里,更是包括了几乎所有主流数据库的底层通用访问接口,还有自己的专项DataWindow, DataWindow.Net。
从功能上来讲,它们大都在重复制造。可是这些轮子的再造过程绝对是值得的,有比较才有选择。没有最好的,只有合适的。只有与你实际应用过程需要最贴近效率最高的,才是最合适的。
现在的Web框架多如牛毛,有时候甚至让人不知道该选择这么多轮子中的哪一个为好。可是,要想成为主动积极的程序员,最好的办法不是排斥造轮子,而是不时的主动的去造轮子,当然不是闭门造轮子,可以在复用人家功能的基础上进行创造,或者直接修改人家的轮子,改成自己的轮子(在不违相关法规和商业道德的基础上)。
或许,就像做科研一样,明智的人会站在他人已有思想的基础上,继续研究,才容易出成果。在吸收已有轮子的基础上进行改进,才容易造出好的轮子。
如今,很多编程语言都有同化的趋势,C++中的泛型流行一段时间以后,Java也在自己的语言特性里加入泛型。PHP, Perl原来都没有面向对象的特性,后来也都加上了。
Erlang支持自然的并发特性,可以充分的利用多核物理特性,随着它的流行,估计C++/Java这些语言在编译器级会考虑吸收Erlang的思想。
所以,我觉得,既然这么多轮子在“重复”创造,我们多造几个轮子,也无可厚非。尤其对于那些要求有“核心技术”的软件企业来说,更是如此。有了真正属于自己的轮子,才能造更好的轮子。
广而言之,不光是软件制作,即便是硬件设计,不也是如此吗?人家有了Intel,依然会有AMD,还有威盛。所以,也就有了龙芯存在的必要。
"轮子"不能一家独大,而是要百家争鸣。程序员,应该在吸收其它轮子创造过程的基础上,争当造轮子的先锋。
分享到:
相关推荐
在这个“STL仿造轮子”的项目中,我们旨在通过模仿SGI-STL(斯坦福大学图形小组的STL实现)来深入理解和学习C++以及数据结构的基本原理。 首先,STL的核心组件包括容器、迭代器、算法和函数对象。容器是STL的基础,...
很多时候,都听人家在说不要重复制造轮子,要站在巨人的肩膀上等....不过让我感到有点困惑的是,怎么样才叫做不要重复制造轮子?如何才能站在巨人的肩旁上?现在网络如此发达,资源如此丰富,开源社区也发展的很好。...
在IT行业中,"重复造轮子,表单验证"是一个常见的议题,特别是在软件开发中。当我们谈论表单验证时,通常是指在用户提交数据到服务器之前,在客户端(通常是Web浏览器)进行的数据验证过程。这个过程确保了用户输入...
在IT行业中,自造轮子通常指的是开发人员重新创建已经存在的功能或组件,以此来学习、理解和改进。在这个场景中,“swt table 自己造个轮子”指的是使用SWT(Standard Widget Toolkit)库来创建一个自定义的表格组件...
【中班科学轮子PPT学习教案】是一个针对幼儿教育设计的教学材料,旨在帮助孩子们了解轮子的历史、发展以及在日常生活中的应用。本教案通过图文并茂的方式,引导孩子们探索和理解轮子的重要性和演变过程。 轮子是...
机器学习算法构建一个基于样本数据的数学模型,称为“训练数据”,以便在没有明确编程来执行任务的情况下进行预测或决策。[1][2]机器学习算法用于各种应用,例如电子邮件过滤和计算机视觉,在这些应用中,开发用于...
Java并发编程学习宝典(漫画版),Java并发编程学习宝典(漫画版)Java并发编程学习宝典(漫画版)Java并发编程学习宝典(漫画版)Java并发编程学习宝典(漫画版)Java并发编程学习宝典(漫画版)Java并发编程学习...
本文档《省力的轮子学习教案》就是一份面向这一目标的教学材料,旨在通过一系列科学合理的教学设计,让学生们更深入地理解轮子如何实现省力,并将这些理论应用到实际中去。 教案开始,首先应对轮子本身进行介绍,...
3. **Executor框架** - "20 其实不用造轮子—Executor框架详解-慕课专栏.html":讲解了Java的`ExecutorService`和`ThreadPoolExecutor`,这是管理和控制线程执行的重要工具,可以有效地管理线程池,提高系统性能。...
设计过程可能包括绘制草图,定义参数,使用旋转、拉伸、倒角等特征来塑造轮子的轮廓。设计师还会考虑轮子的尺寸,如直径、宽度以及中心孔的大小,以确保与轴承的配合和整体结构的稳定性。 轴承是轮子中的关键部分,...
【了不起的轮子学习教案】是一份教育材料,旨在教授孩子们关于轮子的基本知识及其在日常生活中的重要性。这份教案可能适用于幼儿园或小学低年级的孩子,通过生动有趣的方式激发他们对机械运动和简单机械原理的兴趣。...
WAF 绕过-权限控制之代码混淆及行为造轮子#Safedog 代码层手写及脚本绕过变量覆盖,加密混淆,异或生成#BT Aliyun 代码层手写及脚本绕过编码解码
【中班科学轮子学习教案】就是这样一个适逢其时的教育材料,它不仅帮助孩子们理解轮子的基本原理,还让他们体验到了科学探索的乐趣。 教案的开始,通常是对课程进行导入。第一页至第五页可能作为课程的引入部分,...
- 轮子在交通工具中的应用:无论是古代的马车、现代的汽车,还是飞机,轮子都起到了关键作用,它们降低了摩擦力,使车辆能够快速、平稳地移动。 - 医疗领域:在病床中使用轮子,便于医护人员快速移动病人,提高了...
总结来说,自己实现轮子是一个极好的学习机会,它涵盖了基础数据结构与算法、设计模式、并发编程、数据库操作、网络编程等多个方面。在Java世界里,你可以选择从简单的工具类到复杂的框架逐一实现,每次成功都会加深...
【标题】:“省力的轮子PPT学习教案.pptx” 【描述】:这份“省力的轮子PPT学习教案”似乎是一份教育材料,旨在帮助学生或学习者理解轮子的基本原理及其在日常生活中的应用。它可能涵盖了轮子的历史、工作原理以及...
20--[旋转的轮子1].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码20--[旋转的轮子1].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码20--[旋转的轮子1].zip源码scratch2.0 3.0编程项目源文件源码...
【了不起的轮子】是一份为幼儿或低年级学生量身定制的PPT学习教案,它通过生动的故事和丰富的图片将孩子们带入一个关于轮子的奇妙世界。这份教案旨在让孩子们认识到轮子在日常生活以及各种交通工具中的不可或缺的...