精华内容
下载资源
问答
  • 程序设计语言的基本概念

    千次阅读 2019-01-20 16:56:37
    程序设计语言的广泛使用始于1957年出现的FORTRAN,程序设计语言的发展是一个不断演化的过程,其根本推动力是更高的抽象机制以及对程序设计思想的更好支持。 低级语言与高级语言 计算机硬件只能识别由0、1组成的...

    在这里插入图片描述

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

    程序设计语言的广泛使用始于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有很强的推理功能,适用于编写自动定理证明、专家系统和自然语言理解等问题的程序。

    展开全文
  • 程序设计语言 什么是程序设计语言 程序设计语言是人类与计算机交流和沟通的语言。人们通过使用程序语言,来书写计算机程序,以达到设计的程序满足需求的目的。 程序语言的发展历史 程序语言经历了从低级语言到高级...

    程序设计语言

    什么是程序设计语言
    程序设计语言是人类与计算机交流和沟通的语言。人们通过使用程序语言,来书写计算机程序,以达到设计的程序满足需求的目的。
    程序语言的发展历史
    程序语言经历了从低级语言到高级语言的发展过程。
    1.低级语言
    低级语言是比较接近计算机本身的语言,它可以直接操纵计算机硬件。常见的有机器语言、汇编语言。
    机器语言
    其是由0和1两个数字组成的二进制编码所构成的,是计算机硬件直接识别并执行的程序设计语言。
    汇编语言
    为了方便人们记忆并简化编程过程,人们发明了汇编语言。汇编语言给每一条机器指令分配了一个帮助记忆的指令码,程序员可以用这些指令码代替二进制数字。
    如:“ADD”是“+”的意思;“MOV“是”移动“的意思。
    2.高级语言
    高级语言是从人类逻辑思维角度出发的计算机语言,比较接近自然语言,且能够简单的描述、解决问题。但其与计算机硬件无关。
    最早的两种高级语言是FORTRAN(为数字应用程序设计的语言)和COBOL(为商业应用程序设计的语言),除此自外还有Lisp(主要应用于人工智能的应用程序和研究)。
    到如今共有上百种高级语言出现,我们使用较频繁的有:C、C#、C++、Visual Basic、Java、Python等。
    编译和解释
    由于高级语言在计算机中执行有两种不同的方式:编译执行,解释执行,因此可将其分为:静态语言,脚本语言两种语言。静态语言采用编译执行,脚本语言采用解释执行。
    编译是将源代码转换为目标代码的过程。通常,源代码为高级语言代码,目标代码为机器语言代码,执行编译的计算机程序为编译器。
    解释是源代码逐条转换为目标代码并逐条运行目标代码的过程。执行解释的计算机程序为解释器。

    python语言简述

    起源与发展
    python起源于1989年圣诞节期间,是创始人为吉多*范罗苏姆(Gudio van Rossum)为了打发圣诞节的无聊时光所创作出的编程语言。而”python“这个名字则是因为当时范罗苏姆迷上《Monty Python飞行马戏团》这个肥皂剧所命名的。
    发展:
    2000年10月 python 2.0
    2008年12月 python 3.0
    更高级别的3.x系列不再兼容2.x系列。3.x版本的升级带来了大量库函数的升级和替换,如今3.x已经成为了使用的主流。
    python的优缺点
    优点:
    1.简洁+强制可读性
    2.脚本语言+语句执行
    3.跨平台+开源
    4.面向对象语言
    缺点:
    1.运行速度慢
    2.代码不能加密
    3.执行时必须有源代码
    不再过多介绍,可以通过以下链接了解
    python优缺点
    面向对象是指把构成问题的事务分解为各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。

    注:本文章为我在学习python时的理解,可能会与网络上的课程有些许雷同,请各位见谅。

    展开全文
  • 程序设计语言简史

    千次阅读 2016-12-03 16:53:31
    程序设计语言诞生  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                  

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

    展开全文
  • 程序设计语言诞生  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                  

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

    展开全文
  • 程序设计语言是一种人类用来和计算机沟通的语言,也就是用来指挥计算机进行计算或运行的指令集合。就如同汉语、英语、日语等语言一样,无论哪一种语言都有词汇与语法。程序设计语言是一行行的程序语句(statement)...
  • 程序设计语言基础知识复习

    千次阅读 2019-03-12 18:02:40
    (一) 程序设计语言基本概念 1、计算机硬件只识别机器指令序列,因此机器指令是最基本的计算机语言。机器语言设计程序效率很低,程序可读性很差,很难修改和维护,因此,用符号代替0、1序列来表示机器指令。用符号...
  • 一、基本概念在计算机中,程序设计语言可划分为低级语言和高级语言两大类,与高级语言相比,用低级语言开发的程序,其运行效率高,但开发效率低。与程序设计相关的基本概念如下。(1)低级语言:又称面向机器语言,...
  • 低级语言和高级语言

    千次阅读 2020-04-08 22:44:27
    低级语言和高级语言低级语言机器语言汇编语言高级语言编译型语言解释型语言python并不完全属于解释型语言什么是pyc文件关于PyCodeObject和pyc文件什么是字节码,什么是机器码字节码 Byte Code机器码 Machine Code ...
  • 4.2 嵌入式程序设计语言 4.2.1 程序设计语言概述 1.低级语言与高级语言 2.汇编程序、编译程序和解释程序 3.程序设计语言的定义 4.程序语言的发展概述 5.嵌入式程序设计语言 4.2.2 汇编语言 1.基本原理 2.ARM汇编语言...
  • 程序语言和编译相关知识,主要在编码阶段应用,我们需要掌握程序语言相关知识,本章需要掌握以下几个方面的知识点与考点。... 过程式程序语言、面向对象程序设计语言、函数式程序设计语言、逻辑程序设计语言的基本...
  • 程序设计语言基本概念语 与经典真题

    千次阅读 热门讨论 2016-04-30 14:49:04
    在计算机中,程序设计语言可划分为低级语言和高级语言两大类,与高级语言相比,用低级语言开发的程序,其运行效率高,但开发效率低。与程序设计相关的基本概念如下。 (1)低级语言:又称面向机器语言,它是特定的...
  • 我们常常把机器语言称为第一代程序设计语言,把汇编语言称为第二代程序设计语言,把高级语言称为第三代程序设计语言,把最新的程序设计语言称为第四代语言。1.1.1 机器语言 机器语言是计算机能...
  • C程序设计语言概论

    2007-01-26 09:39:00
    C程序设计语言概论[1]:http://develop.csai.cn/c/200701251655521283.htm  C语言是在70年代初问世的。一九七八年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。同时由B.W.Kernighan和D.M.Ritchit合著了著名...
  • 《C++程序设计语言(特别版)》

    千次阅读 2009-10-25 19:27:00
    2.3 过程式程序设计:确定你需要哪些过程;采用你能找到的最好的算法。2.4 模块式程序设计:确定你需要哪些模块;将程序分为一些模块,使数据隐藏于模块之中。2.5.2 用户定义类型(亦抽象数据类型):确定你需要哪些...
  • 转自:《编码的奥秘》 第二十四章 ... A L G O L也可用来探索高级程序设计语言的本质,因为从某种意义上来说它正如一粒种子,成为过去 4 0年来许多流行的通用语言的直接祖先。甚至在今天,人们也用到“类 A L ...
  • 80X86汇编语言程序设计].王元珍,华中科技大学,2005,汇编语言
  • 谭浩强c 语言程序设计

    千次阅读 2014-08-11 01:51:03
    1.2 当代最优秀的程序设计语言  1.3 C语言版本  1.4 C语言的特点  1.5 面向对象的程序设计语言  1.6 C和C++  1.7 简单的C程序介绍  1.8 输入和输出函数  1.9 C源程序的结构特点  1.10 书写...
  • 它们可以是高级语言,也可以是低级语言。每种类型的编程语言都有其自己的目的。了解两者之间的区别是确定使用哪一个的重要步骤。 那么,它们之间到底有什么区别?学习编写代码意味着什么?让我们从每种语言的定义...
  • Java语言程序设计(基础篇)第十版 第一章习题答案 1.1什么是硬件和软件? 计算机是一种存储和处理数据的电子设备。 计算机包括硬件和软件。 一般来说,硬件是计算机可见的物理方面,而软件是控制硬件并使其工作的...
  • 2.作为一种良好的程序设计风格,一般在switch-case语句的最后一个分支(即default分支)的后面也加一个break语句,这样做可以防止以后再向该switch语句添加其他分支时发生错误。 四、函数与程序结构 1....
  • 如果编程语言是一门武功绝学

    万次阅读 多人点赞 2021-05-22 16:30:06
    学习编程与武功绝学 武侠小说中,各路侠客绿林好汉都是从基本功开始一招一式学起,掌握了足够多的招式后,加之勤学苦练,量变引起质变,会有一天打开任督...汇编语言是计算机提供给用户的最快最有效的语言,也是能够..
  • 编译器-FORTRAN(公式翻译)语言,第一个全球正式推广的高级语言,Pascal(帕斯卡)它可称为第一个结构化程序设计语言,Pascal基于ALGOL编程语言,ALGOL是算法语言(ALGOrithmic Language)的简称,是在计算机发展史...
  • 计算机编程语言是程序设计的最重要的工具,它是指计算机能够接受和处理的、具有一定语法规则的语言。 编程语言处在不断的发展和变化中,从最初的机器语言发展到如今的2500种以上的高级语言,每种语言都有其特定的...
  • 【读书笔记】汇编语言程序设计

    千次阅读 2017-04-06 22:31:54
    C++开发的游戏服务器避免不了偶尔出现的宕机问题,在查找宕机问题时,一般都会分析dump,但由于编译器优化问题和64位dump调试的不方便,能看懂汇编可以起到事半功倍的效果,通常可以通过反汇编查找空指针或者程序的...
  • Switch语句结构简单,能处理的问题有限但switch实现的程序逻辑结构清晰。 3.30:执行switch语句后,y是2,但是不会打印出y的值; 用if-else重写代码: public class review3_30{ public static void main(String[] ...
  • 程序语言基础知识

    千次阅读 2009-08-22 16:53:00
    2.2 程序语言基础知识2.2.1 ...2.2.1.1 程序语言概述低级语言又称面向机器语言,它是特定的计算机系统所固有的语言。用机器语言编制出来的,程序可读性很差,程序员难以修改和维护,于是人们考虑改用助记符号来
  • 如何掌握程序语言

    2012-08-28 12:06:29
    学习程序语言是每个程序员的必经之路。可是这个世界上有太多的程序语言,每一种都号称具有最新的“特性”。所以程序员的苦恼就在于总是需要学习各种稀奇古怪的语言,而且必须紧跟“潮流”,否则就怕被时代所淘汰。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,148
精华内容 7,259
关键字:

以下程序设计语言是低级语言的是