本人从事开发工作有一定的年头了,在周围朋友中俨然一个高级程序员(虽然自知还有很多东西要学^_^),最近经常有人在问我这样的问题:“我想学学编程,现在哪种开发语言是主流啊?我该学什么语言啊?”由于问的人多了,我觉得有必要写这样一篇文章来好好研究一下这个问题。
首先要考虑的是现在都有哪些开发语言?哪些又是主流呢?根据我的理解,现在的开发语言主要包括汇编、C语言、C++、Java、.Net、PHP、Perl、ASP等等,能称得上主流的,也就是那些现在满大街的培训机构教授的.Net和Java或者PHP了。
那么,这些开发语言该学哪一个呢?我的答案是学哪一个都是一样的,所谓的主流开发语言全是那些培训机构说的,因为这些语言最好培训,是最简单的开发语言。
在这里我不是想贬低某些培训机构,我觉得现在某些培训机构打出广告说什么“我们要培训的是实用型人才”、“参加我们的培训要比大学应届毕业生好找工作”等等,这些所有宣传语都是一种噱头,如果真的在这种培训机构里面学个一年两年就能比大学毕业生厉害,那我们还去上大学做什么?还去大学里学那么四年做什么?直接都来这里培训不就好了吗?
本人也参加过这种培训班,但是上了没几次课我就放弃了,我发现这些培训机构真的只是教授实用的技巧,他只会告诉你某个东西这样这样写就可以实现,根本不会让你去深入的考虑为什么要这样实现,还有没有更好的实现方法。从这种培训机构学习出来的人,如果想做好程序员,要走的路还是很长的,因为这些人底层的知识不够,学习程序设计的很多知识都没有,例如:离散数学、模拟电路、数字电路、操作系统原理、数据库原理等等,而这些东西都是计算机专业本科生必修的课程(虽然现在90%的本科生觉得学这些没用),我就非常的想学习这些东西,因为离散数学会讲解我们在程序设计中经常用到的与或非运算、操作系统原理和数据库原理让我们从底层了解了操作系统和数据库的设计思路,只有这些知识才能帮助我们设计出高效率、高健壮性的程序。
从培训机构出来的程序员,只能说是最基本的程序员,只能是在别人设计好的条件下,进行程序开发,我觉得这种程序员只能称之为“写代码的机器”,等这些人做了三五年的程序员,想转行做项目经理或者高级程序员,他就会明白自己和真正本科生的区别在哪里了。
呵呵,好像稍微有点跑题了。现在继续说我们该怎么选择开发语言来学习,根据我的理解,我认为各种不同的开发语言,其实是在寻找开发效率和对计算机的最大操作性这两个极端的平衡点,汇编语言可以对计算机的任何东西操作,但是学习起来非常的难,我们在写汇编的程序时要考虑所有的东西,所以汇编语言开发起来很麻烦,而Java、.Net这种高级语言,确实开发效率很高,学习起来也是很容易,但是我们要受限制于JVM或者.Net框架,就像我们开车,如果开的是汇编这辆车,我们可以走到世界的任何角落,就算没有路了,我们也可以自己开拓一条路来走。如果我们开的是Java、.Net这种车,那么我们只能在中国或者北京这个城市里面开一样,如果没有路了,那么我们只能掉头,因为我们受到了限制。
我个人认为,现在所有开发语言之中,能够把开发效率和对计算机的最大操作性这两个极端,平衡最好的只有C++。也许这时候会有人说:“那你的意思就是学习C++才是最好的了?”我给你的答案还是:“错!”其实我们需要学习的并不是某一种开发语言,我们最需要学习的是程序设计的思路,所谓程序设计语言,就是开发的时候,语法形式不太一样,程序的设计思路在各个开发语言里面都是一样的。
每种语言的程序员,或者说每一个程序员,如果你想在这条路上走的很远,那最好要学习程序设计思路,然后随便选择一门程序设计语言,把这门程序设计语言学好。等你想转到其他语言的时候,只要用一段时间熟悉其他语言的语法结构,你就可以成为其他语言的程序员了。
当然,如果你觉得自己能力可以,我还是建议各位程序员学习一下C++,你可以不会写C++的程序,但一定要能够看懂C++的程序,现在很多的开发语言,追究到底层,始终是C++,所以我敢说至少十年之内,C++还是王道,哈哈哈。
希望各位有什么不同的看法,可以和我交流,谢谢!