第15章程式语言.ppt_第1页
第15章程式语言.ppt_第2页
第15章程式语言.ppt_第3页
第15章程式语言.ppt_第4页
第15章程式语言.ppt_第5页
已阅读5页,还剩115页未读 继续免费阅读

下载本文档

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

文档简介

第15定款式语言、正殿的重点、15-1程序语言是15-2程序语言的发展15-3程序语言的类型15-4有名的程序语言的概要15-5程序的设计和开发过程、15-1程序语言是计算机用户的“yy程序做yy” ”能够发挥各种各样功能的应用程序是如何制作出来的呢? 简而言之,程序员(Programmer )用编程语言写的。 另外,“程序语言”用于帮助计算机或者人们解决问题,并且计算机硬件或者问题必须教导程序(软件)计算机将做什么。 程序语言可以说是控制计算机如何工作的语言,并且诸如通常已知的汇编语言、BASIC、c、c、Java等各种程序语言正在信息行业中出现,以满足各种需求并解决各种类型的问题。 在这里,为什么存在这么多不同的程序语言,详细说明其不同之处。 15-2程序语言的发展,如果不考虑一百多年前的分析仪(AnalyticalEngine,参照第1章),最初的程序语言的出现距今只有半个多世纪,仅仅50年,就已经发展了很多程序语言的种类。 程序语言的最简单的分类方式,按照“抽象化”的程度分为高级语言(High-LevelLanguage )、低级语言(Low-LevelLanguage种,对程序语言的发展进行简单介绍。 程序语言的发展,15-2-1第一代:机器语言是程序“代码”15-2-2第二代:汇编语言15-2-3第三代:高级语言15-2-4第四代和第五代语言,第一程序员: AdaLovelace, 第一章叙述了19世纪CharlesBabbage设计和制作了首台叫做计算机的分机号码,当时还没有完成,CharlesBabbage设计了更加复杂的分析仪。 当时意大利机械学家LuigiFedericoMenebrea发表了用法语描述分析仪的功能和理论的论文,CharlesBabbage和他合作的AdaLovelace先生(AugustaAdaKing,Lovelace伯爵,通称AdaLovelace,AdaLovelace ) 第一位程序员: AdaLovelace,Ada除了翻译外,还添加了超越原文的文章注释(Note ),在这些注释中,Ada提出了许多关于编程的基本理念,并编写了使用分析仪计算“白努力数”(BernoulliNumbers )的方法她的成就,后来称她为第一个计算机程序员,美国国防部也在1980年正式将他们开发的编程语言命名为Ada语言并加以纪念。 第一位程序员: AdaLovelace,15-2-1第一代:机器语言,对于计算机来说,其实只知道一种语言,就是机器语言。 所谓机械语言,是用特定的数字来表示实际上能够在计算机上进行的各个动作的语言,这些数字被称为机械代码(MachineCode )或机械语言。 例如,把计算机比作只知道数字命令的机器人,0是向前一步,1是向前一步,2是向左90度,3是向右90度。 第一代:在机器语言中,命令这个机器人先走三步,然后右走三步,就必须发出“0003000”的命令。 电脑一看到这个数字,就会做出数字表示意义上指定的动作:第一代:机械语言,大家都相信要发现,用数字控制机器人是很困难的。 我们记住数字所表示的动作后,可以组合一系列的数字来表现机器人应该做的工作。 但是,上述机器人的例子简化了机器语言的复杂性。 CPU只能接受预定义的指令集。 而且,这些指令只是基本的计算和控制动作,为了使计算机进行简单的动作,可能需要多个指令。第一代:以机械语言、当前电脑通用的x86系列CPU为例,计算“3-1”的减法运算时,必须将数字3保存在堆栈(参照2-2-1节)中后再进行计算。 第一代:机器的语言,谁都懂。 用这个数字表达的语言,不适合人读。 因此,马上意识到用这种方法写程序很麻烦,很麻烦。 我开始思考如何更友好地写程序。 关于程序“代码”,在编程领域,经常能听到代码和源代码这样的名词。 “代码”是由英语代码翻译而成,本来是指机器语言的数字。 用各种高级语言(详细)编写的程序虽然已经脱离了用数字编写的程序的形式,但由于Code一词至今仍在使用,用任何程序语言编写的原始程序都可以称为代码或源代码。 另外,15-2-2第二代:汇编语言使用以0、1汇编的机器语言编写程序是非常不方便的,因此可以用易于学习和记忆的助记符(Mnemonic ),即汇编语言替换这些机器代码。 以上述的机器语言程序为例,将数据从哪里移动到哪里用英语单词Move的最初的三字MOV表示,另一方面,将数值减去1时,由于用Decrease的最初的三字DEC表示,所以用组合语言写入上述程序如表15-2所示。 第二代:汇编语言,第二代:汇编语言,汇编语言程序必须转换为微处理器实际能够理解的机器语言代码,才能使计算机运行。 将汇编语言程序转换为机器语言程序的动作称为汇编翻译,将汇编语言代码转换(翻译)为机器代码的工具称为汇编编译器(Assembler )。 第二代:汇编语言使用助记符代替原始数字代码,改善了原始机器代码编写的程序中的许多不便和错误,但汇编语言编写的程序存在很大缺点:编程人员应该是微处理器体系结构、组合例如,表15-2中的程序表示AX堆栈(AL表示16位AX堆栈的低级元组),换句话说,至少微处理器的哪些堆栈可用于编写程序的语言。 如果需要识别每个堆栈功能的程序访问外围设备,则需要了解如何通过BIOS或特定I/o端口(I/o端口)向输出设备发送数据,以及如何从输入设备检索数据。 第二代:语言结合,第二代:语言结合,微处理器体系结构,计算机硬件体系结构完全理解后编写程序,是引擎结构、 理解驱动系统之后再学习驾驶,在了解无线原理和将声音转换为无线的代码方式之后,用手机打电话,对汽车和手机的普及是很大的障碍。 同样,汇编语言提高了编程阈值,从而限制了计算机的普及。 此外,使用汇编语言编写程序还存在以下缺点。 第二代:汇编语言使用的助记符仍然代表微处理器,因此从微处理器的角度考虑问题,开发程序非常不方便。 不同的基于硬件的微处理器具有不同的机械代码。 例如,一般电脑使用的IntelPentiumCPU和升阳(Sun )公司的SPARCCPU机械语言不同,组合语言也不同。 为了使程序能够在其他计算机上运行,需要改写程序。 15-2-3第三代:无论是机械语言还是组合语言,高级语言都是以程序的记述或计算机能够进行的最基本的动作为步骤,因此这两种语言被称为低级语言。 人们为了用更接近人类的想法写程序,有所谓的高级语言。 最初被广泛使用的高级语言是1950年代开发的Fortran(FormulaTranslator )语言,之后COBOL、BASIC、Pascal、c等多种语言像雨后春笋般出现。第三代:高级语言、高级语言中有专门针对特定用途而设计的语言,也有专门针对通用性而设计的语言,但由于语言各有优缺点,因此可分别适用。 另外,因为对语言的喜好也因人而异,所以至今仍有相当多的语言存在,我们也可以选择很多程序语言。 第三代:上位语言、上位语言和下位语言之间最显着的差异是,上位语言多用接近英语的语法写成,学习难度低,写作也不容易出错。 例如,以下的基本语言程序的片段即使没有学习基本语言的人也可以推测其意思。 第三代:高级语言,第三代:高级语言,图15-6的基本程序简单。 请输入用户的姓名和年龄,用户用几岁的英语在画面上输出。 程序中的INPUT、PRINT被称为关键词和预约语,INPUT是“取得输入”的意思,PRINT是“印刷”的信息。 因为每种程序语言的功能都不同,所以有不同的关键词和预约词,多数情况下会取得和英语单词相同的意思。 例如,在很多语言中都有IF这个关键词,在“如果”的意义上,通过这个词可以设计“购买的商品超过5分的话就变成8成”等程序。 第三代:上位语言,上述程序段中出现的age%、Name$被称为变量,在上位程序语言中,通过薯由变量这种比较抽象的数据表现,编程者不需要像写下位语言程序时那样自己操作寄存器或存储器地址,因此是硬件第三代:高级语言会降低程序的运行性能,即使程序写入阈值降低。 一般来说,使用高级语言编写的程序比使用组合语言编写的程序执行性能差。 但是,由于编译器(详细内容将在后面介绍)的改进以及硬件速度的快速增长,差异越来越小,并且可能被忽略,因此目前,汇编语言仅在性能要求特别高的程序中使用。 用高级语言写的程序和组合语言一样,为了成为计算机认识的机器语言来执行需要被翻译的动作。 上位语言翻译的动作分为编译和解读两类。 第三代:高级语言、编译程序库直译程序语言种类与执行方式的关系,编译方式是指从头到尾读取程序整体,将其内容转换为计算机识别的机器代码的方式。 这就像是翻译文章,把整篇文章从头读到尾,再把它全部翻译出来,让读者读。 只要翻译一遍文章,以后任何人都需要阅读,不必再重新翻译,就可以直接阅读翻译后的版本。 但是,相对来说,在第一次想读之前,翻译者的翻译结束必须要花费时间。 编译器也是如此。 编译需要一点时间,编译完成后可以随时运行。 编译、编译所使用的工具称为编译器,编译器将以高级语言编写的程序转换为机器代码。 编译、高级语言程序编译时会生成机器代码,编译的产物称为“目标代码”(ObjectCode )或“目标文件”(ObjectFile ),而不是通常可立即执行的“可执行文件”(Excutable ) 这是因为在高级语言的程序中,多使用他人或自己预先写的其他程序(程序库等),所以编译程序后,如果不用链接器链接我们的程序的目标代码和其他程序的目标代码,就实际执行另外,由于每台计算机的机器语言不同,例如,通常使用的x86个人计算机(PC )和上行工作站(SunWorkstation )的机器语言不同于编译和编译。 因此,要在不同的计算机上运行相同的程序,必须使用专门为该计算机设计的编译器来翻译适合该计算机的计算机代码。 程序库的写入目的和用途各不相同,但所有程序都具有重复的功能是不可避免的。例如,浏览器、电子邮件软件、在线聊天程序各自的功能不同,但是已知这些程序需要经由TCP/IP协议向网络发送数据或接收数据的功能。 如果开发浏览器、电子邮件软件和在线聊天程序的程序员必须自己编写相同的程序,那么软件产业就太低效了,我们今天不能利用这么多的应用程序。 为了避免“重复发明车轮”(renventoentthewheel )的困境,函数库的许多程序语言预先设计了常用的程序功能,使得编程人员能够直接编写“呼叫”,因此每个人都具有相同的功能类型这些预先写出的程序有时根据编程语言而被称为子程序(Subroutine ),或者函数(Function ),或者过程(Procedure )等。 库,这些创建的程序被预编译,其目标代码存储在库(FunctionLibrary )中,有些库像c语言那样处理输出/输入、数学、时间等多种功能。 如果我们的程序需要计算某个数的平方根,则无需设计自己计算平方根的程序,只需将该数作为参数调用函数库中的sqrt ()函数,函数就会自动将计算结果返回给我们的程序。 库、(a )程序调用库内的函数时,库、(b )程序的目标代码需要链接库生成可执行文件的库、库、程序语言本身的库,除此之外,软件供应商也提供库例如,Microsoft公司提供了设计Windows应用程序所需的库,以便轻松创建Windows应用程序(否则,所有编写Windows程序的人都需要自己编写显示“窗口”的程序) 在具有这种特定功能的库中,也称为应用程序开发接口(API、applicationprogramminginterface ),例如Windows应用程序的设计中使用的库是WinAPI、WinAPI 库、提供API是操作系统或其他应用程序,我们的程序只需调用提供的API就能执行功能。 直译、直译式的做法和编译式有很大的不同。 直译式在每次用直译器(也称为Interpreter、解释器)读取程序中的句子时,都会翻译成机器代码并执行,这样一边读取程序一边继续执行程序。 这就像参加国际会议时的当地翻译,发表者一说话,翻译就马上给我们翻译听。 直译、同期翻译的好处是,发表者说出第一句话后,翻译开始,不必等发表者的发言结束。 但是,相反,翻译人员实时完成了翻译,如果需要再听一遍的话,就必须从最初开始委托翻译人员进行翻译。 直译式的原理也是如此,每次执行时必须启动解释器,加载原始程序并逐渐解读、执行。 此外,由于未保存任何翻译结果,因此稍后运行同一程序时,请

温馨提示

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

评论

0/150

提交评论