- 53.00 KB
- 2022-08-30 发布
- 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
- 网站客服QQ:403074932
计算机概论论文学院:信息科学与工程学院年级专业:姓名:学号:完成时间:2015年1月6日\n一、序论1、论题:了解程序设计语言的发展及应用2、写作意图:在大体上把握程序设计语言的基本情况。3、内容提要:在第一节C语言课时老师曾说过,人与人的交流靠的是语言。那么人若想和机器交流,就要掌握机器能懂的语言,那就是程序设计语言。程序设计语言能够实现人与计算机的交流,指挥计算机进行复杂的工作。本文由此出发,对程序设计语言进行概述,其中包括各类程序设计语言的特点及应用,还有程序设计语言的发展趋势,对程序设计语言进行整体的把握。4、关键字:计算机程序设计语言二、本论(一)、程序设计语言概述1、机器语言的特点从年代表来看,机器语言属于最早的程序设计语言,即第一代计算机语言。美国普林斯顿大学的冯·诺依曼于1945年提出计算机体系结构设计思想。计算机从1946年问世至今都是以这种思想为基本依据的。其中很重要的一个思想就是二进制。计算机的内部电路是由开关和其他电子器件组成,而这些器件只有两种状态,即开或关。一般情况下,“开”状态用1表示,“关”状态用0表示,计算机所使用的是由“0”和“1”组成的二进制数,二进制是计算机语言的基础。所以,计算机语言就是一串串由“0”和“1”组成的指令序列,然后交由计算机执行。计算机语言又称面向机器的语言或低级语言,是计算机在发展早期唯一的程序设计语言。\n类似与“1011010100000000”的一串代码被称为指令,一条指令就是机器语言的一个语句,它是一组有意义的二进制代码。指令的基本格式如:操作码字段+地址码字段,其中操作码指明了指令的操作性质及功能,地址码则给出了操作数或操作数的地址。通过多个“0”和“1”可组成各种排列组合,通过线路变成电信号,让计算机执行各种不同的操作。机器语言的一个很大的优点是它可以直接被计算机识别,不需要进行任何翻译。虽然大多数其他的语言可以既可被编译又可被解译,但大多数只在一种情况下能够良好运行。在一些编程系统中,程序要经过几个阶段的编译,一般而言,后阶段的编译往往更接近机器语言。机器语言具有灵活、直接执行和速度快等特点。由于使用的是针对特定型号计算机的语言,因此,机器语言的运算效率是所有语言中最高的。但是,用机器语言编写程序,编程人员要首先熟记所用计算机的全部指令代码和代码的涵义。手编程序时,程序员得自己处理每条指令和每一数据的存储分配和输入输出,还得记住编程过程中每步所使用的工作单元处在何种状态。这是一件十分繁琐的工作,编写程序花费的时间往往是实际运行时间的几十倍或几百倍。而且,编出的程序全是些0和1的指令代码,直观性差,还容易出错。总结说来,缺陷如下。一,繁琐;二,可靠性差;三,难以理解;四,可读性差;五,可移植性差。所以现在,除了计算机生产厂家的专业人员外,绝大多数的程序员已经不再去学习机器语言了。2、汇编语言的特点汇编语言也是利用计算机所有硬件特性可以直接控制硬件的语言,又称符号语言。汇编语言是在20世纪50年代,数学家Grace\nHopper发明。在汇编语言中,使用助记符代替操作码,用地址符号或标号代替地址码。采用符号来代替机器语言的二进制码,把机器语言变成了汇编语言。使用汇编语言编写的程序,机器不能直接识别,还要由汇编程序或者叫汇编语言编译器转换成机器指令。汇编程序将符号化的操作代码组装成处理器可以识别的机器指令,这个组装的过程称为组合或者汇编。因此,有时候人们也把汇编语言称为组合语言。有了汇编语言,编写程序有了很大的进步。汇编语言优点颇多,能够直接访问与硬件相关的储存器或I/O端口;能够不受编译器的限制,对生成的二进制码进行完全的控制;能够对关键码进行更准确的控制,避免因线程共同访问或者硬件设备共享引起的死锁;能够根据特定的应用对代码做最佳的优化,提高运行速度;能够最大限度的发挥硬件的功能。尽管如此,汇编语言依然存在局限性。编写的代码非常难懂,不好维护;很容易产生bug,难以调试;只能针对特定的体系结构和处理器进行优化;开发效率很低,时间长且单调;编写的程序仍然依赖于机器。这些问题值得注意。2、高级语言的特点高级语言属于第三代程序设计语言,比起前面的两种更加简单易用。在高级语言下,其语法和结构更类似普通英文,远离对计算机硬件的直接操作,不必关心机器的具体实现,一般人经学习后都可以编写程序。它允许用英文写解题的计算程序,程序中所使用的运算符号和运算式子,都和我们日常用的数学式子差不多。高级语言容易学习,通用性强,书写出的程序比较短,便于推广和交流,是很理想的一种程序设计语言。高级语言发展于50年代中叶到70年代,有些流行的高级语言已经被大多数计算机厂家采用,固化在计算机的内存里。\n高级语言并不是特指的某一种具体的语言,而是包括很多编程语言,如目前流行的java,c,c++,C#,pascal,python,lisp,prolog,FoxPro,VC,易语言,中文版的C语言习语言等等,这些语言的语法、命令格式都不相同。其中就包括我们正在学习的C语言和即将接触的C++。从我们近期的初步学习来看,高级语言对于初学者还是比较容易掌握的。这就体现了它的优越性。程序设计语言从机器语言到高级语言的抽象,带来的主要好处有:高级语言接近算法语言,易学、易掌握,一般工程技术人员只要几周时间的培训就可以胜任程序员的工作;高级语言为程序员提供了结构化程序设计的环境和工具,使得设计出来的程序可读性好,可维护性强,可靠性高;高级语言远离机器语言,与具体的计算机硬件关系不大,因而所写出来的程序可移植性好,重用率高;由于把繁杂琐碎的事务交给了编译程序去做,所以自动化程度高,开发周期短,且程序员得到解脱,可以集中时间和精力去从事对于他们来说更为重要的创造性劳动,以提高程序的质量。(二)、各类程序设计语言的应用1、过程化语言用于将算法表示成命令过程化语言又称为命令式语言或强制性语言。过程化程序设计语言即第三代程序设计语言,指需要由编写程序的人员一步一步地安排好程序的执行过程的程序设计语言。它采用与计算机硬件执行程序相同的方法来执行程序,实际上是一套指令,这些指令从头到尾按一定的顺序执行,除非有其他指令强行控制。一句话来说,过程化语言就是将算法表示成命令的序列。\n过程化语言中的每条指令只能是如下两种情况的一种,一是操作数据项;二是控制下一条要执行的指令。且不同的过程化语言有各自不同的特点。例如C语言,具有一些低级指令,简洁高效,已被ANSI和ISO标准化;Ada语言,具有并行处理能力;COBOL语言,能快速访问,更新数据库,能生成大量报表,方便的格式化输出;Fortran语言,高精度运算,复杂数据的处理能力,指数运算等。2、函数式语言用于一系列输入到输出的映射用函数式语言设计程序实际上就是将预先定义好的“黑盒”联结在一起,每一个“黑盒”都接收一定的输入并产生一定的输出,通过一系列输入到输出的映射,实现所要求的输入和输出的关系,“黑盒”又称为函数,这也是被称为函数式程序设计的原因。函数式语言可以实现两个功能,定义一系列基本函数,可供其他任何需要者调用和允许通过组合若干个基本函数来创建新函数。其优点体现在:它的形式化基础;通过增加额外的可重用功能,它们很容易被扩展;统一的程序设计隐喻,从而每件事都是一个函数;较高级的结构体(函数的函数)容易表达;支持多态性类型(像ML一样)或完全风格的类型自由(像Lisp)一样。下面也列举出一些函数式语言及其特点。F#,基于微软.NET语言提供运行环境;LISP/Scheme,受λ演算影响,语法语义极度精简;Erlang,能应对大规模并发活动的编程语言和运行环境;Haskell,纯函数式程序语言,没有函数副作用。3、逻辑式语言适用于人工智能这样的特定的知识领域\n逻辑式语言又称为声明式语言或说明性语言。它依据逻辑推理的原则回答查询,该语言解决问题的基本算法就是反复的进行归结和推理。逻辑程序设计的基本观点是程序描述的是数据对象之间的关系,它的抽象层次更高而不限于函数(映射)关系。关系也是联系,对象和对象,对象和属性的联系就是我们所说的事实。事实之间的关系以规则表述,根据规则找出合乎逻辑的事实就是推理。因此,逻辑程序设计范型是陈述事实,制定规则,程序设计就是构造证明。程序的执行就在推理,和传统程序设计范型有较大的差异。比较著名的就是prolog。Prolog语言是20世纪70年代在法国开发出来的,prolog系统中的程序全部是由事实和规则组成,程序员的工作就是开发事实和规则的集合,这个集合可以描述所以的信息。基于逻辑式语言的特点,要求程序员必须掌握和学习相关主题领域的知识,同时还应该掌握如何在逻辑上严谨地定义准则,才能使得程序可以进行推导并产生新的事实。3、面对对象语言用于定义对象并将操作应用于对象面向对象语言是一类以对象作为基本程序结构单位的程序设计语言,指用于描述的设计是以对象为核心,而对象是程序运行时刻的基本成分。语言中提供了类、继承等成分。面向对象语言借鉴了20世纪50年代的人工智能语言LISP,引入了动态绑定的概念和交互式开发环境的思想;始于20世纪60\n年代的离散事件模拟语言SIMULA67,引入了类的要领和继承,成形于20世纪70年代的Smalltalk。面向对象语言的发展有两个方向:一种是纯面向对象语言,如Smalltalk、EIFFEL等;另一种是混合型面向对象语言,即在过程式语言及其它语言中加入类、继承等成分,如C++、Objective-C等。面向对象语言刻画客观系统较为自然,便于软件扩充与复用。有四个主要特点:⑴识认性,系统中的基本构件可识认为一组可识别的离散对象;(2)类别性,系统具有相同数据结构与行为的所有对象可组成一类;(3)多态性,对象具有惟一的静态类型和多个可能的动态类型;(4)继承性,在基本层次关系的不同类中共享数据和操作。其中,前三者为基础,继承是特色。四者(有时再加上动态绑定)结合使用,体现出面向对象语言的表达能力。典型的面向对象语言一般认为,较典型的面向对象语言有:SIMULA67,支持单继承和一定含义的多态和部分动态绑定;Smalltalk支持单继承、多态和动态绑定;EIFFEL,支持多继承、多态和动态绑定;C++,支持多继承、多态和部分动态绑定。Java,支持单继承、多态和部分动态绑定。五种语言涉及概念的含义虽然基本相同,但所用术语有别。基于类的面向对象语言基于类的面向对象语言是面向对象世界里的主流。它包括:Simula,第一个面向对象语言Smalltalk,第一个支持动态类型的语言C++,它的大部分基于类的特性继承自Simula.等等。与基于类的语言相对应的是基于对象的面向对象语言。这里“基于对象”的概念和把VisualBasic叫做基于对象的概念是不同的。这里的“基于对象”是指一个只以对象为中心,没有类的概念的语言,类似Python之类的语言。 3、专用语言适合于特殊的任务\n近十几年来,随着internet网络的发展,出现了一些更适合网络环境下的程序设计语言,这些语言或者属于上述的某一种类型的语言,或者属于上述多种类型混合的语言,适合于特殊的任务。如HTML,PHP,Perl和SQL等。下面也介绍一些专用语言的特点。HTML是标记式文本,一个文件表示一个网页;Perl主要适合于UNIX系统;PHP在服务器端运行,向客户端发送一个HTML网页;SQL不需要编写对数据库操作的算法。(三)、程序语言的发展趋势1、智能化智能化指在软件开发工具的研究与使用中引用人工智能、神经网络等技术,使得软件开发工具对于不确定的信息、模糊信息具有更强的处理能力。智能化技术在其应用中主要体现在计算机技术,精密传感技术,GPS定位技术的综合应用。随着产品市场竞争的日趋激烈,产品智能化优势在实际操作和应用中得到非常好的运用,其主要表现在:大大改善操作者作业环境,减轻了工作强度;提高了作业质量和工作效率;一些危险场合或重点施工应用得到解决;环保、节能;提高了机器的自动化程度及智能化水平;提高了设备的可靠性,降低了维护成本;故障诊断实现了智能化等。在这些应用中,程序语言起了重要的作用。2、网络化网络化将适应计算机网络技术的发展和未来的应用,这也是计算机应用领域的一个重要方向。网络化是指利用通信技术和计算机技术,把分布在不同地点的计算机及各类电子终端设备互联起来,按照一定的网络协议\n相互通信,以达到所有用户都可以共享软件、硬件和数据资源的目的。现在,计算机网络在交通、金融、企业管理、教育、邮电、商业等各行各业中,甚至是我们的家庭生活中都得到广泛的应用。目前各国都在致力于三网合一的开发与建设,即将计算机网、通信网、有线电视网合为一体。将来通过网络能更好的传送数据、文本资料、声音、图形和图像,用户可随时随地的在全世界范围拨打可视电话或收看任意国家的电视和电影。2、标准化标准化指软件的构成是由软部件等标准件组合而成的。就像工厂生产的产品,主要可以由标准零件部件组成。软件的制作针对得意某个应用领域而不是一个具体的应用。标准化是指在经济、技术、科学和管理等社会实践中,对重复性的事物和概念,通过制订、发布和实施标准达到统一,以获得最佳秩序和社会效益。三、结论程序设计语言和程序设计方法经过几十年的漫长演化和发展,越来越趋于成熟。更好的利用程序设计语言,助于互联网技术的深入发展。参考文献:【1】赵欢,《计算机科学概论》(第三版),人民邮电出版社,2014年11月第三版;【2】王晓红,《汇编语言》,清华大学出版社,2011-3-11版;\n【1】周晓聪等,《面向对象程序设计与Java语言》,机械工业出版社,2004年3月1日版;【2】李丽娟,《c语言程序设计教程》,人民邮电出版社,2013.1版;以及百度百科,百度文库等。感谢以上单位和个人!