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