C语言、编程语言发展史
前言
了解和学习一门语言、一个系统乃至方方面面的任何东西时,如果不知道其历史和现状而只是一上来就一味地闷头苦学,你就很容易“一叶障目不见泰山”。
如此这般火急火燎的就上手苦干,私以为大错特错,所谓“学而不思则罔”。当然,上手苦干也是之后的很重要的部分。
想要了解C语言的历史,请慢慢品味如下这long long ago 的故事,这涉及到了很多公司和人物,且听我一一道来。
1. at&t(美国电话电报公司)
-
为什么要介绍at&t 呢?
这是因为,C语言和Unix起源于贝尔实验室,而要了解贝尔实验室,我们得先从其所属所属公司at&t 开始……
-
由其名字(美国电话电报公司)就可以看出来at&t 主要致力于通讯领域,它起源于遥远的1877年,距今已经有100多年的的历史了(我想到了马云说要做101年的企业,愿你成功!)。
到今天,单就这一个at&t 独立公司来说,它目前是主营电信业务,是美国第二大移动运营商。
-
然而,要说at&t 就不得不从他的创始人Bell - 贝尔 开始说起…
2. 贝尔和他的贝尔系统
请注意,这不是贝尔·格里尔斯(Bear Grylls),尽管这guy很酷~
我们的主角叫亚历山大·格拉汉姆·贝尔(Alexander Graham Bell,1847-1922),他是美籍加拿大著名发明家和企业家,他获得了世界上第一台可用电话机的专利权,是“电话之父”。它以电话专利权起家创建了贝尔电话公司 ,这家公司和之后的大量衍生公司最终被称为贝尔系统 。此外,他还发明了载人巨型风筝、水翼船、改良了留声机等。
2.1 Bell的黑历史…
2002年6月15日,美国国会通过一项决议,判定意大利人安东尼奥·梅乌奇(Antonio Meucci)为电话的发明者。换言之他才是“电话之父”!
那么历史到底是怎样的呢?根据可以网上可以查到的资料显示:
-
意大利人梅乌奇在1849年的一天在他研究电生理学的过程中发现了“电话的原理”并开始研究他称之为“会说话的电报机”的装置。此时,亚历山大·贝尔才两岁…
-
在移居美国之后,因为不会英语的关系他始终融入不进主流社会,得不到应有的认可,甚至他连申请专利的钱都不够。更加让人心寒的是,1876年和梅乌奇共用一个实验室的贝尔向美国专利局提出申请电话的专利权!
-
当然,梅乌奇愤而提起上诉,当时最高法院已经同意以欺诈罪指控贝尔,但就在胜利曙光要显现时,年近80穷困潦倒、病魔缠身的梅乌奇却于1889年带着遗憾离开了人世。
历史就是如此具有魔力,成王败寇,从来如此。贝尔获得了电话的专利权,成为“电话之父”,名声大噪,创建了贝尔电话公司(at&t前身)。自此,历史的车轮一直走到了今天。当然,我们不能因为一点而完全否认一个人,贝尔还是为社会、科技的发展作出了卓越的贡献!
后人只能从当时留下的不知真假的只言片语中猜测当时发生了什么。如果以上是真实的历史,那么我相信随着美国国会的一纸决议,梅乌奇终于可以稍感欣慰了。
2.2 贝尔系统历史
贝尔创建的贝尔系统,也可以用at&t 代称,在其100多年的历史中,经历了多次的拆分和重组(由于自身发展或是政府反垄断)。
贝尔系统包括母公司at&t 和数量庞大的子公司和研究所,曾长期垄断了80%-90%的美国市话和长途业务。而到今天,现在的at&t 已经是被拆分了几次之后的结果了。贝尔系统 的历史如下:
-
1877年,贝尔 成立了一家叫做美国贝尔电话公司 的公司。
-
1895年,贝尔 又成立了一个公司来负责其正在开发的美国全国范围的长途业务,这就是美国电报电话公司 - at&t 。
-
1899年,at&t 整合了贝尔电话公司的业务,成为了贝尔系统(贝尔的一系列公司)的母公司。
-
1984年,美国司法部根据《反托拉斯法》拆分了at&t ,将其分为8个公司,1个公司继承了母公司名字at&t (专营长途话务)、7个本地电话公司(贝尔七兄弟)。
-
1995年,at&t 再次被分离为3个公司,除了1个at&t 外,分出了2个从事设备开发制造的朗讯科技 和NCR 。至此at&t只保留了通信服务业务。
-
2005年,原贝尔七兄弟之一的西南贝尔 ,以160亿收购了at&t ,合并后的企业保留了at&t 名字。
题外话,今天美国NBA中马刺队(San Antonio Spurs)的主场就叫at&t Center
说了以上那么多,其实和我们关系最大的是at&t 的一个部门:贝尔实验室。
3. Bell Labs - 贝尔实验室
贝尔实验室如雷贯耳,自1925年以来,实验室共获得了两万五千多项专利(请自行与国内大部分扯淡专利区分开来),8项诺贝尔奖。
在20世纪二三十年代,贝尔实验室的研究人员推出了远距离电视传输、数字计算机,领导了有声电影的开发;两项信息时代的重要发明 - 晶体管和信息论都是贝尔实验室在40年代研究出来的。在50、60年代,贝尔实验室发明了太阳能电池、激光的理论和通信卫星。
贝尔实验室的历史如下:
-
1925年,at&t 收购了西方电子公司的研究部门,成立了一个叫做“贝尔电话实验室公司”的独立实体,后来改称为:贝尔实验室 。
-
1995年,从at&t 分离出了独立公司朗讯科技(Lucent Technologies),贝尔实验室一并归入朗讯科技 麾下。
-
2006年,法国阿尔卡特(Alcatel)公司 收购了朗讯,在合并后的新公司中,朗讯只占40%,其合并后的规模仅次于美国思科,新公司称为:阿尔卡特-朗讯(Alcatel - Lucent),贝尔实验室目前属于阿朗。
-
2008年,由于阿郎 长期亏损,不得不出售了已经有46年历史的贝尔实验室大楼(上图),值得欣慰的是,购得大楼的地产开发商并没有完全抹掉大楼的计划。
-
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语言的编程语言的历史简直不要太漫长,我简单总结列表如下:
-
CPL(Combined Programming Language) - 1963
CPL是1963年剑桥大学发明的 -
BCPL(Base Combined Programming Language) - 1967
剑桥的Matin Richards 对CPL做了简化,推出了BCPL -
B(B Programming Language) - 1969
贝尔实验室的Ken Thompson(肯·汤普森) 对BCPL又做了改进,设计出了简单的且接近硬件的B语言,并用B语言写了第一个UNIX OS -
C(C Programming Language) - 1972
贝尔实验室的另外一个人Dennis MacAlistair Ritchie(D.M.Ritchie - DM里奇)在B的基础上设计出了C语言。C 保持了B的优点(精炼、接近硬件),又克服了他的缺点(过于简单,数据无类型) -
C++(C plus plus Programming Language) - 1983
还是贝尔实验室的人,Bjarne Stroustrup(本贾尼·斯特劳斯特卢普) 在C语言的基础上推出了C++,它扩充和完善了C语言,特别是在面向对象编程方面。一定程度上克服了C语言编写大型程序时的不足。 -
Java(Java Programming Language) - 1995
Sun公司的Patrick Naughton的工作小组研发了Java语言,主要成员是James Gosling(詹姆斯·高斯林) -
C#(C Sharp Programming Language) - 2000
Microsoft公司的Anders Hejlsberg(安德斯·海尔斯伯格)发明了C#,他也是Delphi语言之父。
总结
随着时代和社会的发展的需要,编程语言也跟着发生了很大的改变,旧有的语言不断的完善、增加了新的特性;同时,也有很多优秀的新编程语言出现。
但站在巨人肩膀上的我们,应该记得那些似乎要消散在历史中的瞬间。