前段时间,在网上或者书籍里时常看到“尽量避免重复造轮子”的忠告,话是不错。可是我们也不能片面理解这个忠告。
我们学习编程之初,不就是要慢慢学会自己造轮子吗?只不过,那些轮子很是粗陋、简单而已。从实现一个简单的功能扩充到实现一个比较通用的系统框架,到实现一个比较通用的系统。
要说造轮子,以数据库访问接口(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,还有威盛。所以,也就有了龙芯存在的必要。
"轮子"不能一家独大,而是要百家争鸣。程序员,应该在吸收其它轮子创造过程的基础上,争当造轮子的先锋。
分享到:
相关推荐
37. 造轮子是很好的锻炼方法:通过自行开发工具或库,能够加深对技术的理解。 38. codereview最好以小组/结对的形式:代码审查过程中,团队合作能够提供更多视角和建议。 39. 提问前先做调研:在提出问题前,应该...
【阅读代码的重要性】 阅读代码是每个程序员成长过程中不可或缺的一部分,尤其对于提高个人技术水平和修为具有重大意义。...因此,我们应该积极拥抱阅读代码的过程,把它视为提升个人修为的必经之路。
37. 造轮子是很好的锻炼方法:指的是一手从头开发,通过这个过程可以加深对技术的理解和实践能力。 38. codereview最好以小组/结对的形式:团队内部的代码审查应采用小组或结对的形式进行,以提高审查的质量和效率...
回购初学者从零开始学习openCV 关于:OpenCV(开源计算机视觉库)是一个主要针对实时计算机视觉的编程功能库,最初由Intel开发,后来由Willow Garage和Itseez(后来被Intel收购)支持。 该库是跨平台的,可根据开源...
技术运维-机房巡检表及巡检说明
第四次算法分析与设计整理
图像处理项目实战
该资源为jaxlib-0.4.18-cp311-cp311-macosx_11_0_arm64.whl,欢迎下载使用哦!
搭建说明. 运行环境 php5.6 mysql5.6 扩展sg11 前置条件: 前后端分离,需要准备两个域名,一个后台域名,一个前端域名 后端源码修改(cs2.ijiuwu.com批量替换改为你的后端域名)数据库修改(cs3.ijiuwu.com批量替换为你的前端域名)1、创建后台站点,上传后台源码并解压到根目录2、创建前端站点,上传前端源码并解压到根目录 3、创建数据库上传并导入数据库文件 4、修改数据库信息: 后台:app/database.php 前端:application/database.php 前端站点设置 伪静态thinkphp 运行目录public 关闭防跨站 访问后台域名/admin.php进入后台管理 admin 123456 系统-》系统设置-》附件设置-》Web服务器URL 改为你的前端域名 系统-》清前台缓存 改为你的前端域名 点击刷新缓存
【毕业答辩】爆款黑板风教育文艺毕业论文答辩通用模板.pptx
1、文件内容:systemd-devel-219-78.el7_9.9.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/systemd-devel-219-78.el7_9.9.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊
win32汇编环境,对 WM-MOUSEMOVE 消息的理解
车牌识别项目
UE项目开发过程中的一些快捷脚本
lab1的words.txt文件
python、yolo、pytorch
人工智能、大语言模型相关学习资料
图像处理项目实战
python、yolo、pytorch
车牌识别项目