编程语言的种类及编程工具介绍.ppt
C语言程序设计,主讲教师:杜洪波,主讲教师:杜洪波,教材、参考书与课时安排,教材C程序设计(第三版)谭浩强 著 清华大学出版社(配套:C语言程序设计题解与上机指导)参考书C+程序设计 钱能 清华大学出版社C高级实用程序设计 王士元 清华大学出版社课时安排授课:64学时(理论教学56学时,课内上机8学时;C语言课程设计:2周(32学时),上机安排上机地点:综合楼机房上机时间:上机内容:随教学进度的基础训练(上机调试每次课堂作业)阶段性C编程训练要求:所有作业必须独立完成所留要求上机调试的作业必须经上机调试通过上机考勤3次缺席,按不及格处理发现上机时间上网,按缺席一次处理,课程要求,课前请做好预习上课考勤无正当理由3次缺席,将不允许参加考试保持课堂安静,头脑清醒,思维活跃认真、独立、按时完成并提交作业重视上机实践,有效利用宝贵的上机时间,编程语言的种类及编程工具介绍,主讲:杜洪波,计算机语言,机器语言汇编语言高级语言,机器语言,计算机所能识别的语言只有机器语言,即由0和1构成的代码。但通常人们编程时,不采用机器语言,因为它非常难于记忆和识别。,汇编语言,汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆.汇编源程序一般比较冗长、复杂、容易出错,汇编语言编程需要有更多的计算机专业知识.汇编语言源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快.,高级语言,高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类:解释类:Java PHP SQL等编译类:C C+C#Pascal Basic 等,解释类,执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序。,编译类:,编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(.OBJ)才能执行,只有目标文件而没有源代码,修改很不方便。现在大多数的编程语言都是编译型的,C语言,如果说FORTRAN和COBOL是第一代高级编译语言,那么C语言就是它们的孙子辈。C语言是Dennis Ritchie在七十年代创建的,它功能更强大且与ALGOL保持更连续的继承性,而ALGOL则是COBOL和FORTRAN的结构化继承者。C语言被设计成一个比它的前辈更精巧、更简单的版本,它适于编写系统级的程序,比如操作系统。在此之前,操作系统是使用汇编语言编写的,而且不可移植。C语言是第一个使得系统级代码移植成为可能的编程语言。,C语言,C语言支持结构化编程,也就是说C的程序被编写成一些分离的函数呼叫(调用)的集合,这些呼叫是自上而下运行,而不像一个单独的集成块的代码使用GOTO语句控制流程。因此,C程序比起集成性的FORTRAN及COBOL代码要简单得多。事实上,C仍然具有GOTO语句,不过它的功能被限制了,仅当结构化方案非常复杂时才建议使用。,C语言,正由于它的系统编程根源,将C和汇编语言进行结合是相当容易的。函数调用接口非常简单,而且汇编语言指令还能内嵌到C代码中,所以,不需要连接独立的汇编模块。,C语言,优点:有益于编写小而快的程序。很容易与汇编语言结合。具有很高的标准化,因此其他平台上的各版本非常相似。缺点:不容易支持面向对象技术。语法有时会非常难以理解,并造成滥用。,C语言,移植性:C语言的核心以及ANSI函数调用都具有移植性,但仅限于流程控制、内存管理和简单的文件处理。其他的东西都跟平台有关。比如说,为Windows和Mac开发可移植的程序,用户界面部分就需要用到与系统相关的函数调用。这一般意味着你必须写两次用户界面代码,不过还好有一些库可以减轻工作量。,C+,C+语言是具有面向对象特性的C语言的继承者。面向对象编程,或称OOP是结构化编程的下一步。OO程序由对象组成,其中的对象是数据和函数离散集合。有许多可用的对象库存在,这使得编程简单得只需要将一些程序“建筑材料”堆在一起(至少理论上是这样)。比如说,有很多的GUI和数据库的库实现为对象的集合。,C+,优点:组织大型程序时比C语言好得多。很好的支持面向对象机制。通用数据结构,如链表和可增长的阵列组成的库减轻了由于处理低层细节的负担。缺点:非常大而复杂。与C语言一样存在语法滥用问题。比C慢。大多数编译器没有把整个语言正确的实现。,C+,移植性:比C语言好多了,但依然不是很乐观。因为它具有与C语言相同的缺点,大多数可移植性用户界面库都使用C+对象实现。,Pascal语言,Pascal语言是由Nicolas Wirth在七十年代早期设计的,因为他对于FORTRAN和COBOL没有强制训练学生的结构化编程感到很失望,“Pascal被设计来强行使用结构化编程。最初的Pascal被严格设计成教学之用,最终,大量的拥护者促使它闯入了商业编程中。当Borland发布IBM PC上的 Turbo Pascal时,Pascal辉煌一时。集成的编辑器,闪电般的编译器加上低廉的价格使之变得不可抵抗,Pascal编程了为MS-DOS编写小程序的首选语言。,Pascal语言,在1996年,Borland发布了它的“Visual Basic杀手”Delphi。它是一种快速的带华丽用户界面的 Pascal编译器。由于不懈努力,它很快赢得了一大群爱好者。基本上,Pascal比C简单。虽然语法类似,它缺乏很多C有的简洁操作符。这既是好事又是坏事。虽然很难写出难以理解的“聪明”代码,它同时也使得一些低级操作,如位操作变得困难起来。,Pascal语言,优点:易学、平台相关的运行(Dephi)非常好。缺点:“世界潮流”面向对象的Pascal继承者(Modula、Oberon)尚未成功。语言标准不被编译器开发者认同。专利权。移植性:很差。语言的功能由于平台的转变而转变,没有移植性工具包来处理平台相关的功能。,Basic,九十年代早期微软取得了一个小巧的名为Thunder编程环境的许可权,并把它作为Visual Basci 1.0发布,其用户界面在当时非常具有新意。这门语言虽然还叫做Basic(不再是全部大写),但更加结构化。经过六个版本,Visual Basic变得非常漂亮。用户界面发生了许多变化,但依然保留着“把代码关联到用户界面”的主旨。这使得它在与即时编译结合时变成了一个快速原型的优异环境。,Basic,优点:整洁的编辑环境。易学、即时编译导致简单、迅速的原型。大量可用的插件。缺点:程序很大,而且运行时需要几个巨大的运行时动态连接库。虽然表单型和对话框型的程序很容易完成,要编写好的图形程序却比较难。调用Windows的API程序非常笨拙,因为VB的数据结构没能很好的映射到C中。有OO功能,但却不是完全的面向对象。,Basic,移植性:非常差。因为Visual Basic是微软的产品,你自然就被局限在他们实现它的平台上。也就是说,你能得到的选择是:Windows,Windows或Widnows。当然,有一些工具能将VB程序转变成Java。,Java,Java是由Sun最初设计用于嵌入程序的可移植性“小C+”。在网页上运行小程序的想法着实吸引了不少人的目光,于是,这门语言迅速崛起。事实证明,Java不仅仅适于在网页上内嵌动画 它是一门极好的完全的软件编程的小语言。“虚拟机”机制、垃圾回收以及没有指针等使它很容易实现不易崩溃且不会泄漏资源的可靠程序。,Java,Java从C+中借用了大量的语法。它丢弃了很多C+的复杂功能,从而形成一门紧凑而易学的语言。不像C+,Java强制面向对象编程 优点:二进制码可移植到其他平台。程序可以在网页中运行。内含的类库非常标准且极其健壮。自动分配合垃圾回收避免程序中资源泄漏。网上数量巨大的代码例程。,Java,缺点:使用一个“虚拟机”来运行可移植的字节码而非本地机器码,程序将比真正编译器慢。有很多技术(例如“即时”编译器)很大的提高了Java的速度,不过速度永远比不过机器码方案。早期的功能,如AWT没经过慎重考虑,虽然被正式废除,但为了保持向后兼容不得不保留。越高级的技术,造成处理低级的机器功能越困难,Sun为这门语言增加新的“受祝福”功能的速度实在太慢。,Java,移植性:最好的,但仍未达到它本应达到的水平。低级代码具有非常高的可移植性,但是,很多UI及新功能在某些平台上不稳定。Sun的官方Java页面有一些好的信息。IBM也有一个非常好的Java页面。JavaLobby是一个关于Java新闻的最好去处。,C#,为了适应.Net的各种特性,Microsoft为它量身定做了一门全新的程序设计语言C#。C#语法同样继承于C,C+,以及Java,吸收了它们的很多优点,完全面向对象,良好的内存管理,能够充分利用.Net提供的各种特性。C#在很多地方都学习了Java,语法简洁,而在很多细节上设计得很体贴程序员,与Java 相比,在跨平台方面也有一定能力,总而言之,C#简单易学,易于使用,而又功能强大,是一门值得学习的新型语言。(小插曲:C#的创始人是Anders Hejlsberg,他也是Delphi的创始人,可能是这个原因,Delphi和C#有很多相似的地方。),C/C+面对近年来Java和.NET等语言的咄咄逼人之势,我们曾经以为C/C+已经不是现代语言的“王者”了。没有想到,从调查数据来看,有近25%的程序员将C/C+作为自己第一选择语言,这个比例依然是所有语言中最高的。看来作为开发能力最强大,执行效率最高的系统级语言,C/C+仍然有着其它语言不可替代的地位。Java语言毫无质疑的占据了第二的宝座,作为IBM、SUN等大公司所力推的开发平台,如今已经在企业应用级开发中牢牢占据头把交椅的地位。J2EE服务器的成熟和大量部署,后来者要想在短时间内撼动Java的地位,难度不小。,C#语言的快速崛起,再次出乎了很多人的预料。作为微软.NET架构中头号语言明星,C#受到开发者关注,是理所当然的一件事。不过没想到C#以如此之快的速度超越了传统的主流语言VB和Delphi语言,攀上了第三的位置。C#有这样的表现,一方说明了C#语言出色的设计外,也印证软件业流传的一句话:只要微软全力以赴做一件事,任何人都不能轻视。排在四、五、六位依次是Delphi、VB和ASP。和我们的预想基本一致。这六大语言共同组成整个中国软件开发领域的主流语言,他们占据了绝大部分市场份额和应用领域。这也是目前众多开发工具厂商争夺的焦点战场。,编程工具语言,Basic语言&Visual Basic,优点(1)Basic 简单易学,很容易上手。(2)Visual Basic 提供了强大的可视化编程能力,可以让你轻松地做出漂亮的程序。(3)众多的控件让编程变得象垒积木一样简单。(4)Visual Basic 的全部汉化让我们这些见了English就头大的人喜不自禁。,Basic语言&Visual Basic,缺点(1)Visual Basic 不是真正的面向对象的开发文具。(2)Visual Basic 的数据类型太少,而且不支持指针,这使得它的表达能力很有限。(3)Visual Basic 不是真正的编译型语言,它产生的最终代码不是可执行的,是一种伪代码。它需要一个动态链接库去解释执行,这使得Visual Basic 的编译速度大大变慢。,Basic语言&Visual Basic,综述:方案一适合初涉编程的朋友,它对学习者的要求不高,几乎每个人都可以在一个比较短的时间里学会vB编程,并用VB 做出自己的作品。对于那些把编程当做游戏的朋友来说,VB 是您最佳的选择。,Pascal语言&Delphi,优点(1)Pascal语言结构严谨,可以很好地培养一个人的编程思想。(2)Delphi是一门真正的面向对象的开发工具,并且是完全的可视化。(3)Delphi使用了真编译,可以让你的代码编译成为可执行的文件,而且编译速度非常快。(4)Delphi具有强大的数据库开发能力,可以让你轻松地开发数据库。,Pascal语言&Delphi,缺点Delphi几乎可以说是完美的,只是Pascal语言的过于严谨让人感觉有点烦。综述:方案二比较适合那些具有一定编程基础并且学过Pascal语言的朋友。,C语言&Visual C+,优点(1)C语言灵活性好,效率高,可以接触到软件开发比较底层的东西。(2)微软的MFC库博大精深,学会它可以让随心所欲地进行编程。(3)VC是微软制作的产品,与操作系统的结合更加紧密。,C语言&Visual C+,缺点 对使用者的要求比较高,既要具备丰富的C语言编程经验,又要具有一定WINDOWS编程基础.综述:VC是程序员用的东西。如果你是一个永不满足的人,而且可以在编程上投入很大的精力和时间,那么学习VC你一定不会后悔的。,C+语言&C+Builder,优点(1)C+语言的优点全部得以继承。(2)完全的可视化。(3)极强的兼容性,支持OWL、VCL和MFC三大类库。(4)编译速度非常快。,C+语言&C+Builder,缺点 由于推出的时间太短,关于它的各种资料还不太多。综述:C+Builder 是好的编程工具。它既保持了C+语言编程的优点,又做到了完全的可视化。,SQL语言&Power Builder,对于一些传统的数据开发人员来说,Foxpro系列也许让他们感到更加熟悉。但是对于初学者来说,PowerBuilder也许是最好的数据库开发工具。各种各样的控件,功能强大的PowerBuilder语言都会帮助你开发出自己的数据库应用程序。,Java&Eclips,Netbeans,WebLogic,Jbuilder,Visual J+,Eclips(IBM)Eclipse是一个IBM于2001年11月推出的开放源代码框架,允许不同的开发商在同一个开发环境中兼容使用不同的工具。NetBeans(5.0)SUNJava 集成开发环境WebLogic(BEN)BEA WebLogic平台包括BEA WebLogic Server、BEA WebLogic Portal、BEA WebLogic Integration、BEA WebLogic Workshop、BEA JRockit,是开发人员用服务来支持其应用程序的一流的应用程序平台套件,