首页 > 其他分享 >C语言——简介

C语言——简介

时间:2023-05-25 17:44:33浏览次数:40  
标签:里奇 语言 简介 C语言 UNIX ISO BCPL

C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%-20%。因此,C语言可以编写系统软件。

 

C语言之所以命名为C,是因为C语言源自Ken Thompson发明的B语言,而B语言则源自BCPL语言。


1967年,剑桥大学的Martin Richards对CPL语言进行了简化,于是产生了BCPL(Basic Combined Programming Language)语言。
20世纪60年代,美国AT&T公司贝尔实验室(AT&T Bell Laboratories)的研究员肯·汤普森(Kenneth Lane Thompson)闲来无事,手痒难耐,想玩一个他自己编的,模拟在太阳系航行的电子游戏——Space Travel。他背着老板,找到了台空闲的小型计算机——PDP-7。但这台电脑没有操作系统,而游戏必须使用操作系统的一些功能,于是他着手为PDP-7开发操作系统。后来,这个操作系统被命名为——UNICS(Uniplexed Information and Computing Service)。
1969年,美国贝尔实验室的Ken Thompson,以BCPL语言为基础,设计出很简单且很接近硬件的B语言(取BCPL的首字母),并且用B语言写了初版UNIX操作系统(叫UNICS)。
1971年,同样酷爱Space Travel的丹尼斯·里奇为了能早点儿玩上游戏,加入了汤普森的开发项目,合作开发UNIX。他的主要工作是改造B语言,使其更成熟。 [6]
1972年,美国贝尔实验室的丹尼斯·里奇在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。
1973年初,C语言的主体完成。汤普森和里奇迫不及待地开始用它完全重写了UNIX。此时,编程的乐趣使他们已经完全忘记了那个“Space Travel”,一门心思地投入到了UNIX和C语言的开发中。随着UNIX的发展,C语言自身也在不断地完善。直到2020年,各种版本的UNIX内核和周边工具仍然使用C语言作为最主要的开发语言,其中还有不少继承汤普逊和里奇之手的代码。 [6]
在开发中,他们还考虑把UNIX移植到其他类型的计算机上使用。C语言强大的移植性(Portability)在此显现。机器语言和汇编语言都不具有移植性,为x86开发的程序,不可能在Alpha、SPARC和ARM等机器上运行。而C语言程序则可以使用在任意架构的处理器上,只要那种架构的处理器具有对应的C语言编译器和库,然后将C源代码编译、连接成目标二进制文件之后即可在哪种架构的处理器运行。 [6]
1977年,丹尼斯·里奇发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。
C语言继续发展,在1982年,很多有识之士和美国国家标准协会(ANSI)为了使C语言健康地发展下去,决定成立C标准委员会,建立C语言的标准。委员会由硬件厂商、编译器及其他软件工具生产商、软件设计师、顾问、学术界人士、C语言作者和应用程序员组成。1989年,ANSI发布了第一个完整的C语言标准——ANSI X3.159-1989,简称“C89”,不过人们也习惯称其为“ANSI C”。C89在1990年被国际标准化组织(International Standard Organization,ISO)一字不改地采纳,ISO官方给予的名称为:ISO/IEC 9899,所以ISO/IEC9899:1990也通常被简称为“C90”。1999年,在做了一些必要的修正和完善后,ISO发布了新的C语言标准,命名为ISO/IEC 9899:1999,简称“C99”。 [6] 在2011年12月8日,ISO又正式发布了新的标准,称为ISO/IEC9899:2011,简称为“C11”。

标签:里奇,语言,简介,C语言,UNIX,ISO,BCPL
From: https://www.cnblogs.com/Formulate0303/p/17432398.html

相关文章

  • C语言中的溢出(数组越界)
    在C陷阱与缺陷中有一样例如下:#include<stdio.h>intmain(){inti,a[10];for(i=1;i<=10;++i)a[i]=0;return0;}由于数组a只有10个元素,它们分在在a[0],a[1],...,a[9],该程序非法使用了a[10],结果导致的是该程序成了死循环。原因:编译该代......
  • npm简介
    npm(NodePackageManager)是Node.js的包管理器,它是随同Node.js一起安装的。npm允许开发者在自己的项目中方便地安装、更新、卸载和管理各种开源的Node.js模块。使用npm,你可以通过命令行界面(CLI)执行以下常用操作:1.安装包:通过`npminstall`命令安装指定的包。例如:npminstallpa......
  • C语言复习题
    写在前面:大家好,我是花狗Fdog,来自内蒙古的一个小城市,目前在泰州读书。很感谢能有这样一个平台让我能够在这里分享所学所感。我喜欢编程,喜欢代码,喜欢去做一个程序员。努力学习,争取多年后,给亲人更好的生活。文章目录一、选择题二、填空题三、编程题一、选择题1.源程序TEST.C经......
  • C++ 简介
     C++是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。C++被认为是一种中级语言,它综合了高级语言和低级语言的特点。C++是由BjarneStroustrup于1979年在新泽西州美利山贝尔实验室开始设计开发的。C++进......
  • c语言实现扫雷
    一、简介其中包括一个头文件function.h两个源文件game.c和function.c二、function.h代码#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineROW9#defineCOL9#defineROWSROW+2#defineCOLSCOL......
  • C语言第四天
    (*p)带括号的都是指针指针数组:指针的数组,这个数组中所有的元素都是指针类型数组指针:数组的指针,这个指针存放着一个数组的首地址,或者说这个指针指向一个数组的首地址,定义的时候 inta[3];int(*p)[3]=&a//正确&a是指整个数组的首地址int(*p)[3]=a;//a是指数组首元素的首......
  • C语言函数大全-- x 开头的函数(4)
    C语言函数大全本篇介绍C语言函数大全--x开头的函数1.xdr_struct1.1函数说明函数声明函数功能bool_txdr_struct(XDR*xdrs,void*addr,...);用于编码或解码结构体数据参数:xdrs:指向XDR数据结构的指针,表示要进行编码或解码的数据流addr:指向待编......
  • 关于C语言习题二
    1、5*5数组中找出一行中最大的数,同时也是一列中最大的数。#include<stdio.h>#include<stdlib.h>#include<time.h>#defineN5intmain(){srand((unsigned)time(NULL));inti,j;inta[5][5];introw;intcol;intmax;intfound=0;do{......
  • C语言--文件随机读写
    文件随机读取fseek(文件指针,偏移量,int文件指针当前位置); //SEEK_SET文件起始位置 //SEEK_END文件结束位置ftell(文件指针); //返回文件指针相对起始位置的偏移量rewind(文件指针); //让文件指针回到起始位置文件结束判定perror("随意");//补充//功能同strerro......
  • C语言学习记录04
    逻辑操作符:条件操作符||三目操作符:例://i>j成立,为真,所以i为真,j为假,所以结果为i。逗号表达式:下表引用操作符:函数调用操作符:常见关键字:命名规则:......