精华内容
下载资源
问答
  • 计算机程序设计语言可以分为哪三类?
    万次阅读
    2021-07-15 03:24:50

    我们知道,要使计算机按人的意图运行,就必须使计算机懂得人的意图, 接受人的命令。人要和机器交换信息,就必须要解决一个语言问题。为此, 人们给计算机设计了一种特殊语言,这就是程序设计语言。程序设计语言是 一种形式语言。语言和基本单位是语句,而语句又是由确定的字符串和一些 用来组织它们成为有确定意义的组合规则所组成。

    程序设计语言是人们根据实际问题的需要而设计的。目前可以分为三大 类:一是机器语言。它是用计算机的机器指令表达的语言;二是汇编语言。 它是用一些能反映指令功能的助记符表达的语言;三是高级语言。它是独立 于机器、接近于人们使用习惯的语言。

    在计算机科学发展的早期阶段,一般只能用机器指令来编写程序,这就 是机器语言。

    由于机器语言直接用机器指令编写程序,无论是指令还是数据, 都须得用二进制数码表示,给程序编制者带来了很多麻烦,需要耗费大量的 时间和精力。为了解决这个问题,使程序既能简便地编制,又易于修改和维 护,于是出现了程序设计语言。程序设计语言一般分为低级语言和高级语言。

    低级语言较接近机器语言,它是用由英文字母的助记符代替指令编码,用英 文字母和阿拉伯数字组成的十六进制数代替二进制数,从而避免了过去用来 表示指令、地址和数据的令人烦恼的二进制数码问题。典型的低级语言是汇 编语言。正因为汇编语言是低级语言,所以它对机器依赖性较大。

    不同的机 器有不同的指令系统,所以,不同的机器都有不同的汇编语言。

    高级语言则是独立于指令系统而存在的程序设计语言,它比较接近人类 的自然语言。用高级语言编写程序,可大大缩短程序编写的周期。高级语言 比汇编语言和机器语言简便、直观、易学,且便于修改和推广。

    目前,世界上已有许多各种各样的程序设计语言。由于计算机本身只认 识它自己的机器指令,所以对每个程序设计语言都要编制编译程序或解释程 序。编译程序、解释程序是人和计算机之间的翻译,它负责把程序员用高级 语言编写的程序翻译成机器指令。这样,计算机才能认识这程序,这程序才 可以上机运行。

    由于不同的程序设计语言有不同应用范围,至今还没有一种程序设计语 言能把所有应用包含在内。现在广为应用的几种语言中,fortran侧重科 学计算,BASIC善于人机对话,PASCAL着重结构设计,COBOL长于报表 处理。

    人们交流思想、传递信息要使用语言这个工具。

    我们要让计算机为我们 工作,也必须同计算机交流信息,同样有个语言工具问题。学习使用电子计 算机,主要的就是学习电子计算机的语言。

    全部

    更多相关内容
  • 程序设计语言 实践之路 第3版 英文原版 包含PDF,CHM,CD,源码
  • Ada 美国国防部为克服软件开发危机 耗费20年弄出来的一种表现能力很强的通用程序设计语言 广泛应用与军工产品的研发 以及嵌入式和实时系统 此外,Ada软件开发技术 嵌入式Linux C语言应用程序设计 C和指针 C陷阱与...
  • 《C程序设计语言<第2版新版>习题解答(原书第2版)》是对Brian W.Kernighan和Dennis M.Ritchie所著的《C程序设计语言<第2版新版>习题解答(原书第2版)》所有练习题的解答,是极佳的编程实战辅导书。K&R的著作是C语言...
  • C程序设计语言(第2版·新版).pdf

    热门讨论 2016-10-29 19:34:39
    C程序设计语言(第2版·新版)
  • 本pdf电子版源于《C程序设计语言_第2版》(徐宝文等译),是外国著作《The C Programming language》中文版。本电子版为完整的非扫描版,带带目录的非阉割版,代码可移植。 本书是由C语言的设计者Brian W. Kernighan...
  • C++程序设计语言(第四版 英文版)

    千次下载 热门讨论 2013-09-02 15:10:15
    C++之父的最新著作,2013年出版。书中包含C++11(0x)的内容,是学习C++新标、紧跟时代变化的第二选择(第一当然是直接看C++新标准)。目前只有英文版,且国内尚未有发行版。欢迎C++粉丝们抢先试读,请于下载后二十...
  • 计算机程序设计语言有哪些?

    千次阅读 2021-06-25 01:18:56
    计算机程序设计语言按类别来说,主要分为三类,具体的计算机程序设计语言有哪些,我们可以通过不同的分类来详细的了解其区别。计算机程序设计语言分为机器语言、汇编语言和高级语言,计算机最高开始运用的是机器语言...

    计算机程序设计语言按类别来说,主要分为三类,具体的计算机程序设计语言有哪些,我们可以通过不同的分类来详细的了解其区别。

    计算机程序设计语言分为机器语言、汇编语言和高级语言,计算机最高开始运用的是机器语言,慢慢发展成为汇编语言,如今我们能接触到的多为计算机的高级语言。

    (1)机器语言

    机器语言是用一连串的0和1表达,是计算机可以直接识别的程序语言或者指令代码,无需经过翻译,而且不同的计算机都有各自的机器语言,实现的方式也极难让我们记忆与应用,所以机器语言难以发展起来。

    (2)汇编语言

    汇编语言是用一些容易理解和记忆的字母,单词来代替一个特定的指令,虽然使用性上要高于机器语言,但同样对机器依赖性大,不同的机器有不同的指令系统,不同的机器有不同的汇编语言,在实际应用中也很难大范围的扩展开来。

    (3)高级语言

    高级语言是独立于指令系统的程序设计语言,相比以上两种计算机语言,非常的直观、易学,且便于修改和推广。针对计算机不同需求的使用,高级语言细分了多个程序设计语言,包括C语言、Java、C++、PHP、Visual Basic.NET、Python、C#、Objective-C、Swift等。目前在程序员中应用最为广泛的有Java、C语言、Python、C++和C#。

    a1c18163c7c6990a5696aacd6d9ab5e0.png

    每个高级语言都拥有不同的特点,比如:

    《Java》是一种可以撰写跨平台应用软件的程序设计语言,具有卓越的通用性、高效性、平台移植性和安全性,广泛在个人PC、数据中心、互联网、超级计算机上应用,也有着最大的开发者专业社群。

    《C语言》从流行度上来说还是最好的,在操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,所以偏大型的应用软件基本都是C语言编写的。

    《Python》是在人工智能兴起后,迅速的走进了人们的视野,在程序开发的市场占有率也逐步提升,它也是一款可跨平台的语言,运行于Python解释器上。主要用于机器学习、神经网络等人工智能领域。

    《C++》C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格。

    《C#》是一种面向对象的、运行于.NET Framework之上的高级程序设计语言,与Java有着惊人的相似,应用也较为广泛。

    计算机程序设计语言主要有以上这些,不论是从的大的分类,还是具体的细分都有了详细的介绍。

    展开全文
  • http://pan.baidu.com/s/1eQq10OU RT,现在网上找的基本都是有广告的,好在这广告很良心,还告诉我怎么删掉它……广告去掉了,现发出来分享。
  • 程序设计语言诞生  1946冯·诺依曼提出了冯·诺依曼原理:  CPU逐条从存储器中取出指令执行,按指令取出存储的数据经运算后送回。  数据和指令(存储地址码、操作码)都统一按二进制编码输入。数据值的改变是重新...

    程序设计语言诞生

            1946冯·诺依曼提出了冯·诺依曼原理:

            CPU逐条从存储器中取出指令执行,按指令取出存储的数据经运算后送回。

           数据和指令(存储地址码、操作码)都统一按二进制编码输入。数据值的改变是重新赋值,即强行改变数据存储槽的内容,所以说它是命令式的(imperative)。

            第一台按冯·诺依曼原理制成的通用电动计算机是1951年美国兰德公司的UNIVAC-1。人们就开始了机器语言的程序设计: 指定数据区编制一条条指令。由于任何人也无法记住并自如地编排二进制码(只有1和0的数字串),则用8、16进制数写程序,输入后是二进制的。

           单调的数字极易出错,人们不堪其苦,想出了将操作码改作助记的字符,这就是汇编语言,汇编语言使编程方便得多。但汇编码编的程序必须要通过汇编程序翻译为机器码才能运行。尽管汇编码程序和机器码程序基本一一对应,但汇编语言出现说明两件事,一是开始了源代码——自动翻译器——目标代码的使用方式,一是计算机语言开始向宜人方向的进程。

     

    50年代高级语言出现

     

          1954年Backus根据1951年Rutishauser提出的用编译程序实现高级语言的思想,研究出第一个脱离机器的高级语言FORTRAN I。其编译程序用18个人一年完成(用汇编语言写)。到1957年的FORTRAN Ⅱ,它就比较完善了。它有变量、表达式、赋值、调用、输入/输出等概念; 有条件比较、顺序、选择、循环控制概念; 有满足科技计算的整、实数、复数和数组,以及为保证运算精度的双精度等数据类型。表达式采用代数模型。

           FORTRAN的出现使当时科技计算为主的软件生产提高了一个数量级,奠定了高级语言的地位。FORTRAN也成为计算机语言界的英语式世界语。

           1958年欧洲计算机科学家的一个组织GAMM和美国计算机协会ACM的专家在苏黎士会晤起草了一个“国际代数语言IAL”的报告,随后这个委员会研制了ALGOL 58得到广泛支持和响应。1960年欧美科学家再度在巴黎会晤对ALGOL 58进行了补充,这就是众所周知的ALGOL 60。1962年罗马会议上对ALGOL 60再次修订并发表了对“算法语言ALGOL 60修订的报告”。由于该报告对ALGOL 60定义采用相对严格的形式语法。ALGOL语言为广大计算机工作者接受,特别在欧洲。在美国,IBM公司当时经营世界计算机总额75%的销售量,一心要推行FORTRAN,不支持ALOGL,以致ALGOL 60始终没有大发展起来。尽管如此,ALGOL 60还是在程序设计语言发展史上是一个重要的里程碑。

           1959年为了开发在商用事务处理方面的程序设计语言,美国各厂商和机构组成一个委员会。在美国国防部支持下于1960年4月发表了数据处理的COBOL 60语言。开发者的目标要尽可能英语化,使没有计算机知识的老板们也能看得懂。所以像算术运算符+、*都用英文ADD、MULTIPLY。COBOL 60的控制结构比FORTRAN还要简单,但数据描述大大扩展了,除了表(相当于数组)还有纪录、文件等概念。COBOL 60虽然繁琐(即使一个空程序也要写150个符号),由于其优异的输入/出功能,报表、分类归并的方便快速,使它存活并牢固占领商用事务软件市场,直到今天在英语国家的商业领域还有一定的地位。

           50年代计算机应用在科学计算和事务处理方面有了FORTRAN、COBOL,因而应用得到迅速发展。工程控制方面刚刚起步,仍是汇编语言的市场。1957年,美国MIT科学家McCarthy提出LISP,并把它用于数学定理验证等较为智能性的程序上。但LISP在当时只是科学家的语言,没有进入软件市场。

     

    60年代奠基性研究

     

            60年代计算机硬件转入集成电路成本大幅度下降。应用普及的障碍是语言及软件。这就促使对编译技术的研究。编译技术的完善表现在大型语言、多种流派语言的出现。

           1962年哈佛大学的K. Iverson提出APL语言。它是面向数学(矩阵)的语言。它定义了一套古怪的符号,联机使用非常简洁,深得数学家喜爱。它提出动态数据(向量)的概念。

           1962年AT&T公司贝尔试验室R.Griswold提出正文处理的SNOBOL,可以处理代数公式、语法、正文、自然语言。以后发展为SNOBOL 3,SNOBOL 4。80年代后裔叫ICON,用于测试。

           1963-64年美国IBM公司组织了一个委员会试图研制一个功能齐全的大型语言。希望它兼有FORTRAN和COBOL的功能,有类似ALGOL 60完善的定义及控制结构,名字就叫程序设计语言PL/1。程序员可控制程序发生异常情况的异常处理、并行处理、中断处理、存储控制等。所以它的外号叫“大型公共汽车”。它是大型通用语言的第一次尝试,提出了许多有益的新概念、新特征。但终因过于复杂、数据类型自动转换太灵活、可靠性差、低效,它没有普及起来。但IBM公司直到80年代在它的机器上还配备PL/I。

           1967年为普及程序语言教育,美国达特茅斯学院的J.G. Kemeny和T.E.Kurtz研制出交互式、解释型语言BASIC(“初学者通用符号指令码”字头)。由于解释程序小(仅8K)赶上70年代微机大普及,BASIC取得众所周知的成就。但是它的弱类型、全程量数据、无模块,决定了它只能编制小程序。它是程序员入门的启蒙语言。

           LOGO语言是美国MIT的S. Papert教授于1967年开发的小型语言。其目的是无数学基础的青少年也能学习使用计算机,理解程序设计思想,自己编制过程或程序。但直到80年代初微机普及到家庭它才受到重视。LOGO是交互式语言,用户编程就在终端前定义过程命令,并利用系统提供的命令构成程序。LOGO的数据是数、字、表。由于它能方便地处理符号表,可以利用人工智能成果开发情报检索、演绎推理、自然语言会话小程序。青少年可设计各种智能游戏。屏幕上的海龟使青少年直观地构造各种图形。递归程序的表达能力使青少年可受到自动程序良好训练。1979年MIT LOGO小组推出Apple LOGO,及TI LOGO(德州仪器公司TI 99/4A机)。这两个版本最为普及。LOGO是青少年入门的启蒙语言。

            LOGO的近于自然语言的命令及海龟、键盘、程序、图形并用的使用风格,对以后的命令式语言、用户界面语言有一定的影响。

           1967年挪威计算机科学家O.J. DahI等人研制出通用模拟语言SIMULA67。它以ALGOL 60为基础,为分层模拟离散事件提出了类(Class)的概念。类将数据和其上的操作集为一体,定义出类似类型的样板。以实例进入运算。这是抽象数据类型及对象的先声。

           60年代软件发展史上出了所谓的“软件危机”。事情是由1962年美国金星探测卫星“水手二号”发射失败引起的。经多方测试在“水手一号”发射不出错的程序在“水手二号”出了问题。软件无法通过测试证明它是正确的。于是,许多计算机科学家转入对程序正确性证明的研究。这时,著名的荷兰科学家E. Dijkstra提出的“goto语句是有害的”著名论断,引起了一场大争论。从程序结构角度而言,滥用goto语句会使程序无法分析、难于测试、不易修改。这时也提出了全程变量带来的数据耦合效应、函数调用的副作用、类型隐含声明和自动转换所带来的难于控制的潜伏不安全因素等等过程语言中的一些致命性弱点。60年代对大型系统软件的需求大为增长(如编制较完善操作系统、大型军用系统),要求使用高级语言以解决生产率之需,加上高级语言使用以来积累的经验,加深了人们对软件本质、程序语言的理解。人们积极研制反映新理论的语言。

           1964年,ALGOL工作组成员N. Wirth改进了ALGO 60,提出结构化的语言ALGOL W。由于它结构简洁、完美。ALGOL W成为软件教程中示例语言。1968年,他带着ALGOL W参加新一代ALGOL的研究委员会,即开发ALGOL 68的工作组。

           ALGOL 68追求的目标也是能在多个领域使用的大型通用语言。1965年以Wijngaarden为首的一批科学家开始研究新ALGOL。强调了语言设计中冗余性(少作隐含约定)、抽象性(数据抽象与控制抽象)、正交性(一个语言机制只在一处定义并与其它机制无关)。强化了类型定义和显式转换; 有并发、异常处理功能; 保留goto允许有限制的函数边界效应: 过程可以作为参数传递; 用户可定义较复杂数据结构、定义运算符。语法定义是半英语半形式化的。语言作成可扩充式,也就是说,有一个相对完备的小语言核心,可以不断增加新特征以增强语言表达能力。表达式采用利于快速编译和提高目标码效率的逆波兰表示法。ALGOL 68集中了当时语言和软件技术之大成。但因学究气太重,一般程序员难于掌握。强调语言简单的人持有不同看法。但文本草案在Wijngaarden坚持下通过了。为此,Dijkstra等人发表了“少数人声明”。N.Wirth带着竞争失败的ALGOL W回去研究以后著称于世的Pascal。Pascal的研制者一开始就本着“简单、有效、可靠”的原则设计语言。1971年Pascal正式问世后取得了巨大的成功。它只限于顺序程序设计。是结构化程序设计教育示范语言。

           Pascal有完全结构化的控制结构。为了方便,除三种最基本的控制结构(顺序、if-then=else、while-do)外,又扩充了二种(do-until、for-do)。程序模块有子程序(过程和函数),分程序,可任意嵌套,因而有全程量、局部量、作用域与可见性概念。保留goto语句但不推荐使用。

          Pascal的数据类型大大丰富了,有整、实、字符、布尔等纯量类型: 有数组、记录、变体记录、串等结构类型; 增加了集合、枚举、指针类型。为用户描述复杂的数据结构乃至动态数据提供了方便。所有进入程序的数据都要显式声明、显式类型转换。并加强了编译时刻类型检查、函数的显式的值参和变量参数定义便于限制边界效应。在人们为摆脱软件危机而对结构化程序设计寄于极大希望的时代,Pascal得到很快的普及。它也是对以后程序语言有较大影响的里程碑式的语言。

     

    70年代完善的软件工程工具

     

            硬件继续降价,功能、可靠性反而进一步提高。人们对软件的要求,无论是规模、功能、还是开发效率都大为提高了。仅管Pascal得到普遍好评,但它只能描述顺序的小程序,功能太弱。在大型、并发、实时程序设计中无能为力。程序越大越要求高的抽象力、安全性、积少成多的模块拼合功能。为了对付日益加剧的新意义上的软件危机。70年代语言继续发展,在总结PL/1和ALGOL 68失败的基础上,研制大型功能齐全的语言又一次掀起高潮。

            70年代是微机大发展的时代。设计精巧的小型过程语言藉微机普及得到发展。软件市场FORTRAN、COBOL、汇编的三分天下开始缓慢地退却。结构化FORTRAN、COBOL力图在新的竞争中保全自己的地位,专用语言丛生。一旦证实它的普遍性,它就变为通用语言。C就是在这种情况下成长起来的优秀语言。

            硬件的完善使得过去难以实施的组合爆炸算法得以缓解。人工智能的专家系统进入实用。LISP发展为INTEL LISP和MAC LISP两大分支,其他智能语言陆续推出。特别是Backus在1978年发表“程序设计能从冯·诺依曼风格中解放出来吗?”一文。非过程式语言、高抽象模式语言大量涌现。

            70年代继60年代的形式语言语法研究,形式语义取得重大成果。最先是IBM维也纳实验室集合欧洲著名的计算机科学家于1972年写出PL/1的操作语义。该语义用维也纳定义语言VDL表达,长达1500页,终因抽象层次太低,而此时(1971年)牛津大学D.Scott和C.Strachey提出了更加数学化的指称语义学,维也纳实验室转而研究PL/1的指称语义描述。1973-1978年D. Bjorner和C. Jones开发了维也纳开发方法VDM。所用语言是Meta IV。虽然巨大投资(3.5亿)未见可见效益,IBM终止了维也纳实验室的语义学研究方向,但VDM方法及指称语言学对计算机语言发展影响是深远的。1973年C.Hoare和Wirth用指称语义写Pascal语义发现了Pascal的设计上的许多问题竟做不下去。VDM以后还用于多种语言如CHILL,Ada,指导编译器的开发。

           1971-72年,DEC公司和卡内基﹒梅隆大学的Wulf合作,开发了PDP(以后是VAX)上的系统程序设计语言Bliss。它是无类型的结构化语言,没有goto语句。有异常处理和汇编接口,面向表达式。直到80年代末DEC公司还用它作系统设计。

            1972年AT&T公司贝尔实验室Ritchie开发了C语言。C语言的原型是1969年Richard开发的系统程序设计语BCPL。K.Thompson将BCPL改造成B语言,用于重写UNIX多用户操作系统。在PDP-11机的UNIX第五版时用的是将B改造后的C。C扩充了类型(B是无类型的)。1973年UNIX第五版90%左右的源程序是用C写的。它使UNIX成为世界上第一个易于移植的操作系统。UNIX以后发展成为良好的程序设计环境,反过来又促进了C的普及。

           C语言是个小语言,追求程序简洁,编译运行效率高。是一个表达能力很强的、顺序的、结构化程序设计语言。它给程序员较大的自由度,下层数据转换灵活。程序正确性完全由程序员负责。上层是结构化的控制结构,有类似Pascal的数据类型。它的分别编译机制使它可构成大程序。输入/出依赖UNIX,使语言简短。语言学家极力反对的goto语句、无控制指针、函数边界效应、类型灵活转换、全程量这些不安全的根源C全部具备。在某种意义下C得益于灵活的指针、函数副作用和数据类型灵活的解释。易读性又不好,偏偏程序员都喜爱它。因为它简洁,近于硬件,代码高效,并有大量环境工具支持。C程序写起来又短,调试起来又快。微机上的各种移植版本的C语言,对C成为通用的程序设计语言起到了推波助澜的作用。C语言正以席卷系统程序设计领域的势头发展,并向应用领域扩展。以后的发展把与它同期出现的Pascal远远抛在后面,成为系统软件的主导语言。

           1972年法国Marseille大学的P.Roussel研制出非过程的Prolog语言。Prolog有着完全崭新的程序设计风格,它只需要程序员声明“事实”“规则”。事实和规则都以一阶谓词的形式表示。Prolog规则的执行是靠该系统内部的推理机,而推理机按一定的次序执行。在这个意义上它又有点过程性。以回溯查找匹配,Prolog的数据结构类似Pascal的记录或LISP的表。它是以子句为基础的小语言,最初被解释执行,编译Prolog是很久以后的事,由于Prolog是以逻辑推理作为模型的语言,它可以直接映射客观世界事物间逻辑关系。在人工智能研究中得到了广泛的应用,80年代日本声称研制的五代机以Prolog作为主导语言并研制Prolog机。

            70年代,在传统语言中出现了以下有代表性的语言:

           为了开发大型可维护程序,施乐公司1972-74年由Geschke领导研制了Mesa语言。Mesa是强类型结构化语言,有模块(若干子程序集合)概念和抽象数据类型。支持并发程序设计,由监控器协调各模块执行。有分别编译,异常处理机制。保留goto语句,也可以抑制类型检查。Mesa可配置语言编译后的各模块。

           1974年MIT的Liskov和Zilles提出CLU语言,它突出的是数据抽象。数据抽象是70年代类型强化和抽象技术的重要成果,它允许用户定义抽象的数据类型。这些类型的定义和它的实现可显式地分开。定义描述了语义,实现对于使用该数据的用户是无关紧要的,因而,利于修改。增强模块性和独立性,从而易于保证程序正确。数据抽象可定义更远离机器而近于人类的数据概念。如堆栈就可定义为抽象数据类型。人们可通过压入数据、弹出数据的操作对栈体进行操作。其外在行为就是后进先出的数据栈,而栈体可由数组、或链表、或记录任一种数据结构实现。

           CLU的抽象数据类型称之为簇(Cluster)。由构造算子(Constructor按簇的样板建立运算对象(实例)。CLU无goto,无全程量概念。用户可定义新的迭代(通过迭代算子Iterator)。

           数据抽象在1975年卡内基﹒梅降大学Wulf和Shaw开发的ALPHARD语言中是数据模型FORM。ALPHARD的特点是支持程序的验证。程序设计和验证同时进行。

           另一个支持程序验证的语言是加州大学Poperk和加拿大的Horning于1976年到77年开发的EUCLID。为了易于验证,无goto语句,指针仅限于集合类型,类型兼容有严格的定义,函数调用绝无边界效应。编译自动生成验证用的断言。EUCLID以后发展成数据流语言。

           在并发程序方面,1975年丹麦学者B.Hanson开发了并发Pascal。它没有追求大而全,只是将Pascal向并发方面作了扩充,希望用Pascal写操作系统。有抽象数据类型的类(Class)机制。控制方面提出进程类和管程类的概念。通过init语句激活类实例,cycle语句使进程无限循环地运行。通过管程(管理资源的模块)实现进程通讯。有较强的静态类型检查,可查出静态“死锁”。

           令人不解的是正当人们对进程、管理概念充分评价时,B.Hanson本人放弃了这些概念。1981年发表了小型系统程序设计语言Edison,仅用并发语句控制并发进程的执行。Hanson极力推崇语言的简单性,所以Edison比并发Pascal小得多,普通(不大的)微机都可以运行。但其表达能力比C差多了。没有达到并发Pascal那样的影响。

          Pascal在结构化程序设计方面是一个示范性语言,在推行结构化程序设计教学上发挥了卓越的作用,但在工程实践上暴露出设计上的许多缺点。Pascal除了无独立模块和分别编译机制不能编大程序而外,原来它的强类型是有漏洞的。类型等价似乎是按名等价,实现是按结构等价。最后的结论它是“伪强类型”。数组定长对处理字符串很不方便,布尔表达式求值定义不严,I/O规定太死,难于写出灵活的输入/输出。声明顺序过严,无静态变量概念(局部量一旦所在局部块执行完毕就消失)都给程序设计带来不便。从小而灵活方面,它又不及C,没有位(bit)级操作,指针操作限制过死。于是Pascal的设计者1975年又开始开发Modula语言,1977年正式发布为Modula-2。

           Modula-2除了改进Pascal的上述弱点而外,最重要的是有模块结构。可分别编译的模块是用户程序的资源。系统资源也以模块形式出现。模块封装了数据和操作(过程),模块定义和模块实现显式分开。程序员在定义模块中通过移入,移出子句控制程序资源(类型、变量、过程、子模块)的使用。

           Modula-2增加了同步进程机制以支持并发程序设计,有有限的低级设施直接和系统打交道。取消goto语句、增加case语句中otherwise机制,封装的模块可作抽象数据类型设计。它是用于系统设计的强类型语言。西欧的计算机科学家对Modula-2是欢迎的,但它不巧与美国开发的Ada非常近似,与Ada竞争处于非常不利的地位。尽管它的9000句编译器具有Ada20万句编译器80%的功能,也没有取得Pascal那样的成就。

           70年代中期美国软件的最大用户美国国防部(美国软件市场约2/3经费直接或间接与它相关)深感软件费用激增并开始研究原因。研究结果表明,在硬件成本降低和可靠性提高的同时,软件费用不仅相对数,绝对数也在增加。美国军用的大量大型、实时、嵌入式系统软件开发方法落后、可靠性差。语言众多(常用400-500种,加上派生方言多达1500种)造成不可移植、难于维护,为摆脱这种新的软件危机下定决心搞统一的军用通用语言。从1975年成立高级语言工作组开始投资五亿美元,前后八年研制出Ada程序设计语言。Ada是在国际范围内投标设计的,法国的一家软件公司中标,J.Ichbian成为Ada发明人。多达1500名第一流软件专家参与了开发或评审。它反映了70年代末软件技术、软件工程水平。为了提高软件生产率和改善软件可移植性,提出开发语言的同时开发支持该语言的可移植环境(APSE)。

           Ada是强类型结构化语言。封装的程序包是程序资源构件。用户只能看到程序包规格说明中显式定义的数据(包括抽象数据类型)和操作。数据结构和操作(过程或函数)的实现在程序包体中完成。封装支持模块性和可维护性。规格说明和体的分离支持早期开发(可延迟决策)。分别编译机制可组成复杂的大型软件。

           Ada有并发、异常机制。可定义精确的数据(如浮点数小数点后任意多的位数)。有将数据对象、类型、过程参数化的类属机制。有为目标机写目标程序(机器语言的或汇编语言地)的低级设施,可对字节、字位操作。Ada的私有类型支持数据隐藏,程序包可实现数据抽象。标识符和运算符重载概念,既方便程序员又使程序好读且安全。强调大型系统可读性胜于可写性,Ada程序自成清晰的文档。

           Ada语言的开发过程完全按软件工程方式进行。严格禁止方言。美国国防部有一个严格管理Ada及其环境的机构AJPO(Ada联合规划办公室)负责Ada的确认、修改、维护、培训。从业界转向软件工程方法开发软件的意义上,Ada也称之为里程碑式语言。

           由于Ada过多强调安全性和易读性,Ada编译程序要做较多的静态检查,因而体积庞大(约20万句、512KB的微机装下了微机Ada编译就剩不下工作空间了)。程序代码较长,虽不像COBOL繁琐但要比C语言程序长60%。运行效率,特别是嵌入式实时控制应用中,通过交叉编译得到的目标机代码一时还难满足要求。环境工具发展缓慢,因为除军方外民间公司更乐于开发对所有语言通用的计算机辅助软件工程环境(CASE)。自80年代第一个语言版本,83年修改定型至今, Ada没有达到投资者预想的成就。目前已看到Ada83只反映80年代初期的软件工程技术。随着软件工程本身向集成化、可重用、面向对象方向发展,Ada已有一些不适应了。但美国军方还在全力支持,1995年Ada完成面向对象改造推出了Ada-95。增加了标签类型、类宽类型、抽象类型;放宽了访问类型;使一个静态强类型语言可以支持OO的动态束定。这种改造非常痛苦,使Ada-95语法规则增至277条,成为最庞大臃肿的语言。耐人寻味的是Ada-95很块被ANSI和ISO 接受,它成为世界上第一个有法定标准的面向对象的语言。

           70年代末到80年代初值得一提的还有FORTH语言。FORTH是典型的中级语言。它是汇编语言指令码向用户自定义方向的发展。也就是说,用户可以面向一个堆栈机器模型定义操作命令——字(word)。最低层的字是指令码,逐层向上,上层字由下层组成。因此,FORTH系统有良好的继承性。系统提供核心字、解释器字、编译字和设备字。对于简单的计算解释器字直接执行命令(字),复杂计算可将字定义编译成目标码存入堆栈供以后执行。有汇编字集合以便用户直接使用机器,要求字集合操作数值计算,引用字集合使用户可以引用系统和用以前已定义的字。FORTH程序员首先查看系统中字的字典,以它们组合成新字,进而构成程序。FORTH程序的逆波兰表示法便利于解释和编译,这对长期从事汇编编程的程序员并不生疏。FORTH把具体的机器抽象为堆栈机,既可以使程序员直接操纵机器又不涉及具体机器指令码、操作码、存储安排。而且良好的继承性使程序越编越短,在最终用户层一两个命令就完成了程序设计。它大受控制领域、要求单片、单板计算机(例如仪表工业)领域的程序员喜爱。

            FORTH是C.Moore一个人开发的语言,他于1968年在IBM 1130机器上实现第一个FORTH。他说他的语言是第四代的(Fourth-Generation)。由于1130只允许五个字符的名字才叫FORTH。1973年成立FORTH公司并把它投入航天工程应用,发展了通用商务FORTH系统。此后世界各地开始重视FORTH。1976年成立欧洲FORTH用户小组(EFUG),1978年成立FORTH标准化国际组织,80年发布FORTH-79标准文本。与此同时美国FORTH爱好者小组FIG)也制定了标准fig FORTH。各国天文行业,仪表行业纷纷以其为行业用计算机语言。FORTH并不好读,也不宜编大程序。但在它自己的领域简单好用、扩充方便、编译迅速。与传统语言追求的目标大相径庭。给人耳目一新。


    80年代的面向对象发展

     

           Ada的大、功能齐全、开发耗资可以说是程序设计语言之最。但它还没有普及就有些落伍了。可能今后不再有人再投入巨资去开发大型过程语言。

           80年代继续向软件危机开战,但软件工程以陈旧技术难于作出庞杂的软件工具。为了改善这种情况,人们乞灵于面向对象技术。程序设计语言纷纷面向对象靠拢。正如上一个10年程序设计语言结构化一样。这是主要特点。

           80年代的第二个特点是“用户友好”的所谓第四代语言的出现。

           80年代的第三个特点是各种技术相互渗透各种更高级非过程性语言出现。

          1972年美国施乐公司保罗·奥特研究中心的A.Kay领导的软件概念小组为方便不同用户处理各种信息在小机器上搞了一个Dynabook计划。它以全部的“对象”概念建立自己的系统。1980年Smalltalk-80作为正式的发布版本。

           Smalltalk语言是该系统的软件。专用的硬件机、Smalltalk环境、用户界面、面向对象程序设计风格构成了整个系统。

         “对象”是有自己的数据和操作的实体,各对象相对封闭。程序设计就是建立应用系统中的对象群,并使之相互发消息。接到消息的对象就在自己封闭的存储中响应执行操作。操作的结果是改变这组对象的状态、完成计算(发出输出消息,对象响应后完成输出)。

           为了使各自封闭的对象数据和操作不致多次重复定义。Smalltalk有类和继承的概念。类如同传统语言中的类型,只有类的实例进入实际运算(叫实例对象)。类对象中的数据和操作可为它的子类继承,它自己的数据和操作也继承自超类。于是一个Smalltalk系统就必须有支持它的一个类库,它象一棵大树,所有的行之有效类都在这棵大树的某个位置上。用户只要选取其中某些类稍加修改变成自己问题所需要的类(子类),定出通讯协议,让它们的实例相互通讯完成计算。无论是系统对象和用户定义的对象都按不同的抽象层次放在统一的类库中。例如,向编译对象发消息并传送用户对象,该用户对象(程序)就被编译了。Smalltalk中只有不同抽象层次的对象,小到一个整数、大到一个系统都叫对象,且别无其它计算单元。面向对象程序设计的概念因此而出。

           Smalltalk因为它天然的封装性体现了模块性和数据隐藏,利于维护修改。它的继承性实质上是软件的重用。这对困惑于大程序难于管理的软件工程学无疑是一条绝好出路。

           Smalltalk类对象概念来自SIMULA 67,响应消息的方法表达式求值类似LISP的归约。它本身是在小机器上开发的小系统。庞大的类库占去了很大的空间,难于编制大型程序。加上它独特的编程风格,Smalltalk本身并未发展起来。但面向对象思想,语言和环境一致性; 交互式和极端用户友好(用菜单和鼠标即可上机),对80年代语言和计算系统产生了巨大影响。它也可称之里程碑式的语言。

            各种过程语言,甚至汇编语言都借鉴对象思想,以求能支持面向对象程序设计。82-86年相继出现Object Pascal、Objective-C、Objext Assembler(68000汇编程序改造)。Object、LOGO、Object FROTH它们以原有语言采纳对象——消息编程模式。

           另一些语言向类、对象延伸。以对象——引用编程模式编程。如85年AT&T公司推出的C++。87年Borland公司的Turbo Pascal 5.5。

           传统的人工智能语言也向面向对象上发展。施乐公司1983年在Intel LISP基础上研制了LOOPS。是面向对象LISP美国西海岸版本。85年美国符号处理公司在MIT的LISP机上开发了Flavos,称之为东海岸版本。Flavos有更为灵活和复杂的多继承性。85年施乐公司又作出Common LOOPS。1988年,ANSI X3J13组将它们统一为CLOS。85年,IBM日本分公司开发了SPOOL是Prolog面向对象的扩充。86年Valcan和施乐联合开发的并发Prolog预处理程序,也是支持面向对象的。


           70年代在软件发展史上是数据库成熟的年代。数据库有数据描述语言DDL数据操作语言DML。它们都是为实现某种模式数据库的专用语言。目标简单,在所应用的领域高效。因此,不能以通用程序设计语言代替。数据库给用户以界面(即查询)语言。对于简单程序没有必要转到通用语言再编程序。查询语言进一步扩充,就形成一系列查询命令加上约束条件控制的非过程语言。如SQL。1988年SQL成为正式ANSI/ISO标准。

           80年代软件环境大发展。操作系统原有的作业控制语言(JCL)和系统调用命令也逐步发展为该环境的统一的界面语言。如UNIX的Shell。

           80年代系统软件中开发环境的思想向各专业渗透。各专业都为本专业的最终用户提供简便的开发环境。即事先将程序模块以目标码存放计算机,用户只需简单的命令,甚至本专业常用的图形就可组成应用程序。这些图形、菜单、命令即用户界面语言。

            这些语言共同的特点是声明性(只需指明要做的事)、非过程性、简单、用户友好。而应用程序的实现可由系统自己完成(低层有固定不变的计算模型,如关系运算,也可以连接备用模块智能推理)。这就所谓的第四代语言(4GL)。

           4GL并没有为程序设计语言学带来什么新概念和新特征。一般用传统技术做出界面语言解释器。要求环境有较好的工具支持(应用程序、程序库、各种测试、调试、文档工具)。最简单的4GL是图形——菜单,用户不用击键即可完成计算(用鼠标器)。

           4GL是硬件高速发展和快速降价必然的结果。因为不可能在短期内培养出与硬件发展需要出匹配的那么多的程序员。但4GL不易编制开创性程序。

    九十年代网络计算语言

           九十年代计算机硬件发展速度依然不减。每片芯片上晶体管数目仍然是一年半增加一倍。计算机主频从12-25兆赫增加到500-600兆赫(每秒钟可执行750MIPS指令),价格进一步低廉。使用方式也从多人一机的分时系统到一人一机局域网计算,到每人都成为拥有全球资源的客户。建立在异质网上的多媒体环境已成为客户端使用环境的主流。支持“所见即所得”的用户界面的“语言”大量涌现。

           ·由于有良好环境支持,程序设计重点从算法加数据结构实现技术向规模说明描述方面转移。规模说明语言在80年代已有研究。(META-IV,EPROL,HOPE,CLEAR、SPECINT,Z)在个别具体领域也能实用。但作为通用,哪怕是某个行业建立在域分析基础上的规格说明语言尚未出现。

           ·环境智能化、规模说明语言自动生成目标码客观上要求加入人工智能技术。异质网环境推行后各结点上数据库资源共享都要求各语言间不要有人为的断层。因此,多范型语言研究会有较大发展。80年代向面向对象扩充已经出现多范型语言,如C++,Ada 95(命令式加对象式)、CLOS(函数式加对象式0。为外小型研究有TABLOG(关系式加逻辑式)、Funlog(函数式加逻辑式)值得注意的是加拿大的Nial(1983-88)和美国的G(1986)语言,它们试图将五种范型: 命令式+对象式+逻辑式+函数式+关系式统一在一个语言之中。虽然问题重重,但可由此发现许多新概念和新特征,对于程序设计语言研究是非常有利的。

           ·随着面向对象数据库和面向对象操作系统的成熟,完全消灭“语义断层”的数据库程序设计语言(DBPL)和持久性程序设计语言(PPL)终将汇合并标准化。这样,程序运行时大量文件到内存转换则可以取消,从而增大了计算机的实崐时性,甚至取消文件概念。

           ·4GL有了较大发展,种类花色增多,行业标准出现。支持它们的通用程序设计语言是C、C++、Ada。

     

    2010-01-20                  

    注:源自原百度博客“至美心"

    展开全文
  • 程序设计语言的基本概念

    千次阅读 2019-01-20 16:56:37
    程序设计语言是为了书写计算机程序而人为设计的符号语言,用于对计算过程进行描述、组织和推导。 程序设计语言的广泛使用始于1957年出现的FORTRAN,程序设计语言的发展是一个不断演化的过程,其根本推动力是更高的...

    在这里插入图片描述

    程序设计语言是为了书写计算机程序而人为设计的符号语言,用于对计算过程进行描述、组织和推导。

    程序设计语言的广泛使用始于1957年出现的FORTRAN,程序设计语言的发展是一个不断演化的过程,其根本推动力是更高的抽象机制以及对程序设计思想的更好支持。

    低级语言与高级语言

    计算机硬件只能识别由0、1组成的机器指令序列,即机器指令程序,因此机器指令是最基本的计算机语言。

    由于机器指令是特定的计算机系统所固有的、面向机器的语言,所以用机器语言进行程序设计时效率很低,程序的可读性很差,也难以修改和维护。

    因此,人们就用易记忆的符号代替0、1序列来表示机器指令,例如,用ADD表示加法,用SUB表示减法等。用符号表示的指令称为汇编指令,汇编指令的集合被称为汇编语言。

    汇编语言的源程序由若干条语句组成,其中可以有三类语句:指令语句、伪指令语句和宏指令语句

    指令语句又称为机器指令语句,将其汇编后能产生相应的机器代码,这些代码能被CPU直接识别并执行相应的操作。基本的指令有ADD、SUB和AND等,书写指令语句时必须遵守指令的格式要求。

    伪指令语句指示汇编程序在汇编源程序时完成某些工作,例如为变量分配存储单元地址,给某个符号赋一个值等。伪指令语句经编译后不产生机器代码。

    在汇编语言中,还允许将多次重复使用的程序段定义为宏。宏指令语句就是宏的引用。

    汇编语言的书写格式在很大程度上取决于特定计算机的机器指令,因此它仍然是一种面向机器的语言,人们称机器语言和汇编语言为低级语言

    在此基础上,人们开发了功能更强、抽象级别更高的语言以支持程序设计,于是就产生了面向各类应用的程序设计语言,称为高级语言。常见的有Java、C、C++、PHP、Python等。

    程序设计语言的定义

    一般地,程序设计语言的定义都涉及语法、语义和语用等方面。

    语法是指由程序设计语言的基本符号组成程序中的各个语法成分(包括程序)的一组规则。其中由基本字符构成的符号(单词)书写规则称为词法规则,由符号构成语法成分的规则称为语法规则。

    语义是程序设计语言中按语法规则构成的各个语法成分的含义,分为静态语义和动态语义。静态语义是指编译时可以确定的语法成分的含义,而运行时刻才能确定的含义是动态语义。

    一个程序的执行效果说明了该程序的语义,它取决于构成程序的各个组成部分的语义。

    语用表示了构成语言的各个记号和使用者的关系,设计符合的来源、使用和影响。

    程序设计语言的分类

    (1) 命令式和结构化程序设计语言

    命令式语言是基于动作的语言,在这种语言中,计算被看成是动作的序列。命令式语言族开始于Fortran,Pascal和C语言都可以体现命令式程序设计的关键思想。

    在这种语言中,计算机被看作是动作的序列,程序就是用语言提供的操作命令书写的一个操作序列。用命令式程序设计语言编写程序,就是描述解题过程中每一步的过程,程序的运行过程就是问题的求解过程,因此也称为过程式语言。

    机器语言及汇编语言是最早的命令式语言。

    通常所称的结构化程序设计语言属于命令式语言类,其结构特性主要体现在以下几个方面:

    一是用自顶向下的逐步精化的方法编程,二是按模块组织的方法编程,三是程序只包含顺序、判定及循环构造,而且每种构造只允许单入口和单出口。

    结构化程序的结构简单清晰、模块化强,描述方式接近人们习惯的推理式思维方式,因此可读性强。C、PASCAL等都是典型的结构化程序设计语言。

    (2) 面向对象的程序设计语言

    程序设计语言的演化从机器语言开始到汇编语言到各种结构化高级语言,最后到支持面向对象技术的面向对象语言,反映的就是一条抽象机制不断提高的演化道路。

    C++、Java和Smalltalk是面向对象程序设计语言的代表,它们都支持封装、继承、多态等面向对象技术。

    (3) 函数式程序设计语言

    函数式设计语言是一类以λ演算为基础的语言,其基本概念来自于LISP,这是一个在1958年为了人工智能应用而设计的语言。函数是一种对应规则(映射),使定义域的每个元素和值域中的唯一的元素相对应。

    常见的函数式程序设计语言有Haskell、Scala、Scheme、APL等。

    (4) 逻辑型程序设计语言

    逻辑型程序设计语言是一类以形式逻辑为基础的语言,其代表是建立在关系理论和一阶谓词理论基础上的PROLOG。PROLOG有很强的推理功能,适用于编写自动定理证明、专家系统和自然语言理解等问题的程序。

    展开全文
  • c程序设计语言中文版第二版

    千次下载 热门讨论 2013-07-04 18:39:42
    c语言之父Ritchie和著名计算机科学家Kernighan合著的经典著作,第二版新版,具有书签的清晰中文版本
  • Python \解释型计算机程序设计语言

    千次阅读 2021-01-13 10:39:17
    Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)...
  • 程序设计语言基础知识复习

    千次阅读 多人点赞 2019-03-12 18:02:40
    (一) 程序设计语言基本概念 1、计算机硬件只识别机器指令序列,因此机器指令是最基本的计算机语言。机器语言设计程序效率很低,程序可读性很差,很难修改和维护,因此,用符号代替0、1序列来表示机器指令。用符号...
  • 1、C语言是一种结构化程序设计语言

    千次阅读 2020-12-29 09:19:26
    1一、判断题1、C语言是一种结构化程序设计语言。()2、C语言允许直接访问物理地址。()3、一个算法应该具备有穷性、确定性、输入、输出和有效性。()4、常量是在整个程序运行过程中不能改变的量。()5、“A”是一个字符...
  • C程序设计语言 PDF

    千次下载 热门讨论 2010-04-16 12:06:58
    # C程序设计语言(第二版) 在计算机发展的历史上,没有哪一种程序设计语言像C语言这样应用如此广泛。本书是C语言的设计者之一 DennisM.Ritchie和著名的计算机科学家BrianW.Kernighan合著的一本介绍C语言的权威经典...
  • 对高级程序设计语言的基本理解

    千次阅读 2019-07-12 10:20:46
    我是在大学期间开始接触编程,但是学习的第一门程序设计语言是C语言,但是当时只是简单的学习,能用C语言写一些简单的控制台程序,所以当时对于程序设计来说只是一种玩票性质。 后来也进过实验室,玩过单片机,还...
  • C++程序设计语言.pdf特别版 高清

    热门讨论 2012-06-07 13:45:30
    C++程序设计语言.pdf高清版, 是学习C++的必备书籍,绝对推荐! 同时也是入门的好书
  • Bjarne Stroustrup是C++的设计师和最早的实现者,也是《C++程序设计语言》、《带标注的C++参考手册》和《C++语言的设计与演化》的作者。 此文档是最新第四版的英文原版。非扫描 清晰pdf版
  • 用高级程序设计语言编写的程序()。A.计算机能直接执行B.可读性和可移植性好C.可读性差但执行效率更多相关问题有些消费函数表明,收入和消费是负相关的。()地球上陆地的面积约为148 000 000,用科学记数法表示为__...
  • 【单选题】2、 以下程序设计语言是低级语言的是()。A. FORTRAN语言 B. JAVA语言 C. Visual Basic 语言 D. 80X86汇编语言更多相关问题[多选] 根据《移动通信钢塔桅工程施工监理暂行规定》工程放线质量的检查应符合...
  • C程序设计语言(英文版第2版).pdf

    热门讨论 2012-05-03 10:28:54
    《C程序设计语言》是C语言的设计者之一Dennis M.Ritchie和著名计算机科学家Brian W.Kernighan合著的一本介绍C语言的权威经典著作。我们现在见到的大量论述C语言程序设计的教材和专著均以此书为蓝本。
  • GO程序设计语言 PDF 黑色的书 百度云

    万次阅读 多人点赞 2019-07-19 23:58:33
    下载地址 链接:https://pan.baidu.com/s/1-PvlfXaUhGAkig4Zs-2JxQ 提取码:m5e3 复制这段内容后打开百度网盘手机App,操作更方便哦 为什么csdn的资源积分这么贵? ...
  • 《C程序设计语言

    热门讨论 2012-10-23 18:10:48
    《C程序设计语言》(第2版新版)是由C语言的设计者Brian W.Kernighan和Dennis M.Ritchie编写的一部介绍标准C语言及其程序设计方法的权威性经典著作。全面、系统地讲述了C语言的各个特性及程序设计的基本方法,包括基本...
  • C++程序设计语言(特别版·十周年中文纪念版) 高清 pdf
  • 面向对象程序设计语言和面向过程程序设计语言的区别由哪些? 面向对象的特点是:封装,继承,多态,其中多态又分为重载和重写,面向对象的编程思想更接近现实的事物 面向对象的优点:  1.编程更加容易,因为面向...
  • 我们常常把机器语言称为第一代程序设计语言,把汇编语言称为第二代程序设计语言,把高级语言称为第三代程序设计语言,把最新的程序设计语言称为第四代语言。1.1.1 机器语言 机器语言是计算机能...
  • 什么是程序设计语言

    千次阅读 2016-04-05 12:11:40
    什么是程序设计语言什么是程序设计语言程序设计语言实际上就是一套规范的集合,主要包括该语言使用的字符集,直接或间接支持的数据类型集合,运算符集合,关键字集合,指令集合,语法集合等,这些内容就是语言的...
  • C++程序设计语言,C++之父:Bjarne Stroustrup的经典力作!

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,264,802
精华内容 505,920
关键字:

程序设计语言