高低之分在这个社会很普遍。大到什么主义,什么社会制度制度,小到单位个人,方方面面不比出个高低好像不过瘾似的。这真是一个比高低的国度。记得在很久很久以前就被教导过程序语言分之为低级语言和高级语言。高低这两个词比较单纯容易记忆,而且从小就被灌输要高不要低的价值观。因此,那时候自己就有要学高级语言,不学低级语言的简单朴素的想法,仿佛学习高级语言自己就会高级起来一样。
没想到今天这个话题依旧。无论新手还是老程序员中都有许多人都在问 “什么语言是最好的?什么语言是最高级的?”,言下之意就是要学习最好的语言,掌握了最好的语言自己就是最好的了。在上几篇文章的回帖中,我看到有人这样说:地球人都知道要选择C#,java。你能说说为什么吗?在另一回帖中也看到了有人对自己原先选择VFP感到后悔,因为他感到VFP语言已经被淘汰了,同时他对自己没有选择C语言感到后悔,因为他认为使用C语言才能看出程序员的水平。
归纳起来有以下:
1) 什么语言是最好的?
2) 我现在掌握的语言是否已经或将要被淘汰,我今后要学习什么样的语言?
3) C语言是真正的高级语言
这些问题就其本质上来说,他们都给程序设计语言定下高低之分,并且他们想知道谁高谁低。
那么程序设计语言是否有高低之分呢?根据我长期编程经历和经验,我认为:
1) 程序设计语言本质上没有高低之分
所谓程序设计语言是指让计算机能够听懂、并能指令计算机进行操作的语言。每种语言的产生都有一定功能范畴,也就是说这个语言是为了解决什么问题而产生的。不同的问题就可能用不同的语言来解决。不同的问题是很难用高低来区分的。例如,基于计算机底层的操作(汇编语言、C语言)与计算机应用层上的操作(C#、Java),那个是高级的,那个是低级的是很难说清楚的。又例如,基于单机程序的VFP和基于网络的ASP、C#也是很难说清楚的(虽然VFP也可以用于网络编程、ASP、C#也可以用于单机编程)。他们的侧重点是不同的,而这个侧重点正是这个语言的别于其他语言的特点。
因此,没有任何一种语言是最好的,哪怕是暂时的。
C语言的确是一个高级语言,也能反映出程序员的技术水平,但是C语言有它的适用范围。我们不能以自己不懂的语言,或使用人数少得语言,或其稀缺就感到其高级。
2) 程序设计语言是一个不断发展过程
没有一个语言是静止不变的,几乎所有语言都会随着技术进步而不断升级。同一种语言确实是存在高低之分,版本高的语言因为改进其版本的问题,增加了新的功能,扩大了语言的应用范围。所以,程序员要关注本语言的发展,不断跟踪语言发展的最新结果。
有的语言由于其最初所设计功能范畴满足不了现在流行技术构架就逐渐地被人淡忘和淘汰了。原来很流行的基于单机的、基于B/S构架的语言,如BASIC、VB、VFP、BP、DELPH等语言渐渐地消失了。
认识到语言是一个发展的过程,跟上语言发展步伐,才是程序员必须要牢记的。这就可以回答地球人都知道要选择C#、JAVA个中的理由了吧。
不同的语言发展的步伐是不太一致的,越是靠近计算机底层的语言发展的越慢,但是不等同于不发展,例如,C语言就增加了大文件打开的系统函数。
程序员确实要有危机意识,要主动关注语言发展的大的趋势,如果你学的语言正好是主流的、流行的语言,那你可以减轻这方面的压力。如果你学的是非主流的,而且其编程工作呈下降趋势,则要考虑学习新的语言,否则真有一天会被淘汰。
3) 要牢记学以致用的原则
程序员选择何种语言从某种意义上来说并不取决于自己的喜好,而是为了自身的生存,由外部来决定的,其总的原则是学以致用。例如,现在外部流行B/S构架,表明市场需要这个构架下的程序员。程序员要想就业,增加就业的可能性,必须要选择C#、JAVA、PHP。否则,学会了其他语言无法致用,就业难度增大。又例如,单位需要后台和数据库方面的程序员,那程序员就必须学习C语言和Proc C语言。又例如,软件公司用的JAVA,而你又想进入这家公司,那你就必须学习JAVA。
其实,“编程语言是否有高低之分”是个伪命题,不管有何无,都无关大碍。关键是程序员要掌握一门用于生存和学以致用的语言。
学习语言有一个很漫长的过程:自然语言-〉程序设计语言-〉多种程序设计语言-〉程序设计语言存在高低之分-〉程序设计语言不存在高低之分-〉选择学以致用的程序设计语言-〉跟踪程序设计语言发展的趋势-〉领会程序设计语言的本质-〉回归自然语言。
每个程序员都可以静下心来,客观上看看自己处在这个过程哪个阶段,只有这样才能用一个发展的眼光看到自己在学习语言方面的前方道路,迫使自己向更高的阶段迈进。