前言

了解和学习一门语言、一个系统乃至方方面面的任何东西时,如果不知道其历史和现状而只是一上来就一味地闷头苦学,你就很容易“一叶障目不见泰山”。

如此这般火急火燎的就上手苦干,私以为大错特错,所谓“学而不思则罔”。当然,上手苦干也是之后的很重要的部分。

想要了解C语言的历史,请慢慢品味如下这long long ago 的故事,这涉及到了很多公司和人物,且听我一一道来。


1. at&t(美国电话电报公司)

  1. 为什么要介绍at&t 呢?

    这是因为,C语言和Unix起源于贝尔实验室,而要了解贝尔实验室,我们得先从其所属所属公司at&t 开始……

  2. 由其名字(美国电话电报公司)就可以看出来at&t 主要致力于通讯领域,它起源于遥远的1877年,距今已经有100多年的的历史了(我想到了马云说要做101年的企业,愿你成功!)。

    到今天,单就这一个at&t 独立公司来说,它目前是主营电信业务,是美国第二大移动运营商。

  3. 然而,要说at&t 就不得不从他的创始人Bell - 贝尔 开始说起…

2. 贝尔和他的贝尔系统

请注意,这不是贝尔·格里尔斯(Bear Grylls),尽管这guy很酷~

我们的主角叫亚历山大·格拉汉姆·贝尔(Alexander Graham Bell,1847-1922),他是美籍加拿大著名发明家和企业家,他获得了世界上第一台可用电话机的专利权,是“电话之父”。它以电话专利权起家创建了贝尔电话公司 ,这家公司和之后的大量衍生公司最终被称为贝尔系统 。此外,他还发明了载人巨型风筝、水翼船、改良了留声机等。

2.1 Bell的黑历史…

2002年6月15日,美国国会通过一项决议,判定意大利人安东尼奥·梅乌奇(Antonio Meucci)为电话的发明者。换言之他才是“电话之父”!

那么历史到底是怎样的呢?根据可以网上可以查到的资料显示:

  1. 意大利人梅乌奇在1849年的一天在他研究电生理学的过程中发现了“电话的原理”并开始研究他称之为“会说话的电报机”的装置。此时,亚历山大·贝尔才两岁…

  2. 在移居美国之后,因为不会英语的关系他始终融入不进主流社会,得不到应有的认可,甚至他连申请专利的钱都不够。更加让人心寒的是,1876年和梅乌奇共用一个实验室的贝尔向美国专利局提出申请电话的专利权!

  3. 当然,梅乌奇愤而提起上诉,当时最高法院已经同意以欺诈罪指控贝尔,但就在胜利曙光要显现时,年近80穷困潦倒、病魔缠身的梅乌奇却于1889年带着遗憾离开了人世。

历史就是如此具有魔力,成王败寇,从来如此。贝尔获得了电话的专利权,成为“电话之父”,名声大噪,创建了贝尔电话公司(at&t前身)。自此,历史的车轮一直走到了今天。当然,我们不能因为一点而完全否认一个人,贝尔还是为社会、科技的发展作出了卓越的贡献!

后人只能从当时留下的不知真假的只言片语中猜测当时发生了什么。如果以上是真实的历史,那么我相信随着美国国会的一纸决议,梅乌奇终于可以稍感欣慰了。

2.2 贝尔系统历史

贝尔创建的贝尔系统,也可以用at&t 代称,在其100多年的历史中,经历了多次的拆分和重组(由于自身发展或是政府反垄断)。

贝尔系统包括母公司at&t 和数量庞大的子公司和研究所,曾长期垄断了80%-90%的美国市话和长途业务。而到今天,现在的at&t 已经是被拆分了几次之后的结果了。贝尔系统 的历史如下:

  1. 1877年,贝尔 成立了一家叫做美国贝尔电话公司 的公司。

  2. 1895年,贝尔 又成立了一个公司来负责其正在开发的美国全国范围的长途业务,这就是美国电报电话公司 - at&t 。

  3. 1899年,at&t 整合了贝尔电话公司的业务,成为了贝尔系统(贝尔的一系列公司)的母公司。

  4. 1984年,美国司法部根据《反托拉斯法》拆分了at&t ,将其分为8个公司,1个公司继承了母公司名字at&t (专营长途话务)、7个本地电话公司(贝尔七兄弟)。

  5. 1995年,at&t 再次被分离为3个公司,除了1个at&t 外,分出了2个从事设备开发制造的朗讯科技 和NCR 。至此at&t只保留了通信服务业务。

  6. 2005年,原贝尔七兄弟之一的西南贝尔 ,以160亿收购了at&t ,合并后的企业保留了at&t 名字。

    题外话,今天美国NBA中马刺队(San Antonio Spurs)的主场就叫at&t Center

说了以上那么多,其实和我们关系最大的是at&t 的一个部门:贝尔实验室


3. Bell Labs - 贝尔实验室

贝尔实验室如雷贯耳,自1925年以来,实验室共获得了两万五千多项专利(请自行与国内大部分扯淡专利区分开来),8项诺贝尔奖。

在20世纪二三十年代,贝尔实验室的研究人员推出了远距离电视传输、数字计算机,领导了有声电影的开发;两项信息时代的重要发明 - 晶体管和信息论都是贝尔实验室在40年代研究出来的。在50、60年代,贝尔实验室发明了太阳能电池、激光的理论和通信卫星。

贝尔实验室的历史如下:

    1. 1925年,at&t 收购了西方电子公司的研究部门,成立了一个叫做“贝尔电话实验室公司”的独立实体,后来改称为:贝尔实验室 。

    2. 1995年,从at&t 分离出了独立公司朗讯科技(Lucent Technologies),贝尔实验室一并归入朗讯科技 麾下。

    3. 2006年,法国阿尔卡特(Alcatel)公司 收购了朗讯,在合并后的新公司中,朗讯只占40%,其合并后的规模仅次于美国思科,新公司称为:阿尔卡特-朗讯(Alcatel - Lucent),贝尔实验室目前属于阿朗。

    4. 2008年,由于阿郎 长期亏损,不得不出售了已经有46年历史的贝尔实验室大楼(上图),值得欣慰的是,购得大楼的地产开发商并没有完全抹掉大楼的计划。

    5. 2015年,诺基亚 宣布将以156亿欧元收购阿郎 ,预计2016年上半年完成。我想,如果贝尔实验室部门还存在,应该要归入诺基亚了。

      根据现有资料,贝尔实验室 的规模和人员已经大不如前,不知道未来在诺基亚中贝尔实验室 是否还会继续存在……但是,其辉煌灿烂的历史已经彪炳史册,值得我们永远崇敬了!


4. 贝尔实验室与软件行业

我觉得上面这段历史很有趣,无数的因果、偶然造就了今天五彩缤纷的世界……好吧,终于到了C语言部分了……好漫长,那么我们开始吧。

由上可知,贝尔实验室其实是专注于通讯领域的,但其对计算机软件领域的影响却也是无与伦比的!

4.1 B语言与UNIX

20世纪60年代,贝尔实验室的研究员Ken Thompson(肯·汤普森)发明了B语言,并使用B编了个游戏 - Space Travel,他想玩自己这个游戏,所以他背着老板找到了台空闲的机器 - PDP-7,但是这台机器没有操作系统,于是Thompson着手为PDP-7开发操作系统,后来这个OS被命名为 - UNIX。


Thompson(肯·汤普森)发明了UNIX

4.2 C语言

1971年,Ken Thompson的同事D.M.Ritchie(DM里奇),也很想玩Space Travel,所以加入了Ken Thompson,合作开发UNIX,他的主要工作是改进Thompson的B语言。

最终,在1972年这个新语言被称为C,取BCPL的第二个字母,也是B的下一个字母。


D.M.Ritchie(DM里奇)发明了C语言

4.3 C与UNIX

1973年,C主体完成。Ken Thompson和D.M.Ritchie迫不及待的开始用C语言完全重写了UNIX。此时编程的乐趣已经使他们完全忘记了那个“Space Travel”,一门心思的投入到了UNIX和C语言的开发中。自此,C语言和UNIX相辅相成的发展至今。

 
Ken Thompson(left)和D.M.Ritchie(right)


5. 类C语言起源、历史

C语言、C语言的起源以及类似C语言的编程语言的历史简直不要太漫长,我简单总结列表如下:

  1. CPL(Combined Programming Language) - 1963 
    CPL是1963年剑桥大学发明的

  2. BCPL(Base Combined Programming Language) - 1967 
    剑桥的Matin Richards 对CPL做了简化,推出了BCPL

  3. B(B Programming Language) - 1969 
    贝尔实验室的Ken Thompson(肯·汤普森) 对BCPL又做了改进,设计出了简单的且接近硬件的B语言,并用B语言写了第一个UNIX OS

  4. C(C Programming Language) - 1972 
    贝尔实验室的另外一个人Dennis MacAlistair Ritchie(D.M.Ritchie - DM里奇)在B的基础上设计出了C语言。C 保持了B的优点(精炼、接近硬件),又克服了他的缺点(过于简单,数据无类型)

  5. C++(C plus plus Programming Language) - 1983 
    还是贝尔实验室的人,Bjarne Stroustrup(本贾尼·斯特劳斯特卢普) 在C语言的基础上推出了C++,它扩充和完善了C语言,特别是在面向对象编程方面。一定程度上克服了C语言编写大型程序时的不足。

  6. Java(Java Programming Language) - 1995 
    Sun公司的Patrick Naughton的工作小组研发了Java语言,主要成员是James Gosling(詹姆斯·高斯林)

  7. C#(C Sharp Programming Language) - 2000 
    Microsoft公司的Anders Hejlsberg(安德斯·海尔斯伯格)发明了C#,他也是Delphi语言之父。

总结

随着时代和社会的发展的需要,编程语言也跟着发生了很大的改变,旧有的语言不断的完善、增加了新的特性;同时,也有很多优秀的新编程语言出现。

但站在巨人肩膀上的我们,应该记得那些似乎要消散在历史中的瞬间。

C语言、编程语言发展史的更多相关文章

  1. 计算机&编程语言发展史

    计算机&编程语言发展史 编辑于2020-11-18 计算机的基本组成 计算机的发展经历了哪几代? 第一代 电子管计算机 第二代 晶体管计算机 第三代 集成电路计算机 第四代 大规模和超大规模集 ...

  2. Java 语言的发展史

    维基百科引入 早期的Java 语言最开始只是Sun计算机(Sun MicroSystems)公司在1990年12月开始研究的一个内部项目.Sun计算机公司的一个叫做帕特里克·诺顿的工程师被公司自己开发 ...

  3. 2019-6-28笔记总结-编程语言发展史和python安装

    一.编程语言的发展史 1.机器语言(就是010101的二进制数,直接用二进制跟计算机直接沟通交流,直接操作硬件) 优点:计算机能够直接读懂,速度快 缺点:开发效率极低 2.汇编语言(用简单的英文标签来 ...

  4. day2编程语言发展史

    1.编程语言的发展史: 机器语言 优点:执行速度够快 缺点:开发效率非常低 汇编语言(通过英文字符组成) 优点:执行效率相较于机器语言略低. 缺点:执行效率相较于机器语言略高. 高级语言 c ,c++ ...

  5. C语言程序设计概述

    1 概论 1972年Dennis Ritchie发明了C语言,而后Dennis Ritchie又使用C语言重写了Unix系统,自那以后C语言逐渐受到了全世界大多数编程爱好者的喜爱,后期的主流操作系统L ...

  6. python 面向对象设计思想发展史

    这篇主要说的是程序设计思想发展历史,分为概述和详细发展历史 一,概述 1940年以前:面向机器 最早的程序设计都是采用机器语言来编写的,直接使用二进制码来表示机器能够识别和执行的 指令和数 据.简单来 ...

  7. C语言程序设计预报作业

    1. 阅读邹欣老师的博客--师生关系,针对文中的几种师生关系谈谈你的看法,你期望的师生关系是什么样的? 答:万物都是变化的,师生关系也一样.小学中学把老师看作春蚕,蜡烛的的比喻到了大学显然行不通了.大 ...

  8. C# 发展史

    C# 发展史 Intro 本文主要总结介绍C# 每个版本带来的不同的语言特性. C#,读作C Sharp,是微软推出的一种基于.NET平台的.面向对象的高级编程语言.是微软公司在2000年发布的一种新 ...

  9. python发展史

    一:Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum)(龟叔).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹 打发时间,决心开发一个新的脚本解释程序, ...

随机推荐

  1. [LeetCode] 701. Insert into a Binary Search Tree

    Given the root node of a binary search tree (BST) and a value to be inserted into the tree, insert t ...

  2. 第一个html文件

    1.新建记事本文件,后缀改为.html 2.添加: <html>  <head>  <title>jude`s first web</title>  & ...

  3. Linux内存管理--虚拟地址、逻辑地址、线性地址和物理地址的区别(二)【转】

    本文转载自:http://blog.csdn.net/yusiguyuan/article/details/9668363 这篇文章中介绍了四个名词的概念,下面针对四个地址的转换进行分析 CPU将一个 ...

  4. thinkphp中的__DIR__ __ROOT__ __APP__ __MODULE__ APP_PATH LIB_PATH MODULE_PATH 等是在哪里定义的?

    为什么会产生这样的 路径 常量等 的 困扰? 是由于 在tp中, 使用了多种形式的常量导致的, 比如, 有php语言本身的 "魔术常量", 有 php函数, 比如dirname定义 ...

  5. 文件查找:locate、find

    文件查找:在文件系统上查找符合条件的文件: locate, find 非实时查找(数据库查找):locate  //不是遍历系统文件,把当前系统目录下的所有文件抽取出来制作成一个索引(或者叫数据库), ...

  6. 3:JavaScript中的各类语句

    上面我们说完了数据类型和基本运算  下面说的就是各种类型的语句 --- ---------------------------------------------------------------- ...

  7. Jmeter 中对响应报文处理后断言用到BeanShell Assertion

    Jmeter中常用的断言可以是Response Assertion 如果需要对响应报文中的某个字符串进行解码,对解码之后的值在进行断言要怎么做呢? 仔细观察一下,可以用下面俩个元件 Regular E ...

  8. Mysql tinyint长度为1时在java中被转化成boolean型

    MySql 中的tinyint(1)的使用 在MySql中如何定义像Java中类型的Boolean类型数据..其实,mysql中 是没有直接定义成Boolean这种数据类型. 它只能定义成 tinyi ...

  9. Win7下怎么设置让远程桌面连接记住密码下次登录不需再输入

    远程桌面连接功能想必大家都不会陌生吧,特别是使用VPS服务器的用户们经常会用到,为了服务器的安全每次都会把密码设置的很复制,但是这样也有一个麻烦,就是每次要桌面远程连接的时候都要输入这么复杂的密码,很 ...

  10. Kali Linux 2016.2初体验

    前言 Kali Linux官 方于8月30日发布Kali Linux 2016的第二个版本Kali Linux 2016.2.该版本距离Kali Linux 2016.1版本发布,已经有7个月.在这期 ...