程序设计语言概论模板课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《程序设计语言概论模板课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计语言 概论 模板 课件
- 资源描述:
-
1、1程序设计语言概论谢谢观赏2019-5-272课程目的n了解高级程序设计语言发展历史及现状 n了解高级程序设计语言的基本概念和原理n了解高级程序设计语言实现技术及原理n了解若干主要的高级程序设计语言谢谢观赏2019-5-273课程主要内容n高级程序设计语言的基本概念、原理、及实现技术n语法程序看起来像什么n语义程序的含义是什么n实现程序是如何执行的n了解求解特定问题最合适的语言,例如:nPascal, C - 过程式的,面向语句的nC+, Java, Smalltalk - 面向对象的nML, Lisp - 函数式的nProlog - 基于规则的谢谢观赏2019-5-274课程主要内容n围绕高
2、级语言程序的基本性质及构成展开n语法、语义n编码及运行n数据、处理及其抽象n数据:简单、复杂n处理:语句级(语句内及语句间)、模块级、系统级谢谢观赏2019-5-275授课方式及考核方法n授课方式:n课堂讲授为主 n考核方法:n作业占40%n期末考试占60%谢谢观赏2019-5-276参考书nTerrence W. Pratt & Marvin V. Zelkowitz, Programming Languages: Design and Implementation, 3rd Edition, Prentice Hall, Englewood Cliffs, New Jersey, 1996
3、nRobert W. Sebestaa, Concepts of Programming Languages (5th edition), 机械工业出版社,2003。n招兆铿,朱洪,程序设计语言原理,上海科技文献出版社,1998n徐家福,吕建,软件语言及其实现,科学出版社,2000谢谢观赏2019-5-277第一章 程序设计语言研究谢谢观赏2019-5-278主要内容n程序设计语言的定义及其特征n为什么研究程序设计语言n程序设计语言的评价n程序设计语言简史n代表性语言n程序设计语言的角色n影响语言的主要因素n程序设计语言的范型谢谢观赏2019-5-279什么是语言 (1/4)n语言是信息交流工
4、具。有如下几种定义:1、Webster字典定义nAn artificially constructed primarily formal system of signs and symbols (as symbolic logic) including rules for the formation of admissible expressions and for their transformationn由人工构造的、基于一组记号与符号的、(基本上是)形式化的系统(如符号逻辑),包括合法表达式的形成规则和转换规则。谢谢观赏2019-5-2710什么是语言 (2/4)2、Longman字典定
5、义nAny system of signs, movements, etc., used to express meanings or feelingsn任何表情达意的记号系统。3、英汉双解计算机辞典定义(清华大学出版社)nA set of characters, conventions and rules, that is used for conveying information. The three aspects of language are pragmatics, semantics and syntaxn用于传递信息的字符、约定和规则的集合。语言的三个方面是语用、语义和语法。谢
6、谢观赏2019-5-2711什么是语言 (3/4)4、中国大百科全书,电子学与计算机卷n语言的基础是一组记号和一组规则,根据规则由记号构成之记号串的总体就是语言。5、徐家福:软件语言及其实现n语言是基于一组记号与一组规则、根据规则由记号构成之记号串的总体。任何语言均包括语法、语义和语用三个方面。谢谢观赏2019-5-2712什么是语言 (4/4)n语言的作用n描述作用、交流作用和标志作用(软件语言可作为计算技术发展的里程碑标志)n语言是人类生活的必要工具,不同的语言被使用于不同的领域和方面n在计算领域,也存在不同层次的语言,本书所论及的是实现层次的语言,即程序设计语言。n程序设计语言程序设计语
7、言=字符集字符集+规则集(用于组合字符)规则集(用于组合字符)n任何用于描述算法和数据结构的一套符号系统均可称为程序设计语言谢谢观赏2019-5-2713程序设计语言的四个基本特征1. 用户不需要具有机器代码的知识,只需学习特定的程序设计语言,并独立于任何特定的机器代码而使用。这并不意味着用户可以完全忽略实际的计算机,如:需知道浮点数的表示或使用某些机器资源。2. 程序设计语言必须有较大程度的机器独立性(完全的机器独立性)。这意味着必须有较大潜力,使得源程序可运行在具有不同机器代码的两台计算机上,不需要完全重写。3. 当源程序翻译成机器代码时,通常对每个执行单元有多个机器指令,如:A=A+B需
8、多个机器指令来实现4. 程序设计语言的记号比机器语言更接近于被求解的问题。 如:A=A+B比其机器翻译更易于理解。谢谢观赏2019-5-2714本课程研究的对象n主要考虑那些在计算机上实现的程序设计语言n术语“程序设计语言”并没有一个公认的范围定义n通常这个术语是指高级语言返回谢谢观赏2019-5-2715纯二进制机器码或符号机器码符号汇编语言宏汇编语言高级语言甚高级语言Byte或word,指令、数据不分用一些符号来代表指令,如sub代表减,Add代表加等,机器地址用十进制。有时汇编语言等同于符号机器码。变量名用符号,地址也可用符号而非数字。编制的程序称为汇编语言程序。用户可以定义新指令及子程
9、序源程序编译为目标程序,或解释执行高级程序语言的高层规约语言,提供比高级程序语言更高级的语言设施。又称为“可执行的规约语言”。有时也不区别于高级语言。计算机上语言的层次返回谢谢观赏2019-5-27161.1 为什么研究程序设计语言n两个基本观察:1.已有数百种语言被设计和实现。在1969年,Sammet就列出了当时120种相当广泛使用的语言,在此以后,又有很多语言被开发。在早期,为一个项目的进行而开发一种语言是常有的事。2.大多数程序员通常不会同时使用多种语言,一般限制到12种。事实上,都是直接使用计算机上已有的语言如C、Ada、 Fortran等。n既然如此,为什么要去研究各种不同的语言,
10、n有的语言甚至永远不可能再被使用?谢谢观赏2019-5-2717学习、研究程序设计语言的理由n不仅仅是停留于肤浅的对语言特性的了解和考虑n深入了解根本性的语言设计概念及它们对语言实现的影响谢谢观赏2019-5-2718学习、研究程序设计语言的理由 (1/6)1、提高开发有效算法的能力n很多语言提供的特性如果被合适地使用,会给程序员带来益处,但如被不合适地使用,将可能导致大量计算机时间浪费或使程序员出现耗时的逻辑错误。n有可能一个长期使用某一语言的程序员也并不理解该语言的所有特性。 谢谢观赏2019-5-2719学习、研究程序设计语言的理由 (1/6)1、提高开发有效算法的能力n如递归特性:是一
11、个非常便利的程序设计语言特性n如正确、合适使用,可得到优美和高效算法的直接实现。n如不正确使用,将可能导致执行时间的天文数字增长。n如果程序员不知道递归蕴含的设计问题和实现困难,将难于使用这种结构;对递归原理和实现技术的了解可使程序员了解在特定语言中的递归的相对代价并通过其理解确定其使用是否合适。n新的程序设计方法不断在文献中引入,如OO程序设计,逻辑程序设计和并发程序设计的使用均需要对实现这些概念的语言的详细了解和掌握。 谢谢观赏2019-5-2720学习、研究程序设计语言的理由 (2/6)2、改善对现行程序设计语言的使用方式 n通过对语言特性的实现细节的了解,可大大增加书写高效的程序的能力
12、。如:n对数据结构,诸如数组、串、表、记录等,如何被创建和操作的了解n对递归的实现细节的了解n以及对对象类如何被创建的了解n将对书写高效程序有很大帮助谢谢观赏2019-5-2721学习、研究程序设计语言的理由 (3/6)3、增加可使用的有用的程序设计结构的词汇量n语言对思维既有帮助,也有限制n人们使用语言去表达思想,但语言也控制人如何思维,用字句中没有直接表达的方式来思维是十分困难的。n在解决一个问题时,要寻找合适的数据和程序结构,通常人们首先考虑他熟悉的语言中可直接表达的结构。n研究各种语言提供的结构和这些结构被实现的方式,程序员可增加其编程词汇。谢谢观赏2019-5-2722学习、研究程序
13、设计语言的理由 (3/6)3、增加可使用的有用的程序设计结构的词汇量n对实现技术的了解非常重要。如要使用一个结构,该结构在语言中没有直接提供,程序员必须提供自己的实现(使用语言提供的基本结构)。n如子程序控制结构、协同例程(coroutine)在很多程序中有用,但很少有语言直接提供协同例程特性。nC或Fortran程序员可以设计程序来使用协同例程结构,然后将它们实现为C或Fortran程序(如果熟悉相关概念及实现)从而可以提供大型程序的正确控制结构。 谢谢观赏2019-5-2723学习、研究程序设计语言的理由 (4/6)4、更好地选择程序设计语言n对程序设计语言知识的掌握可以允许程序员针对特定
14、的项目,恰当地选取合适的语言,从而减少编码工作量。如:C、Fortran、Ada可用于数字运算,Lisp、ML、Prolog可用于人工智能应用。对每种语言的特性的长处和弱点的了解和掌握有利于程序员做出广泛而正确的选择。谢谢观赏2019-5-2724学习、研究程序设计语言的理由 (5/6)5、更易于学习新语言n对自然语言语法结构的学习和了解可使对新语言的学习更容易n对程序设计语言各种结构和实现技术的了解,也可使程序员能够在需要时更容易学习新语言谢谢观赏2019-5-2725学习、研究程序设计语言的理由 (6/6)6、更易于设计新语言n很少有程序员把自己考虑为语言设计者,然而,任何程序都有一个用户
15、界面,这事实上也是某种形式的程序设计语言,用户界面包括提供给用户用于和程序通讯的命令和数据格式。n大型程序,如文本编辑器、操作系统、图形包的用户界面的设计者,必须考虑很多存在于通用程序设计语言设计中的相同问题。n如果程序员熟悉一般程序设计语言中的结构和实现方法,则程序设计将可以大为简化。谢谢观赏2019-5-2726学习、研究程序设计语言的理由n总之,程序设计语言的研究十分重要,包括语言特性和实现技术(特别是不同结构的运行时表示技术)等主要研究内容。n理解n使用n设计和实现返回谢谢观赏2019-5-27271.2 程序设计语言简史n程序设计的历史很复杂,至今已很难于拟出一条全面清晰的发展轨迹。
16、已有各种不同的总结方式。1978年,ACM Special Interest Group on Programming Language (SIGPLAN)召开了一个会议,HOPL(History of Programming Language),专门研讨语言发展历史。n程序语言的早期发展n语言发展可追溯到1945年,德国的Konrad Zuse设计了“Plankalkul”,未实现。n1954年,Laning和Zierler开发了一个用于数学计算的高级语言,运行于M.I.T的Whirlwind上,这大概是第一个运行的编译器。它可以书写数学表达式(具有上、下标)、赋值、分叉、输入/输出、子程序
17、,并处理微分方程。谢谢观赏2019-5-2728程序设计语言简史 (1/5)n第一个广泛使用的高级语言是Fortran。nIBM的John Backus领头在50年代中期完成,初衷是解决科学及工程计算,但后也用于更多领域,甚至写编译器。该语言证明了高级语言的可行性,奠定了后来语言研究的基础。n1958年,ACM和欧洲的GAMM联合开发用于算法处理的语言IAL(International Algebraic Language),最终修改变成了Algol60(早点的版本是Algol58),Algol58和Algol60导致了很多相关的程序设计语言研究和编译技术开发的发展。在实践方面Fortran有
18、很大影响,但Algol带动了语言的理论研究热潮。n50年代中期,Remington Rand Univac的Grace Hopper及其同事设计了Flow-Matic,该语言面向商业数据处理,这是第一个面向英语的语言,并成为Cobol的主要源泉。谢谢观赏2019-5-2729程序设计语言简史 (2/5)n1959年,在DoD赞助下,组织了一批计算机制造商和用户开发了Cobol(Common Business Oriented Language),该语言在商业数据处理领域的影响甚至大于Fortran在科学计算领域的影响。n1958、1959可能是语言历史上生产率最大的两年。nM.I.T的Vict
19、or Yngve开发了Comit,这是串处理语言,用于翻译自然语言。M.I.T的John McCarthy和其学生开发了人工智能语言Lisp。Lisp至今仍在使用,Comit后来变成了Snobol(Bell电话实验室于60年代中期开发)n科学计算和数据处理是计算机早期的主要应用,语言也是如此,向跨两个领域的通用性发展。n1959-1960,System Development Corporation和Jules Schwartz在Algol58基础上开发了Jovial,这是第一次通用性尝试。谢谢观赏2019-5-2730程序设计语言简史 (3/5)n1963-1964,IBM和SHARE的一个
20、联系计划开发了第一个通用语言(跨两个领域)PL/I。nAlgol68是随后的一个大的语言计划,这是一个全新的开发,而不仅仅是升版,其主要特性是正交性,它定义了少量的基本特征和组合它们的系统规则,允许程序员定义新的数据类型及操作。n下一个大的语言计划是,1975年开始的DOD项目,目标是开发适合于嵌入式计算机系统的语言,此即Ada。1979年开始发布,1980年定稿,成为后期开发、实现和标准化的基础,Ada不仅仅是适合嵌入系统,可有更广用途。n随着交互计算系统的出版,适合交互环境的语言开始出现。n1963年,Rand Corporation的J. Cliff Shaw开发了Joss.。n1964
21、年,Dartmouth College的John Kemeny和Thomas Kurtz开发了广为流传的Basic。谢谢观赏2019-5-2731程序设计语言简史 (4/5)n针对非数值数学计算(如形式代数操作)的需要。nIBM的Jean Sammet于1962-1964开发了Formac。nMIT的Joel Moses于1970年代早期开发了Macsyma。n专用领域语言开发。n1956年,MIT的Douglas Ross为机床控制开发了APT。n其他有:ncivil engineer iy: Cogoncomputer-assisted instruction: Coursewritern
22、equipment checkout: Atlas。n19671977,在美国,在给定年度内使用的语言数大概是170种,同时,每年或每两年有2530的增减。谢谢观赏2019-5-2732程序设计语言简史 (5/5)n1978年HOPL会议,讨论的语言满足如下标准:a.1967年时已出版并被使用。b.1977年仍在使用。c.在计算领域有很大影响。n选出的语言有:nAlgol, Apl, APT, Basic, Cobol, Fortran, GPSS, Joss, nJovial, Lisp, PL/I, Simula, Snobol。n80年代的两个重要语言PASCAL(Niklaus Wir
23、th, 1968)和Ada未列入。 PASCAL在70年代后期成为非常重要的语言,特别是在计算机教学方面。返回谢谢观赏2019-5-2733代表性语言(1/3)nE.Sammet在“Programming Language: History and Future”,Communications of the ACM中列出了若干代表性语言:nAPT(Automatically Programmed Tools)n1956,第一个专用领域语言。nFortran(FORmula TRANslation)n1956,第一个广泛使用的高级语言,为大量的科学和工程人员打开了使用计算机的大门。nFlow-M
展开阅读全文