- 1、本文档共38页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
程序语言设计问题任何能描述算法及数据结构的标记可以构成
第一部分 程序语言设计问题
任何能描述算法及数据结构的标记可以构成一种程序语言;但是我们的主要兴趣集中在那些在计算机上实现的语言,其目的是研究语言的特征,这些特征独立于任何特定语言,并从广泛的常用语言中给出实例。
1.1为什么学习程序语言?
已经有数百种不同的程序语言被设计出并实现了。甚至早在1969年,萨密特[SAMMET1969]就列举了120种广泛使用的语言,而从那以后,又有许多语言产生了。然而,绝大多数程序员从不冒险使用多种语言,不少人仅完全使用一两种来完成编程。事实上,实际的程序员工作的电脑上安装使用的仅仅是必需的特殊语言如Java,C、Ada、或FORTRAN。这样,学习了各种各样不同但又可能永远用不上的语言又能使你得到什么呢?
只要你能穿透对语言特征的肤浅认识并深入到设计概念的基础及语言实现的实效上,那将有许多理由进行这一学习。可以立即找到六个基本理由如下:
加强你设计高效算法的能力
许多语言都有这样的特点:当程序员能正确使用它们时,将十分有益;但如果运用有误,则会浪费大量的机器时间或将程序员引入耗时的逻辑错误中。即使是一位运用某一程序语言已有多年经验的程序员也不能保证他已经理解了该语言的全部特征。递归就是一个典型的例子,当正确地运用这个简单的编程技巧时,它会允许精致而高效的算法直接实现。但如果不能正确使用,它就会产生天文数字般增长的执行时间。对那些对递归引起的设计问题及实现上的难度一无所知的程序员而言,他们可能会尽量避开这有些神秘的结构。但是,如果有递归的原则及其实现基础的基本知识的话,程序员就能理解在特定的语言中递归运算的相对代价;而从这种理解出发,他就能够决定在特殊编程环境中,递归的使用是否可靠。
提高你对现存程序语言的运用能力
通过理解语言是如何实现那些特征,你将极大地增强写出高效程序的能力。例如,了在你使用的语言中,数据结构如数组、串、表或记录是如何创建和操作的,知道了递归的实现细节或了解了对象类的构造将会使你能编写出包含这些结构的高效的程序。
增加你的有用程序结构词汇表
在思考时,语言既提供了帮助,但同时又是一种限制。人们用语言来表达思想,但语言也以人们思考的结构出现;就某种程度而言,人们很难用无法直接以语言表达的方式进行思考。非常类似的,单一的程序语言也会有相似的限制效果。为了找到适合问题求解的数据与程序结构,程序员往往只会考虑那些他非常熟悉而且可以立即表达出来的结构。借助学习在广泛的语言范围内所提供的结构和这些结构的实现方式,一个程序员就能增加他的程序“词汇量”。对实现技术的理解尤为重要,因为为了使用在某种程序语言中未能直接提供的结构,程序员需要根据这种语言真正提供的基本元素来自己实现这些结构。例如,子程序控制结构协同程序在许多语言中十分有用,但是极少有语言直接提供协同程序特征。一个c或FORTRAN程序员可能准备设计一个使用协同程序结构的程序;如果他熟悉协同程序概念及其实现的话,他就能够用c或FORTRAN程序来实现它们;而这样做的结果是能在一个大型程序中提供正确的控制结构。
允许你对程序语言有更好的选择
当条件有所发展时,对各种语言的知识将允许你针对特定的计划选择正确的语言,以减少所需的编程量。例如,本书第二部分描述的各种语言是为不同的应用而分别设计的。需要大量数学计算的应用可以用C、FORTRAN、或Ada语言轻松地设计出。而在决策领域有用的应用,如人工智能的应用,用LISP、ML或Prolog编程将更轻松些。如果对每种语言的强项和弱点的基本特征有所了解,则程序员对编程将有广泛的选择。
让你更轻松地学习新语言.
一个语言学家,通过对自然语言结构基础的深刻认识,在学习一门新外语时,往往比连对自己母语结构也几乎一无所知的勤奋的初学者要轻松而快速锝多。类似地,对各种程序语言构造和实现技术有完整认识的程序员在需求提高时学习一种新的程序语言也会容易得多。
让你更轻松地设计出一种新语言.
极少有程序员曾把自己当做语言设计师,然而任何程序均有一个用户界面,事实上这种界面也就是程序语言的一种形式。用户界面包含了提供给用户用来与程序联系的命令和数据形式。一些大型程序,如文本编辑器,操作系统或一个图形包的用户界面设计者往往必须考虑许多与一般程序语言相同的问题。如果程序员对一般程序语言的各种构造与实现方法都很熟悉的话,程序设计的这些方面将会简化。
很明显,学习程序语言远非粗略地浏览它们的特征那么简单。事实上,许多特征的相似性都是假的。同一种特征在两种不同的语言中可能是以截然不同的方式实现的,这样在两个版本中其实现代价会有很大差异。例如,几乎每一种语言均会提供附加操作作为基本实现,但这些附加操作的执行代价在C,COBOL或Smallt
您可能关注的文档
- 磨床齿轮加工机床.ppt
- 磨料的选用.ppt
- 示波器的使用doc.doc
- 示波管示波器及其应用.doc
- 磨削实训32砂轮及磨削方法.ppt
- 示范性幼儿园老师实习报告共6篇.doc
- 社交测量给新使用者的提示pps.ppt
- 社会学实习报告居委会.doc
- 社会公共服务卡技术规范doc.doc
- 社会实践急救中心心得.doc
- 2024-2025学年安徽省亳州市涡阳县高二下学期2月开学考试政治试题(解析版).docx
- 2024-2025学年江西省赣州市上犹县高二下学期开学考试政治试题(解析版).docx
- 2024-2025学年山东省济宁市高二下学期开学考试政治试题(解析版).docx
- 2024-2025学年山西省卓越联盟高三下学期2月开学质量检测政治试题(解析版).docx
- 2024-2025学年新疆乌鲁木齐市高二下学期2月开学考试政治试题(解析版).docx
- 2024-2025学年新疆维吾尔自治区乌鲁木齐地区高三2月大联考文科综合政治试题(解析版).docx
- 2024-2025学年安徽省蚌埠市固镇县高一上学期1月期末考试政治试题 (解析版).docx
- 2024-2025学年江苏省扬州市高三上学期期末检测政治试卷(解析版).docx
- 2024-2025学年江西省吉安市高三上学期期末教学质量检测政治试题(解析版).docx
- 2024-2025学年山东省济宁市高二上学期1月期末考试政治试题(解析版).docx
文档评论(0)