1、ALGOL语言

  ALGOL ,为算法语言(ALGOrithmic Language)的缩写,是计算机发展史上首批产生的高级程式语言家族。当时还是晶体管计算机流行的时代,由于ALGOL语句和普通语言表达式接近,更适于数值计算,所以ALGOL多用于科学计算机。

ALGOL 58:

  1958年,ACM小组(美国计算机协会)和以当时联邦德国的应用数学和力学协会(GAMM)在苏黎世把他们关于算法表示法的建议综合为一,是一种编程语言,被命名为IAL(国际代数语言,International Algebraic Language),后来改称Algol 58。ALGOL家族的第一个成员。

ALGOL 60:

  图灵奖获得者:艾伦.佩利(Alan J.Perlis)在巴黎举行的有全世界一流软件专家参加的讨论会上,发表了"算法语言Algol 60报告",确定了程序设计语言Algol 60。Algol60语言的第一个编译器由Edsger W. Dijkstra来实现。1962年,艾伦。佩利又对Algol 60进行了修正。

Algol 60引进了许多新的概念如:局部性概念、动态、递归、巴科斯-诺尔范式BNF(Backus-Naur Form)等等。

  Algol 60是程序设计语言发展史上的一个里程碑,它标志着程序设计语言成为一门独立的科学学科,并为后来软件自动化及软件可靠性的发展奠定了基础。

  2006年3月1日,国际计算机协会(ACM)宣布彼得.诺尔为2005年A.M.图灵奖的获得者。这个奖项是由于诺尔在定义Algol 60这种程序设计语言方面的先驱性工作而颁发给他的。Algol 60是许多后来的程序设计语言,包括今天那些必不可少的软件工程工具的原型。

  诺尔博士在1960年是具有极高影响的《算法语言Algol 60报告》的主编。这份报告的优雅、一致和连贯使他声名鹊起,并被认为是创造了这种算法语言的强大功能和简易性的重要贡献者。这份报告先驱性地使用了BNF范式(Bcakus-Naur-Form)用以定义程序设计语言的语法。BNF现在是定义一种计算机语言的标准方式。诺尔还因为他对于编译设计的贡献、以及在计算机程序设计方面的技巧与实践而受到表彰。

  计算科学诞生的标志,2002年,前图灵奖得主Edsger Dijstra把Algol 60的发展描述为“一个绝对的奇迹”,标志着他所说的“计算科学”的诞生,因为Algol 60首次显示了自动计算能够并且应当成为学术关注的主题。 Algol 60的发展是一群极具天赋的人才的工作成果,其中包括几位以后的图灵奖获得者。

  在Algol 60报告出版之前,计算机语言是通过说明性的使用手册和编译代码本身而非正式地定义。这个报告通过使用BNF来定义语法,并用精心选择的说明文字定义语义,从而简洁、有力而又清晰。17页长的Algol 60报告展示了对优雅清晰的语言的完美定义,这种语言可用于计算机之间交流,也可用于人类之间交流。这种语言精心地做到不依赖于任何特定的计算机的属性。这种新的语言对于编译程序作者是一个很大的挑战。诺尔博士继续和他人合著了《GIER Algol 编译程序》(丹麦开发的晶体管电子计算机被称为GIER),这是第一批能够完全准确地处理语言的强大过程机理的编译程序之一。

2、CPL语言,高级语言

  1963年英国剑桥大学推出了CPL(Combined Programming Langurage)语言。CPL语言在ALGOL 60 的基础上接近硬件一些,但规模比较大,难以实现。

3、BCPL语言,CPL的简化版本

  1967年英国剑桥大学的 Matin Richards对CPL语言做了简化,推出了 BCPL (the Basic Combined Programming Language)语言。

BCPL最早被用做牛津大学的OS6操作系统上面的开发工具。后来通过美国贝尔实验室的改进和推广成为了UNIX上的常用开发语言。

BCPL有些类似于Fortran,也是典型的面向过程的高级语言。BCPL的语法更加靠近机器本身,适合于开发精巧,高要求的应用程序,同时对编译器的要求也不高。BCPL也是最早使用库函数封装基本输入输出的语言之一,这使得他跨平台的移植性很好。BCPL的代码用小写字母书写,有别于同时代的BASIC和PASCAL。BCPL对于字符串的支持很差,这种缺点一直延续到了他的后代中,BCPL的内存管理也很糟糕,不过幸好在他的后代中这个缺点被改掉了。BCPL程序从一个主函数中开始,功能模块可以添加在各个函数中,函数支持嵌套和递归。BCPL本身并没有被使用太长时间,这是因为他的后代们实在太强大了。

4、B语言,BCPL的简化版本

  1970年美国贝尔实验室的 Ken Thompson 以 BCPL 语言为基础,又作了进一步的简化,设计出了很简单的而且很接近硬件的 B 语言,这个名字取自BCPL中的第一个字母。并用B语言写出了第一个 UNIX 操作系统。但 B 语言过于简单,功能有限。B语言使用的时间更短。

5、C语言,B的加强版本

  三年后,1972年至1973年间,贝尔实验室的 D.M.Ritchie 在 B 语言的基础上设计出了 C 语言(取BCPL的第二个字母)。C语言即保持 BCPL 语言和 B 语言的优点(精练、接近硬件),又克服了他们的缺点(过于简单,数据无类型等)。又重新用C语言实现了unix,现在的BSD和unix和苹果系统都是原来的unix系统。C几乎具有低级语言的面向硬件、可以位操作、语法自由、编译工具丰富、运行速度快、关键字少、应用异常灵活的过程编程语言的集大成者。但是依旧拦不住编程思想的进步,面向对象编程才是大潮。

  C语言的特点:

  1、C语言是一种小型编程语言,只有32个关键字;

  2、C语言具有强大的内置函数库;

  3、C语言是一种方便移植的编程语言;

  4、C语言 执行效率高速度快;

  5、C语言提供了结构化编程所需要的所有构造

  6、C语言 提供了系统编程的构造,适用于系统编程

  7、C语言提供了指针,大大增强了编程的灵活性,加强了抽象编程的能力

  8、C语言提供了递归功能适用于解决棘手的问题

  9、C语言具有顽强的扩展能力,从数据类型到数据操作到编程思想

  A、C语言是一种强类型语言  

  B、C语言非常相信编程者的能力,可以完全编程

  C、C语言编程能够实现用户的任何需要

  D、C语言能够和其他语言一起进行混合编程

  E、C语言编程工具异常丰富

  F、C语言分阶段编译,大大提高了编程的灵活性

6、C++语言,C的面向对象版本

  而C语言和C++则在日后成为了最流行的高级语言。前者是面向过程的王者语言,后者是面向对象编程语言的垫脚石,太复杂了,后来很快被java超越,现在被python碾压了。后来,也许还有其他的黑马,目前C++还需要努力,不管怎么说,现代的操作系统和编译器或者虚拟机总还是要C语言实现的,C语言已经成功的在时代发展的过程中留下了自己的深深的印记。

  

C语言的历史的更多相关文章

  1. C语言的历史及个人拙见

    C语言是一个无限广阔的世界,你刚开始睁眼看它的时候以为视线的尽头就是边界,但当你慢慢走去,才发现天外有天.这或许就是江湖传说只有C才有真正高手的原因,或许我们也可以反过来说:C没有高手——因为没有人能 ...

  2. JavaScript 语言的历史

    说明:此类博客来自以下链接,对原内容做了标注重点知识,此处仅供自己学习参考! 来源:https://wangdoc.com/javascript/basic/introduction.html 1.诞 ...

  3. java基础学习总结一(java语言发展历史、jdk的下载安装以及配置环境变量)

    最近一段时间计划复习一下java基础知识,使用的视频课程是尚学堂高淇老师的,上课过程中的心得体会直接总结一下,方便以后复习. 一:计算机语言的发展 1:机器语言,最原始的语言,主要有“01”构成,最早 ...

  4. Java基础学习总结一(Java语言发展历史、JDK下载安装以及配置环境变量)

    最近一段时间计划复习一下java基础知识,使用的视频课程是尚学堂高淇老师的,上课过程中的心得体会直接总结一下,方便以后复习. 一:计算机语言的发展 1:机器语言,最原始的语言,主要有“01”构成,最早 ...

  5. [转]C++语言的历史和标准化

    转:https://blog.csdn.net/lemonrabbit1987/article/details/48222339 1979年4月,贝尔实验室的Bjarne Stroustrup(本贾尼 ...

  6. UVa 1671 语言的历史——判断两个DFA是否等价

    题意 一个DFA可以用一个5元组  $((Q, \sum , \delta , q_0, F))$ 表示,其中 $Q$ 为状态集,$\sum$ 为字母表,$\delta$ 为转移函数,$q_0$ 为起 ...

  7. Java基础笔记(1) 语言 JAVA的历史 Java的搭建环境

    本文除了搭建是重点,其他的都当阅读小说一样去看就好了,不想看可以直接抓住重点,我会改变颜色勾出重点! 英语是人与人交流沟通的重要方式之一.JAVA:是人与计算机沟通交流重要方式之一.我们除了用java ...

  8. Java学习1 - java 历史

    Sun的Java语言开发小组成立于1991年,其目的是开拓消费类电子产品市场,例如:交互式电视,烤面包箱等.Sun内部人员把这个项目称为 Green,那时World Wide Web还在图纸上呢.该小 ...

  9. 【转】从Go、Swift语言出发

    Google于2009年第一次提出了Go的构思,Facebook在去年春天引入了Hack,随后不久Apple也发布了其Swift语言. 在战争中,胜利者写历史书:在科技中,赢的公司都在写编程语言.互联 ...

随机推荐

  1. 使用docker安装gitlab

    我这里使用的系统是centos7 首先安装docker,docker-compose(非必须,但是使用它可以简化镜像启动参数),需要注意的是docker-compose安装依赖Python的pip,所 ...

  2. php协议任意文件读取

    php://filter/read=convert.base64-encode/resource=index.php

  3. 流程控制 while for

    循环执行 计算机最擅长的功能之一就是按照规定的条件,重复执行某些操作,这是程序设计中最能发挥计算机特长的程序结构. 1.while语句 while(表达式){ 各种语句.... } 当表达式的值为tr ...

  4. 七年开发经验详解JVM的GC 算法

    概述 GC 是 JVM 自带的功能,它能够自动回收对象,清理内存,这是 Java 语言的一大优势,但是GC绝不仅伴随着Java,相反,GC历史比Java更悠久.关于GC,我认为有四个问题需要解决: 为 ...

  5. STM32复位及通过函数判断是何种条件出发的复位

    STM32F10xxx支持三种复位形式,分别为系统复位.上电复位和备份区域复位. 一.系统复位: 系统复位将复位所有寄存器至它们的复位状态. 当发生以下任一事件时,产生一个系统复位: 1. NRST引 ...

  6. 小程序数据绑定和setData

    我们wxml没有直接调用数据的能力,我们的逻辑是通过js调用数据,再由js传递给wxml才能够显示出来.那么怎么由js传递给wxml?   首先我的js里面有这样一段代码 process: funct ...

  7. 电池管理系统(BMS)

    概述 电池管理系统(BMS)为一套保护动力电池使用安全的控制系统,时刻监控电池的使用状态,通过必要措施缓解电池组的不一致性,为新能源车辆的使用安全提供保障. 经纬恒润在控制系统开发方面拥有雄厚的实力和 ...

  8. ABCD组·第五次团队作业项目需求分析改进与系统设计

    项目 内容 这个作业属于哪个课程 http://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh 团队 ...

  9. angular ionic 解决微信页面缓存问题

    # 在路由对应的页面路径后面加时间戳 .state('viewName', { url: '/viewName', cache: false, templateUrl: function(){ ret ...

  10. 如何在vscode中用standard style 风格去验证 vue文件

    1 JavaScript Standard Style简介 本工具通过以下三种方式为你(及你的团队)节省大量时间: 无须配置. 史上最便捷的统一代码风格的方式,轻松拥有. 自动代码格式化. 只需运行 ...