您好,欢迎访问三七文档
1/6程序设计语言本质高低之分在这个社会很普遍。大到什么主义,什么社会制度制度,小到单位个人,方方面面不比出个高低好像不过瘾似的。这真是一个比高低的国度。记得在很久很久以前就被教导过程序语言分之为低级语言和高级语言。高低这两个词比较单纯容易记忆,而且从小就被灌输要高不要低的价值观。因此,那时候自己就有要学高级语言,不学低级语言的简单朴素的想法,仿佛学习高级语言自己就会高级起来一样。没想到今天这个话题依旧。无论新手还是老程序员中都有许多人都在问“什么语言是最好的?什么语言是最高级的?”,言下之意就是要学习最好的语言,掌握了最好的语言自己就是最好的了。在上几篇文章的回帖中,我看到有人这样说:地球人都知道要选择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)要牢记学以致用的原则2/6程序员选择何种语言从某种意义上来说并不取决于自己的喜好,而是为了自身的生存,由外部来决定的,其总的原则是学以致用。例如,现在外部流行B/S构架,表明市场需要这个构架下的程序员。程序员要想就业,增加就业的可能性,必须要选择C#、JAVA、PHP。否则,学会了其他语言无法致用,就业难度增大。又例如,单位需要后台和数据库方面的程序员,那程序员就必须学习C语言和ProcC语言。又例如,软件公司用的JAVA,而你又想进入这家公司,那你就必须学习JAVA。其实,“编程语言是否有高低之分”是个伪命题,不管有何无,都无关大碍。关键是程序员要掌握一门用于生存和学以致用的语言。学习语言有一个很漫长的过程:自然语言-〉程序设计语言-〉多种程序设计语言-〉程序设计语言存在高低之分-〉程序设计语言不存在高低之分-〉选择学以致用的程序设计语言-〉跟踪程序设计语言发展的趋势-〉领会程序设计语言的本质-〉回归自然语言。每个程序员都可以静下心来,客观上看看自己处在这个过程哪个阶段,只有这样才能用一个发展的眼光看到自己在学习语言方面的前方道路,迫使自己向更高的阶段迈进。新手如何学习一门新的语言上篇谈了新手如何学习一门新的语言话题;那么对于已经掌握一种或一种以上的程序员如何学习一门新的语言呢?由于程序员已经有一定语言基础,形成了自己一套学习方法和思维定式,所以这个问题还是和新手学语言是有些差别的。但是在现实中,我还是发现不少程序员因为工作的需要而学习新的语言问题。他们心怀恐惧、不知道自己如何能否学好,而且学习方法非常传统,象新手一样:首先去买本这方面的书(或者借本书,或者网上阅读),看完以后再动手。但是,我不知道他们是怎么看书的!是从头到尾地看?还是挑选着看?他们关注书中的什么内容?第二种情况是程序员动手能力特强,先把语言安装起来,先编起来再说,但是他们不知道这个过程有多长,何时是个头。无论那种程序员你去向他讨教如何学习一门新语言时,大都是仁者见仁,智者见智的,而且几乎没有人能从头到尾说得清楚的。若不信,读者可以自己去回答这个问题。其实,程序员学新语言是有讲究的。学习不同类型语言难度最大,相同类型的语言难度就小些。当掌握过程语言(例如:C语言)的人去新学面向对象的语言(例如:C++)时,难度就非常之大,因为两种语言的思想是完全不同的,用过去的定式去思考新的语言,那种痛苦是难言以表的。例如VB程序员去学VFP、BP等同是C/S类开发程序相对就容易得多。又例如,VB程序员去学ASP就很困难,因为一个是C/S,一个是B/S,虽然语法上相差不大,但是构架差距很大,很难一下子去适应。所以,学习新的语言第一个要分析这个语言的类型是否是自己已经掌握了的,如果已经掌握,那么学习的时间会很短,一般在一个星期到半个月就行了;如果没有学过,则学习时间会很长,一般要2-3个月已上,而且非常痛苦。对于程序员而言,学习新的语言,绝对不要去买什么书籍,买了书籍也不要花时间一字一句地去看。主要的学习手段就是动手编程序,通过编写范例程序的过程中学习!第二,一定要找到一个懂这个语言的人,如果能够找到人问的话,一定要找人去问。这个时候和新手找人问是完全不同的,因为新手会听不懂别人所说一些基本概念,会引起高手的不耐烦的。第三,程序员千万不要自己去“刻苦钻研”!因为,程序员有一定的语言基础,心中只要记住“流程”、“语法”、“调用”(见《程序员需要那些具备最基础的知识和技术》一文)就可以了。程序员在掌握编程的流程之后,可以通过编写以下三个程序:1)显示“helloworld!”程序2)打印日历程序3)“学生学籍信息”处理程序。来掌握新语言中语法和调用的方法了。当然程序员自己也可以选择编写自己的程序以达到3/6学习目的。与新手不同的是:1)要特别注意语言的语法差别。一般来说,语言的语法差别很小,但是很烦人。程序员学过之后往往会混淆不同语言的语法。例如,有的语句是以分号为结束符的,有的语言中的语句是以回车为结束符的。如果混淆的话,你就一会加分号,一会不加分号的。尤其是程序员对原先语言特别精通的话,这种惯性是很大的,因此也特别烦人。2)要特别注重程序的调试方法。因为除语言本身之外,如何调试也可能是不太相同的。调试对于程序员来说太重要了,必须加以关注。3)要特别注重程序运行环境。程序编出来了,生成exe了,但并不意味着这个程序就能执行。例如,C语言的生成出来的程序一般是不需要额外的环境的,直接运行就行了。VFP生成出来的程序,则需要系统中安装VFP系统DLL,因此,VFP程序要做安装盘。C#则需要跟多的环境才能执行等等。4)要特别注重程序中的各种调用。由于新学的语言往往功能更强,涉及调用功能更多,程序员要关注新语言如何调用的问题,调用也是今后程序编写的最重要的内容。程序员按照这种方法去学习新的语言,开始时候一定会感到寸步难行的,会遇到很多困难的。但是,我相信只有程序员知道整个学习的流程,知道下一步工作的目标,我想学习进度会越来越快的。我最不希望看到程序员在学习上表现出自发、盲目、恐惧的精神状态。学习程序设计语言学习程序设计语言是程序员看家的功夫,许多程序员边编边学,没有止境,可以说是“活到老学到老”。在语言面前,程序员永远是学生。然而,程序设计语言是一个不断发展的技术,从机器语言到汇编语言,从低级语言到高级语言,从面向过程语言到面向对象语言,从C/S语言到B/S语言,从非垮平台语言到跨平台跨系统语言,从纯语言到开发平台工具,真的是目不暇接。这些革命性的技术浪潮推动着程序员不断地学习新的语言以适应其发展,否则程序员将被淘汰于大浪之后。学习新的语言有两类人员,一类是从来没有程序设计语言基础的、没有编过程序的人;另一类是已经掌握了一门或一门以上语言,正想要学习更高版本语言或新的语言的人。对于第一类的人我且称之为新手。新手要学习一门程序语言,那是一张白纸,可以画出最新最美的图画,同样也可以画得乱七八糟没有美感。新手第一语言对其今后的影响是巨大的,如果学得好,则自信心大增,对今后的发展非常有利。如果学得不好,学不下去,则对其职业生涯打击很大。新手面对众多的语言往往无从下手,第一不知道学那种语言为好,第二,不知道如何学习,第三不知道能不能学好!我认为,就目前而言,学习java,C#,今后想学后台学C语言都是不错的选择。关于第三点,只要想学,只要有职业压力,没有学不好的,只有学不到最好的。关于第二点,我的建议要特别注重两个要点:一是基础,二是动手能力。学语言首先要看书,然后要动手。那些认为光看书就能学会语言的是很幼稚的想法。而那种光注重编程而不注重读书的,将来一定是动手能力强而水平低的。1)新手不要急于求成,要把时间放长一点,先把基础知识学好,基础越扎实,今后编程水平就有可能越高。看书至少要花三个月时间。看书主要选择计算机原理、程序设计原理,以及所学语言的相关书籍(如入最好是入门类,不要刻意地选哪本好不好,对初学者来说都是好的)三类书籍。2)看书中肯定要遇到各种不懂的概念,而且各种概念之间的关系也不容易理解和掌握,许多新手望而生畏,读不下去。这个时候一定要学会坚持,坚持读下去,反复读下去,4/6对实在不懂的概念要注意收集牢记在心。这个时候最好不要找人去解答,最好在把所有的书籍反复看完3遍之后,再去找人解答,这样就可以加深对这个问题的理解,而且解答者也愿意回答,如果一有问题就去问,一是解答者失去了耐心,另一方面自己没有印象,容易产生依赖性。3)有了一定基础知识之后,就要自己去想办法安装编程环境。如何按照编程环境的要点我在《程序员需要那些具备最基础的知识和技能》中有关“流程”中已经讲过了,这里就不在赘述。4)开发环境安装完成后,新手就可以编写显示“helloword!”程序了。编写这个程序目的主要是学习主程序的作用,主程序的参数入口,简单的赋值语句,显示功能调用,退出程序语句。通过这个程序完成,新手可以对编写程序流程的切声体会。5)接下来可以学习算术运算编程。试一试算术表达式编写,简单的可以编写一个计算器示例;复杂些可以编写一个显示日历的程序(输入年份,显示这个年份的日历),在这个阶段主要是学习函数以及函数的调用,算术运算、条件语句、循环语句、显示功能等。这些都是编程的基础。6)完成算术运算的学习后,可以编写更复杂的完整的程序。例如可以编写一个学生信息管理。其功能为:接受一个学生信息(例如,学号、学生姓名、班级、年龄)并把它保存在计算机中,并提供增加、删除、修改、查询功能。信息保存形式可以是文本文件,也可以是数据库。这个阶段主要是学习变量、数据存放、文件操作、数据库操作、程序完整性等,这也是编程的基础。7)完成上述学习之后,程序员要学会回头梳理一
本文标题:程序新手必读
链接地址:https://www.777doc.com/doc-2150917 .html