• C语言的历史


    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语言已经成功的在时代发展的过程中留下了自己的深深的印记。

     

      

  • 相关阅读:
    jqgrid 设置单元格编辑/不可编辑
    [坑]c#中double转字符串精度丢失问题记录
    twemproxy接收流程探索——剖析twemproxy代码正编
    twemproxy代码框架概述——剖析twemproxy代码前编
    twemproxy架构分析——剖析twemproxy代码前编
    剖析twemproxy前言
    mysql交互协议解析——mysql包基础数据、mysql包基本格式
    有关binlog的那点事(三)(mysql5.7.13)
    有关binlog的那点事(二)(mysql5.7.13)
    slave IO流程之二:注册slave请求和dump请求
  • 原文地址:https://www.cnblogs.com/guochaoxxl/p/11839826.html
Copyright © 2020-2023  润新知