程序入门初学者应从何种编程语言开端学起.doc_第1页
程序入门初学者应从何种编程语言开端学起.doc_第2页
程序入门初学者应从何种编程语言开端学起.doc_第3页
程序入门初学者应从何种编程语言开端学起.doc_第4页
程序入门初学者应从何种编程语言开端学起.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序入门 初学者应从何种编程语言开端学起您好,欢迎来到阿里巴巴程序入门初学者应从何种编程语言开端学起(2011/05/22 18:04)程序入门:初学者应从何种编程语言开始学起这是一个争辩不休的话题,不同人总会有不同的看法.传统的说法是从Pascal开始,而较为新点的是C开始,这几年以来,也有提出直接从C+或者C#/Java开始学起.自己是本科出生的,对于专科或者不读书的初学者来说,他们的环境也许跟我的不同,不过我的观点可以作为参考.首先,我先来先容一下各种编程语言的起源、特点.Pascal语言:Pascal是一种计算机通用的高等b5cc5a0c29a5054cd38017a81ceca2cc语言,由瑞士Niklaus Wirth教学六十年代末设计并创建的.Pascal的主要特点有:严格的结构化形式、丰硕齐备的数据类型、运行效率高、查错能力强等特点.由于上述特点,Pascal可以方便用于描写各种算法和数据结构.对于程序设计的初学者,Pascal语言有利于培育良好的程序设计风格和习惯.IOI(国际奥林匹克信息学竞赛)把Pascal语言作为三种程序设计语言之一.NOI(全国奥林匹克信息学比赛)把Pascal语言定为唯一倡导的程序设计语言,在大学中Pascal语言也经常被用作学习数据结构与算法的数学语言.C语言:C语言是介于汇编语言和高级语言之间的语言,属于高级语言,也称为中级语言,是集汇编和高级语言优点于一身的程序设计语言.于1972年在美国贝尔试验室里问世.早期的C语言主要用于UNIX系统.由于C语言的强盛功能和各方面的优点逐渐为人们意识,到了九十年代,C语言开始进入其他操作系统,并很快在各类大、中、小和微型计算机上得到普遍的应用.成为当代最优良的程序设计语言之一.C的特色1.是一种结构化语言.档次清楚,便于按模块化方式组织程序,易于调试和保护.2.C语言的表示能力和处置能力极强.不仅存在丰盛的运算符和数据类型,便于实现各类复杂的数据结构,它还可以直接访问内存的物理地址,进行位级别的操作.3.由于C语言实现对硬件的编程操作,所以既可用于系统软件的开发,也适合于应用软件的开发.C语言还具有效率高,可移植性强等特点.因此广泛地移植到了各类计算机上,从而造成了多种版本的C语言.4.由于C语言允许直接对位、字节和地址进行操作,能实现汇编语言的大部分功能.5.目标代码品质高,程序执行效率高.总体上来说,C语言的长处是简练、紧凑、使用便利、机动、易于学习和利用.仅有32个要害字.9种节制语句,程序的书写情势也很自在.C语言的弱点:非强类型;语法制约不严格,使得编程者无奈过多地依附C编译程序去查错;缺乏实时检查,如数组越界等.从严厉上来说,C语言是块结构语言,这是由于它在结构上类似于ALGOL、Pascal和Modula-2.从技术上讲,块结构语言许可在过程和函数中定义过程和函数.因为C语言不答应在函数中定义函数,所以不能称为通常意思上的块结构语言.C语言作为一门面向过程的计算机语言,至今已有三十多年历史,应用广泛,无论是Windows还是Linux,你所看到的底层都是用C写的.大部分的网络协议也都是用C实现的.你看到的最英俊的游戏画面也是用C实现的,产业掌握程序也是用C实现的.不过C不是万能,只是某些方面它适用而已.C+语言C+是于1986年由AT&T贝尔实验室开发的,语言开发的目的在于通过数据封装减少程序变量的副作用,从而下降程序的复杂性并提高程序的牢靠性.(笔者曾经听到的开发C+的目的是由于懂得C语言的人越来越多,所以需要再出一门更难的、比C语言强大的语言,能力保住饭碗,so.C+降生啦)C+是C语言的直接扩展,C+的多继承机制能更好地描述对象的属性和行动.C+是C的扩大,但C+可以作为一种全新的语言来看.C+的特点:面向对象、继续、封装、多态性.由于C+是C的扩展,所以也具有C的特点.C+在C的基础上,参加了面向对象编程思维,也就决议了C+的效率在某一方面是不如C的.比如定义一品种型,C+用类(Class)来封装,而C可能就直接几个变量的组合就成了一个结构体(Struct),类不仅具有成员变量,还具有成员函数等,在精致的比较其效率时,C会比C+的效力要高.但因为时代的发展,项目或工程的宏大化,基于面向对象的思惟显然更能适应.即C+在这方面能比C要做得更美丽.现在不少系统级编程都是用C+实现,许多应用级别的软件也是用C+实现.这里要留神一点,就是C+并不是完全的面向对象语言.它是供给了面向对象的模型以及思路,然而同时兼容了面向进程的模型.Java语言Java语言来自于Sun公司的一个叫Green的名目,其本来的目标是为家用花费电子产品开发一个散布式代码体系,这样咱们就能够把email发给电冰箱、电视机等家用电器.对他们进行把持跟信息交换.开端,筹备用C+,但C+太庞杂,保险性差,最后用一种新的语言Oak(Java的前身),Oak是一种用于网络的精致而平安的语言,Sun公司曾依此投标一个交互式电视项目,但被SGI战胜.可怜的Oak简直无家可归,凑巧这时Mark Ardreesen开发的Mosaic和Netscape启示了Oak项目组成员,他们用(Java)编制了HotJava阅读器,得到了Sun首席履行官Scott McNealy的支撑,触发了Java进军Internet.Java的取名有一段趣闻:有一天,多少位Java成员组的会员正在探讨给这个新的语言取什么名字,当时他们正在咖啡馆喝着Java(爪哇)咖啡,有一个人心血来潮说就叫Java怎么,得到了其余人的赞美,于是,Java这个名字就这样传开了.Java的特点:1.简单性:风格类似于C+,Java摒弃了C+中轻易引发程序错误的处所,如指针和内存管理.2.面向对象:Java是一种完全面向对象语言.从这点来看,Java类似于SmallTalk,但其特性、尤其是实用于分布式计算环境的特性远远超出了SmallTalk.3.分布式:Java包括一个支持HTTP和FTP等基于TCP/IP协定的子库.因而,Java运用程序可凭借URL翻开并拜访网络上的对象,其访问方法与访问本地文件系统几乎完全雷同.4.硬朗:Java致力于检查程序在编译和运行时的过错.类型检查辅助检查出许多开发早期涌现的毛病.Java自己把持内存减少了内存犯错的可能性.5.结构中立:Java将程序编译成一种结构中破的中间文件格式.只要有Java运行系统的机器都执行这种中间代码.这种中间语言被设计在虚构机上运行,由机器相干的运行调试器实现执行.6.安全:1)删除了香指针和手动开释内存等功能,防止了非法内存操作.2)当Java用来创建时,语言功能和本身提供的功能联合起来.Java在机器上执行前,要经由良多测试,它经过代码校验,检讨代码段的格局,检测指针操作,对象操作是否过火以及试图转变一个对象的类型.7.可移植的:同系统结构无关的特征使得Java应用程序可以在装备Java解释器和运行环境的任何计算机系统上运行.任何Java代码会被解释成一种中间语言,然后通过不同机子的特定环境(如机器指令)运行程序.实现方便移植的特点.8.解释性.Java说明器能直接运行目的代码指令.链接程序通常比编译程序所需资源少.9.高机能.如果解释器速度不慢,Java可以在运行时直接将目标代码翻译成机器指令.Sun用直接解释器一秒钟内可调用300,000个过程.10.多线程:Java提供的多线程功能使得在一个程序里可同时执行多个小义务.多线程带来的更大好处是更好的交互性能和实时控制性能.11.动态:动态特性允许程序动态地装入运行过程中所需要的类.在运行时断定援用的利益是可以使用已被更新的类,而不必担忧会影响原有的代码.如果程序衔接了网络中另一系统中的某一类,该类的所有者也可以自由地对该类进行更新,而不会使任何引用该类的程序瓦解.Java在出生之后未几,便受到宽大大众的欢迎,甚至有人说出有了Java,可以不要C/C+了.一度把Java提到了很高的位置.这当然是对Java的一种赞赏,只是有点过了.到今天,Java仍然不能代替C,C+,而且还呈现了新的对手.Net(后面将会介绍).Java目前主要应用:Web、网络应用系统.C#语言.C#是一种准确、简略、类型安全、面向对象的语言.说到C#,就不得不先简单介绍一下.net.到底什么是.net呢,按照微软总裁兼首席执行官Steve Ballrner把它定义为:.Net代表一个聚集,一个环境,它可以作为平台支持下一代Internet的可编程结构.C#是.net的代表语言.C#的特点:1.完整面向对象.2.支持分布式,之所以有C#,是因为微软相信分布式应用程序是未来的趋势,即处理过程分布在客户机和服务器上.所以C#一诞生就注定了能很好解决分布式问题.3.跟Java类似,C#代码经过编译后,成为了一种IL(旁边语言).在运行时,再把IL编译为平台专用的代码.4.健壮,C#在检查程序错误和编译与运行时错误一点也不逊于Java,C#也用了主动治理内存机制.5.C#不像Java那样完全摒弃了指针和手动内存管理.C#默认情况下是不能使用指针的,程序员在有必要时可以打开指针来使用.这样可以保障编程的灵巧性.6.安全性:C#的安全性是有.net平台来提供的.C#代码编译后成为IL语言.是一种受控代码,.net提供类型安全检查等机制保证代码是安全的.7.可移植性:因为C#使用类似Java的中间语言机制.使得C#也跟Java类似,可以很方便的移植到其他系统.在运行时,再把中间代码编译为适合特定机器的代码.8.解释性:C#也是一种特别的解释性语言.9.高性能:C#把代码编译成中间语言后,可以高效的执行程序.10.多线程:与Java类似,可以由一个主过程分出多个执行小任务的多线程.11.组件模式:C#很适合组件开发.各个组件可以由其他语言实现的,然后集成在.net中.C#是在Java风行起来后所诞生的一种新的语言.由于微软在操作系统上占领很大的优势.在以往的开发中累积了不少教训,所构成的.net平台,所以C#在Windows方面可以说比Java具有更大的优势.如果单纯从技术上来讲,C#在网络编程上可以与Java匹敌.C#还在Windows Forms也有一定的优势.C#是一种十分相似于C+的语言,作风是更濒临于Java,不论是C+程序员仍是Java程序员,都可以很方便的转到C#上来.C#的壮大是依赖于.net的发展,而.net的发展是看微软在.net上的信心和投入有多少.从Windows 2003和Vista系统可以看出(前者内置.net1.1,后者内置.net2.0.).Net在Windows编程中具有重要的策略意义.C#目前主要是应用在网络编程上,其他范畴比如数据库、窗体编程,都逐步在增大.终于写完了各种语言的特点.如果读者对以上观点不批准,请留言.别BS我就对了.好了.继承,我该讲主题了!其次,我们现在假设一个初学者没有任何程序设计语言的基础.先来比较一下各种语言:Pascal PK C现在,看我们学习Pascal和C的过程:学Hello world,然后晓得怎么编译,运行.然后学习基本数据类型,然后输入输出.不管学校愿望学生能学多好,Athlon64超频,实际来看,学生学Pascal跟学C是没什么差别的.不同的只是语言风格.有人也许会说,学C的精髓在于指针.学C的人会比Pascal强很多.没错,指针是学C的一个重点.但是就按我学C的课原来看,用到的指针只是很简单的.理解了*p和p有什么不同,就够了.然后会编个简单的几行代码,就自认为会C了.C库中有很多函数,教师在课堂上几乎没讲.比如memset,qsort等,少了这些.你学Pascal和C没什么不同,只是作为了学习其他语言的铺垫而已.而新生由于没有语言根基,有不少好学生由于教师在课堂上没讲,就以为学完教师所教的了.这恰是好学生的弱点所在.如果是坏学生,不听课堂的.倒还可能发现课堂所学的C是如许浮浅.还有,我至今没见过有学校会教C的图形开发的.虽然图形开发不是语言基础.不过对于扩展新生的编程视线是一个不错的选择.古代程序软件支持图形窗口的太丰富了,几乎不会太多的学生去在意窗体的设置,定位等功能.图形编程还能激发学生的编程愿望.笔者曾经实现过C的动画演示,当里面的所有图形都按预期的活动起来的时候,那种高兴感如同你在雪窖冰天的情况下溘然淋你一盘冰水所觉得的那种感觉.C PK C+C+是在C的基础上发展起来的.看起来好像这两个pk,赢者确定C+.其实未必.C至今还有生存的空间,而没有被C+全盘取代.阐明了C还是拥有不可替换的作用.C目前主要应用在于硬件底层的部门,以及对于性能要求较高的应用程序中.但是对于复杂的系统级的开发,显然C+显得从容自由.接洽实际,不少人学C+的时候,就已经有C的基础了.有C的基础,学C+的基本类型的时候可以快捷度过,然后学类,继承,多态等概念.还是从我的经历说起,我选了C+,然后几乎没怎上课,因为切实听了想睡觉,期末前用C+做了一个大功课后,就叫懂C+了哈,然后考试当然轻松过了.实在我那时还是没学到C+,实质点说,我只是还是在会点C的基础上.多了一个结构类型:类,而已.后来使用了1年的C+后,才恍然觉察到当年的无知.才清楚C+是什么.我相信已经学过C+的同学估计现在连IO流的概念还没搞清晰的人许多.造成这种景象的原因在于:1.学生自身没有当真去编程实现.2.先生只是反复的讲课本而已.最终断定学生是否会C+的尺度也只是考试为主.对于高校的考试轨制在计算机系中的效用,笔者将在将来几天内出一篇个人观点文章.Java PK C#目前不少人对这两种语言谈论纷纭.笔者在开始学C#的时候,曾经看过Java程序员对于C#的观点.把C#贬得一文不值.突然发现,好像很多Java的程序员对C#怀有生成的敌意.笔者目前自认为粗通的是C#(别BS我).以往学过Java,在此我写一下我所感想到的.虽然微软始终称C#是继承于C/C+,但是不管从代码结构,还是内置的支持类,都跟Java有惊人的类似之处.我感觉C#就是在Java之上,针对Java的优点和毛病来设计的.我用过C、C+、Java,感觉还是C#最好,这只是笔者的个人感触.由于C#还保存着指针,当要实现一下比较底层的,性能要求高的时候,解决措施之一是C#可以打开指针,而Java是做不到的,Java只能通过其他道路,比如优化算法来解决.Java在非windows下取得了很大的胜利:某考察公司曾经使用Google搜寻引擎来统计以下指标:纯熟使用某种语言的工程师数目、某种语言课程教养的可用性、有多少公司在出卖用某种语言编写的软件.最后综合得分情形是:Java以45.2分排名第一;第二名是C,得分是32.2;C+是以24.6分排名第三;C#远远落伍在第九位,得分为4.6.这些数据是几年前的数据.在这次测试中还发明,C#的受欢送水平正在急剧回升;而Java绝对稳固.这其中一个起因是.net容许很多种编程语言,而不像Java那样,限度人们只能应用一种语言.开发者可能使用包含C、C+、C#甚至Java在内的几乎任何语言来编写代码,而后把这些代码翻译成机器看得懂的CLR代码(公共语言运行时期码).这样.net可以闪开发者维护本人的代码投资,换句话说,从前人们用C、C+编写的代码都能再次被应用.而Java只能从新写代码.所有领导者(学校、培训机构、带你的人)在足够的时光内都盼望新生能打下编程良好的基础.从Pascal的介绍来看,仿佛从它开始是很适合的.但是笔者是从C起步的,没学过Pascal,对程序设计的习惯以及特点一点也不比学Pascal的人差.我感到这不是语言的异同造成个人程度不同,在于拿了一门语言的书,新生是如何学编程的.不少新生可能会认为好好上课,听老师讲课,然后回来自己的电脑上把老师讲过的内容上机去试一遍,就ok了.估计连不少老师也是这样想的.笔者认为即便真有学生做得到,后果也是不好的.好比C语言把,我看过不少的C的教程的书,内容大同小异.前面几章,也就具体的讲了语言定义的根本类型.然后讲结构体什么的.C+则是讲类,继承等.这些东西,我感到上课没什么好讲的,要讲最多也就半节课.如果有必定编程基础的人,这些东西学得更快.但是笔者的经历是这些课都上了满满一个学期,还有后面某些章节是来不迭讲的.笔者可怜运,在上Java课的时候,不上机课,前面的基础类型都上了半学期了,不少学生自己连SDK都没装,终极考试就笔试过关罢了.连这种本应着手的课程还是按照传统的考察方式:卷面考试来解决.能通过高考的学生,无论是真的有料还是假的有料,相信都已经是测验强人了,对于计算机系来说,笔者认为不能全依照传统的教学模式来套,这只是闭着眼睛瞎谈话罢了.程序是具备很强的独一性的.你行就行,不行就是不行.卷面答得再好也只是吹.我信任不仅我学校,其他各大高校情况也不会差太多.这里顺便说几句感触:对于新生来说,应当自己能看清进入盘算机系跟中学时候的环境不同.中学可以专门应试,不用学一些太适用的货色(除非不读下去了,预备出来工作的).但是到了本科,如果你也只是敷衍教学,然后只是争夺拿奖学金,最后你不考研或者考不上研,那可以说你在最后一年找工作的时候首先是自己心虚.固然外面社会对本科请求不会太高,不必学生的技术像外面的技巧牛人那么高.但这不代表学生能什么技巧都不会.当初恐怕只有国企性质的企业很重视学生的成就、拿奖学金情况等等.但是不能冀望所有同窗都能顺利去国企.抉择编程语言也是比较主要的一个环节,这就看新生个人的兴致在哪.比方有人爱好黑客,那么它可能就适合学C,以及各种脚本.有人只喜欢网络编程,那么兴许他取舍Java或C#就比拟合适.假如有人想成为很好的windows编程,那么VC+、.Net编程也许是一个不错的挑选.语言不在于多,pps论坛,而在于精.如果只学了一点就换语言,那不如不要学了,去打游戏,找人聊天更好.数据结构:这是编程最基本的课了.可以说是否学好编程的一个原因在于你有没学好数据结构.注意,没学数据构造的,未必编不好程.如果学生只是每节课听老师讲结构.然后懂得了就完的话,数据结构是不会学好的,别认为考了个9X分就愉快.说不定比考了60分的学得还差.按照笔者的阅历.一个班里不少的人,估量一个学期上完了,连个链表如何用语言实现都不懂.对数据结构,新生用什么语言来实现,这个无所谓.只有你会用某种语言,就行了.学编程有一点是很重要的,就是学会看别人代码.从代码中看懂别人的用意.这样,可以疾速学到各种技能,提高本身的编程才能.不少新生可能会碰到一个比较广泛的问题,就是以前编过的东西会忘却,以后再要写同样的功效代码的时候,就忘了.我以前也常常遇到.我以为应该理解把你写的代码保留起来或封装起来.以后要用的时候可以

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论