最近几天对D语言有了一些了解,据说能够具备和C、C++一样的高性能,语法类似于C#和Java,并且支持当前比较流行的语言——像Ruby和Python——的一些新特性,而且微软还提供了Visual D的插件,可以安装在Visual studio中,从而使用它来开发D语言的程序。
我们会发现,其实这门语言,在很大程度上是以往各种语言长处的结合(不知道是否实现了这一点,但目的应该是这样),与其说是一种新的语言,不如说是在借鉴了很多语言之后,组合出的一种语言。
由此我们可以发现,借鉴具有很强的力量。通过借鉴,我们能够创造出一些新的有自身特色的东西来。
说到借鉴,就不能不说创新,曾经有位朋友拿微软和苹果做过比较:微软最近几年来,在技术上一直没有非常明显的创新,似乎总是跟在别人的后面走,比方说云计算,比方说手机开发,再比方说服务式的web应用等等。而苹果的东西似乎每一种都具有很强的创新性,iPad、iPhone、手表式的ipod,还有传言中的裸眼3D功能的iPad等等,都让人能够眼前一亮。
的确,创新很棒!能够产生不错的效果。相比之下,借鉴似乎就要差一些,而且“山寨”和借鉴之间也有些搞不清楚。然而,我们也应该看到,创新其实也是建立在借鉴的基础之上,而且借鉴也能够产生很不错的效果。毕竟,创新力不是说说就能具备的,也需要长时间的积累和思考,而且还有一些天赋的成分在里面,试问世界上又能有几个乔帮主级别的人物。而借鉴往往更适合我们这些普通人,能够让我们从中受益。
作为程序员来说,也有很多地方都可以采用借鉴的方式来提升自己的能力。
比方说前几天我在百度Web app开发大会上的演讲中,谈到Web应用前端设计如何能够美观的时候,我就借鉴了版面设计的理论(来自于《写个大家看的设计书》),web应用的设计也应该遵循重复、对齐、对比、亲密性四种原则,那样就会达到美观的效果。而谈到设计需要规范的时候,我也借鉴了项目中经常会使用的代码规范,对于前端设计也一样要有相应的规范,那样才能够更利于开发和后期的维护工作。
再比方说之前的一篇blog中,我谈到了如果《以投资的观点学习编程》,这正是在听了公司投资部经理关于投资的一场讲座之后想到的,学习编程和投资一样,也有不少可以触类旁通的地方。
不仅仅如此,软件这个年轻的产业,本身很多方法都是从其他传统行业借鉴过来的,软件架构在很大程度上借鉴了建筑学的知识,而精益的理论更是来自于生产行业,我们能够看到,软件行业的发展与对其他行业的借鉴是分不开的。
而作为程序员,我们应该借鉴什么呢?
首先我想要借鉴已有的程序和项目,当我们想要完成一项任务的时候,不一定要从零开始,毕竟不是考试,我们完全可以先查看一下是否已经有类似的程序或者类似的项目,看看他们是如何完成的,而且在完成的过程中是否有相关的经验和教训,那些都是非常宝贵的财富。当然我们不是要完全地复制,而是要“批判地学习”,在理解了已有内容的基础上,加上自己的思考,从而创建出最适合我们自己的程序。在这个过程中,借鉴本身就是学习和提高的过程。
其次我想可以借鉴在非计算机领域解决问题的方式。我们知道,计算机真正广泛应用在解决问题上,也就是几十年间的事儿,之前遇到问题,传统的行业中一样可以解决,也都形成了不少方法论。那正是我们需要借鉴的地方,不一定在解决问题的时候完全要依赖于计算机,先从非计算机的方式入手,放宽一下自己的视野,可能会有更好的效果。
想要真正实现良好的借鉴,我想我们要时刻有借鉴的准备,机会总是留给又准备的人的,当我们在平时的生活中,或者是在各种书籍中,发现好的解决问题的方法时,就可以试着思考一下,是否可以借鉴到计算机领域中,这样,在以后编程解决问题的时候,可能就会不自觉地使用了。切不可把自己处于一种封闭的状态,对外界的事情不闻不问,更可怕的就是完全排斥了,根本就不接受外界的思想,那样“闭关锁国”的话,如何才能发展呢?(这里貌似也是借鉴,:))
关于借鉴,你的想法如何,欢迎在此评论,也欢迎通过我的微博:@侯伯薇 和我交流,:)