前段时间,在网上或者书籍里时常看到“尽量避免重复造轮子”的忠告,话是不错。可是我们也不能片面理解这个忠告。
我们学习编程之初,不就是要慢慢学会自己造轮子吗?只不过,那些轮子很是粗陋、简单而已。从实现一个简单的功能扩充到实现一个比较通用的系统框架,到实现一个比较通用的系统。
要说造轮子,以数据库访问接口(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,还有威盛。所以,也就有了龙芯存在的必要。
"轮子"不能一家独大,而是要百家争鸣。程序员,应该在吸收其它轮子创造过程的基础上,争当造轮子的先锋。
分享到:
相关推荐
在根据SGI-STL仿造轮在的过程中,学习c++和数据结构
很多时候,都听人家在说不要重复制造轮子,要站在巨人的肩膀上等....不过让我感到有点困惑的是,怎么样才叫做不要重复制造轮子?如何才能站在巨人的肩旁上?现在网络如此发达,资源如此丰富,开源社区也发展的很好。...
机器学习算法构建一个基于样本数据的数学模型,称为“训练数据”,以便在没有明确编程来执行任务的情况下进行预测或决策。[1][2]机器学习算法用于各种应用,例如电子邮件过滤和计算机视觉,在这些应用中,开发用于...
Java并发编程学习宝典(漫画版),Java并发编程学习宝典(漫画版)Java并发编程学习宝典(漫画版)Java并发编程学习宝典(漫画版)Java并发编程学习宝典(漫画版)Java并发编程学习宝典(漫画版)Java并发编程学习...
自己造轮子:一款实用的Android广告栏实现过程2016-01-23 安卓应用频道 安卓应用频道(点击上方公众号,可快速关注)来源:dongjunkun链接:
中班科学轮子PPT学习教案.pptx
检验学习效果的最好方法就是自己造轮子。最近在学习Vue源码,写了一个迷你版vue,实现数据响应式。从step1到step3.2,是开发步骤和实现思路,每一步都可以独立运行。
数据描述符(descriptor)和存取描述符均具有以下可选键值:当且仅当该属性的 conBgurable 为 true 时,该属性描述符才能够被改变,同时该属
20--[旋转的轮子1].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码20--[旋转的轮子1].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码20--[旋转的轮子1].zip源码scratch2.0 3.0编程项目源文件源码...
NULL 博文链接:https://basil1292.iteye.com/blog/459911
天天造轮子,手写面试常见源码.zip
科学轮子学习.pptx
为写简单 HTML5 展示页的同志们造的轮子,基于 AngularJS 1.x gulp swiper
拆轮子-学习Depth唯美的动画效果
科学轮子学习教案.pptx
npm让js实现了模块化,使得复用其他人写好的模块(搬砖)变得更加方便,也让我们可以分享一些自己的作品给大家使用(造轮子),今天这里我就给大家分享一个用命令行压缩图片的工具,它的用法大致是这样的: ...
NULL 博文链接:https://chenyu-hz.iteye.com/blog/1842256
轮子的妙用学习.pptx
Python 3.9 中下载Dlib包的轮子
机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。它专门研究计算机如何模拟或实现人类的学习行为,以获取新的知识或技能,并重新组织已有的知识结构,从而不断改善...