2014年4月29日星期二

开发与工具

今天在网上随便逛了一下,看了看一些人在osChina里面对于编程语言与技术的一些争论。让我有了一些想法。

其实我觉得编程技术的发展其实和人类社会在其他领域上技术的发展本质上来说没有大的区别。而技术的发展方向本质上来说是从效率和质量这两个方向上进化的,也就是说,新的技术总是能够带来更好的质量,或者更好的效率,不过使用起来可能会更复杂一些。而从根本上来说新技术总是依托在某种工具上来实现的。比如,现在在土木工程上面,随处可见的大大小小的工程机械,特别是挖掘机,大大小小,种类俱全。而挖掘机的工作实际上就是替代了铁锹和镐头。但是它使用起来要比铁锹和镐头要复杂很多。挖土这种工作显然,质量上很容易保证,但显而易见,挖土机的工作效率比人高多了。软件开发基本也是如此,我们和其他工业领域,没有本质上的差别。

开发技术的发展其方向大体上也基本等同于工具的发展,总是向利于高效的方向来发展的。因此我们也应该看到,技术在很大程度上不可能一成不变,发展与进步是一种必然。

软件开发一个有趣的地方在于,你所使用的语言和工具很大程度上也是一种材料,一旦你使用了某一种,就不太容易换另一种。所以现代的开发平台,大体上都允许你使用多种语言来开发,比如微软的开发平台,上面支持很多种语言。Java也是走的这个路线,Java平台上现在已经有很多的语言实现了。

人类,总是趋向于使用某种工具的。人类总是趋向于使用抽象的,易于理解的,高效的工具。开发也是一样。因此我趋向于应用规范标准的类库,而不是私有的类库。类库的维护成本是很高的,而且,我刚才简单论证过了,编程工具化的过程基本是无法避免的。无论是从组织要求上来说,还是从技术要求上来说,都是一样的。

抽象度高的代码,显然更容易让人理解,从而也容易维护。

说白了,就是因为人类本质上善于发现和认识,这也是人类的一个很基本的特征。所谓的知识往往就是人类识别出来的这些模式与认识的一种集合和积累,有的完善,有的不完善。在哲学上来说,我记得认识还有两次飞跃。从感性认识到理性认识的飞跃,从理性认识到实践的飞跃。而开发工作其实就是在第二次飞跃上工作,也就是说理论在指导实践。

总之语言的发展必然会不断的提高其抽象程度,和机器有关的细节会越来越少。另外也应该看到,这个过程不可能是一两个人或者几个公司能完成的,需要整个社会的共同努力。