摆脱语言之争

时间:2021-09-23 13:20:47

不管在哪个技术论坛,总是会看到一些关于语言的争论,有人力挺c语言,也有人骂c语言,有人说C#比C++好,同时又有人说C++比C#好。。。如此种种,似乎永远不会结束。我相信我个人是无法停止这种争论的,只希望通过这一篇短文,让你可以早日跳出这个怪圈,摆脱语言之争。因为只有跳出语言的界限,才能成为真正的高手。语言之争就如同武侠小说里的门派之争,对于门派武功越是执着,就越容易局限于门派之内,就越难成为真正的武林高手。

 

比较常见的一种语言争论是横向的语言比较,就是类似语言的比较,比如java和c#的比较,或者是jsp和asp的比较。这种比较类似于刀和剑的比较,对于高手来讲其实都没有太大意义。刀有刀的用法,剑有剑的用法,用刀的有高手可以刀过无痕,用剑的有高手可以一剑封喉,而到我手上不管是刀还是剑都是一堆废铁,充其量可以当把古董卖点钱。所以关键在于使用的人,刀和剑本身没有哪个更厉害的说法。语言也一样,不管使用什么语言都有高手,也都有菜鸟,差别在于人,而不在于语言本身。

进一步来讲,真正的高手并不会受限于手中的工具。就如同《飞狐外传》里的胡一刀和苗人凤,一个用刀,一个用剑,比武到最后可以交换武器继续切磋,对他们来讲刀和剑都不过是简单的工具而已。对于编程而言也是同样的道理,对编程有深入理解的人,不管拿到什么语言,适应一下语法和编程接口,就可以做到运用自如。

 

 

更深入一层的语言争论是纵向的语言比较,就是高级语言和低级语言的比较,比如c和汇编的比较,又或是java和c的比较。在这种比较中往往都是倾向于低级语言,其中一个重要的论点是高级语言都是使用低级语言编写或者封装的。这种比较也没有太大意义,就如同铁锤和剑的比较。一把把锋利的宝剑都是工匠使用铁锤一锤一锤锻打出来的,但是我们并不能因为这个原因就认为铁锤比剑更好,恰恰相反,在很多情况下用剑比用铁锤更容易达到目的。如同java和c语言,当你面对一个电子商城的项目时,有众多的理由会让你选择java而不是c。

当然,就像上面提到的,高手并不受限于手中的工具。一把铁锤在武林高手手里也可以是一个致命的武器,摘叶飞花皆为武器,又何况是一把铁锤。当年大家都还弄不太清MFC的时候,罗云彬大虾就可以使用汇编直接编写Windows程序。不过高手又不是变态的二*,有选择的时候干嘛不选一个顺手的。叫罗大虾带队做个“愤怒的小鸟”,我想汇编不会是罗大虾的选择。

 

 

更具有倾向性的是时间维度上的语言比较,就是老语言和新语言的比较,如Basic和c++的比较。这种比较往往都是编程界的浪漫主义者提出来的,进行比较的目的更多是怀旧,在比较中找到一些记忆。在这种比较中大家还是很容易接受新语言比老语言更好的结论,不然推出新语言做甚。就好像拿木棍和手枪做比较,谁不知道手枪比木棍好用。不过仔细想一想,这也不是绝对的,关键还是要看使用的环境。叫个保安拿支枪在小区门口站岗当然好,不过在我们国家好像不让这么干。对一个保安来讲,教他怎么用警棍比教他用枪要来的实际。就好像在word文档里加一个宏,什么汇编,c,C++都用不上,拿VB写可能也就几分钟的事情。

 

 

所以说,语言的比较没有太多意义,要突破自己,就要跳出这种限制,摆脱语言之争。

 

当然,高手并不是一天练成的,高手也有刚入行的一天。对于刚入行的人来讲,选择一种语言是必须的,深入研究一种语言也是必须的。要达到“手中无剑,心中有剑”的高手境界,必须先通过“手中有剑”的过程。

那么,问题又回到了原点,怎么去选择语言呢,不是说语言的比较都没有意义吗? 答案在你自己身上,答案在你的身边。就是说你要根据自己的情况和公司/学校的情况选择一种语言。如果你找到一份工作要求用.net的,项目组都使用c#,那么c#就是你最好的选择,又有项目环境,周围又有高手,不愁c#学不好。如果你是一个学“自动化控制”的学生,不妨按课程进度选择汇编,在学校把ARM汇编搞通,不愁毕业找不到工作。

 

总之,你选择一种语言是因为这种语言更适合你现在的情况,不是因为这种语言比别的语言更好,所以,你不需要爱上这种语言,也不需要羡慕学习其他语言的人。

 

到某一天的你成为高手了,不同语言都可以成为选择了,整个项目组会等待你对语言的选择,那个时候,你选择一种语言也是因为那种语言更适合你们的项目,而不是因为那种语言比别的语言更好。