如有错误,欢迎指出。

互帮互助,共同进步。

更新时间:2020-01-09

节选自《C语言程序设计现代方法》第2版

1.起源

C语言是贝尔实验室的Ken Thompson、Dennis Ritchie等 人开发的UNIX操作系统的“ 副产品”。Thompson独白编写出了UNIX操作系统的最初版本,这套系统运行在DEC PDP-7计算机上。这款早期的小型计算机仅有16KB内存(毕竟那是在1969年)。

与同时代的其他操作系统样,UNIX系统最初也是用汇编语言编写的。用汇编语言编写的程序往往难以调试和改进,UNIX 系统也不例外。Thompson意 识到需要用一种更加高级的编程语言来完成UNIX系统未来的开发,于是他设计了一种小型的B语言。Thompson的B语言是在BCPL语言(20世纪60年代中期产生的一种系统编程语言)的基础上开发的,而BCPL语言又可以追溯到最早(且影响最深远)的语言之一一 Algol 60语言。

不久,Ritchie也加入到UNIX项目中,并且开始着手用B语言编写程序。1970年,贝尔实验室为UNIX项目争取到一台PDP-11计算机。当B语言经过改进并能够在PDP-11计算机上成功运行后,Thompson用B语言重新编写了部分UNIX代码。到了1971年,B语言已经明显不适合PDP-11计算机了,于是Ritchie着手开发B语言的升级版。最初,他将新开发的语言命名为NB语言(意为“New B”),但是后来新语言越来越偏离B语言,于是他将其改名为C语言。到了1973年,C语言已经足够稳定,可以用来重新编写UNIX系统了。改用C语言编写程序有一个非常重要的好处:可移植性。只要为贝尔实验室的其他计算机编写C语言编译器,他们的团队就能让UNIX系统也运行在那些机器上。

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

  1. 为什么说JAVA中要慎重使用继承 C# 语言历史版本特性(C# 1.0到C# 8.0汇总) SQL Server事务 事务日志 SQL Server 锁详解 软件架构之 23种设计模式 Oracle与Sqlserver:Order by NULL值介绍 asp.net MVC漏油配置总结

    为什么说JAVA中要慎重使用继承   这篇文章的主题并非鼓励不使用继承,而是仅从使用继承带来的问题出发,讨论继承机制不太好的地方,从而在使用时慎重选择,避开可能遇到的坑. JAVA中使用到继承就会有两 ...

  2. C# 语言历史版本特性(C# 1.0到C# 7.1汇总更新) C#各版本新特性 C#版本和.NET版本以及VS版本的对应关系

    C# 语言历史版本特性(C# 1.0到C# 7.1汇总更新) 2017年08月06日 11:53:13 阅读数:6705 历史版本 C#作为微软2000年以后.NET平台开发的当家语言,发展至今具有1 ...

  3. C# 语言历史版本特性(C# 1.0到C# 8.0汇总)

    历史版本 C#作为微软2000年以后.NET平台开发的当家语言,发展至今具有17年的历史,语言本身具有丰富的特性,微软对其更新支持也十分支持.微软将C#提交给标准组织ECMA,C# 5.0目前是ECM ...

  4. C# 语言历史版本特性(C# 1.0到C# 7.1汇总更新)

    历史版本C#作为微软2000年以后.NET平台开发的当家语言,发展至今具有17年的历史,语言本身具有丰富的特性,微软对其更新支持也十分支持.微软将C#提交给标准组织ECMA,C# 5.0目前是ECMA ...

  5. javascript语言历史

    起初,web站点事实上只不过是一个静态的HTML文档集,这些文档之间仅依靠一些简单的超链接(Hyperlinks)绑定在一起. 但很快,随着Web业务的快速普及和增长,网站管理者越来越希望自己所创建的 ...

  6. [转]C# 语言历史版本特性(C# 1.0到C# 8.0汇总)

    历史版本 C#作为微软2000年以后.NET平台开发的当家语言,发展至今具有17年的历史,语言本身具有丰富的特性,微软对其更新支持也十分支持.微软将C#提交给标准组织ECMA,C# 5.0目前是ECM ...

  7. 自己使用 1.C语言历史以及特点。

    1. C语言的发展及特点? C在1969--1973年间与Unix操作系统同时诞生:最富创造性的时期是1972年.另一次大的变化发生在1977到1979年间,当Unix系统的可移植性得到证明时.在后一 ...

  8. C# 语言历史版本和特性

    C# 语言版本和对应特性,以及发布时间,.Net Framework 版本和 VS 版本 C# 4.0 和C# 5.0 熟悉点吧, VS10 ,VS12 和13 .Net Framework 4.0 ...

  9. _杂谈_C语言历史

    早期的操作系统软件主要是用汇编语言(包括UNIX操作系统在内)编写的.由于汇编语言依赖于计算机硬件,所以程序的可读性和可移植性都比较差,所以呢,为了提高操作系统软件的可读性和可移植性,最好改用高级语言 ...

随机推荐

  1. JS: 复选框——ALL与A、B、C(选中ALL同时选中各子项)

    <!DOCTYPE html><html> <head>  <meta charset="utf-8">  <title> ...

  2. 获取选中行中的数据提取并且保存到txt

    function getchcount(query: TADOQuery): Integer;var i:integer;begin i:=0; with Query do begin Query.F ...

  3. Netty 中队列的使用

    任务队列中的Task有3种典型使用场景 用户程序自定义的普通任务 此前代码: 参考https://www.cnblogs.com/ronnieyuan/p/12016712.html NettySer ...

  4. Codeforces 1111C Creative Snap分治+贪心

    Creative Snap C. Creative Snap time limit per test 1 second memory limit per test 256 megabytes inpu ...

  5. 百度杀毒停止下载,个人PC杀毒软件真的走到尽头了吗?

    在时代浪潮的席卷下,不适应的服务和产品终将被淘汰.诺基亚如此,杀毒软件亦是如此.就在近日,久久沉寂的杀毒软件市场被投下一颗重磅炸弹--百度杀毒软件官网PC端不再提供下载,但手机端依然提供下载和杀毒服务 ...

  6. CentOS7 静默安装Oracle XE 11g

    Oracle XE简介 Oracle Database 11g 快捷版 (Oracle Database XE) 是一款基于 Oracle Database 11g 第 2 版代码库的小型入门级数据库 ...

  7. [LeetCode] 927. Three Equal Parts 三个相等的部分

    Given an array A of 0s and 1s, divide the array into 3 non-empty parts such that all of these parts ...

  8. 让vscode使用Pipenv工作环境

    1.查看Pipenv的位置 # 先激活Pipenv环境 pipenv shell # 获取当前虚拟环境的位置 pipenv --venv 2.打开setting.json配置文件 Ctrl+Shift ...

  9. 七十七、SAP中数据库操作之多表联合查询

    一.我们看一下SFLIGHT表和SPFLI表,表结构如下 二.这2个表的数据如下 三.我们代码如下 四.多表联合查询结果如下

  10. POJ 1177/HDU 1828 picture 线段树+离散化+扫描线 轮廓周长计算

    求n个图矩形放下来,有的重合有些重合一部分有些没重合,求最后总的不规则图型的轮廓长度. 我的做法是对x进行一遍扫描线,再对y做一遍同样的扫描线,相加即可.因为最后的轮廓必定是由不重合的线段长度组成的, ...