1940年代,最早的开始,编程语言是机器语言,用0/1表示的、计算机能直接识别和执行的一种机器指令的集合。最早的编程方式,就是给纸带打孔或者卡片机打孔。机器语言直接与硬件沟通,极具针对性,但是非常难于理解和编写。
为了解决这个问题,汇编语言被发明了。它使用助记符号来代替机器语言中的二进制代码,使得程序员可以更容易地理解和编写程序。汇编语言经过汇编编译器将其编译为机器码,由计算机执行。汇编语言是机器相关的,即一种汇编语言只能在特定的计算机硬件上运行,这大大限制了其可用性。
1950年代高级语言开始出现。为了探索一种适于国际通用的编程语言,1958年由ACM(美国计算机协会)和GAMM(德国应用数学和力学协会)的代表们在苏黎世会议上提出国际代数语言(International Algebraic Language,IAL) ,后定名为ALGOL 58,即算法语言。1960年5月的巴黎会议上,发表了"算法语言Algol 60报告",确定了程序设计语言Algol 60,并且迅速成为科学和研究计算的主要语言。Algol 60是程序设计语言发展史上的一个里程碑,它标志着程序设计语言成为一门独立的科学学科,并为后来软件自动化及软件可靠性的发展奠定了基础。
1963年英国剑桥大学推出了CPL(Combined Programming Langurage)语言。CPL语言在ALGOL 60 的基础上接近硬件一些,但规模比较大,难以实现。1967年英国剑桥大学的马丁·理查兹(Matin Richards)开发了BCPL,即 “Basic Combined Programming Language”。BCPL 作为一个简洁的编译器写作语言而开发的,它的目的是为操作系统和编译器的开发提供便利,同时保持语言的可移植性。它在编程语言设计中树立了简约和可移植性的原则,对后续程序设计影响较大。
在1969年,Ken Thompson和Dennis Ritchie等人开始在DEC的PDP-7计算机上开发UNIX系统,最初UNIX是用汇编语言编写的。
为了让UNIX可移植到不同的硬件平台上,1970年Ken Thompson将BCPL简化成了新的B语言,并用它来重新编写了UNIX。但B语言存在一些局限,例如对非PDP-11计算机的移植性和效率问题。为了克服这些限制并更好地利用在PDP-11上出现的更复杂数据类型,1972-1973年丹尼斯·里奇(Dennis Ritchie)开始设计C语言。取了BCPL的第二个字母作为这种语言的名字,也算上ALGOL、BCPL、B的一种延续。
他在B语言的基础上增加了数据类型和其他在结构化编程中有用的特性。到1973年,UNIX操作系统的内核及其主要组件都用C语言重写了,这一改动显著提高了UNIX的移植性。
C跟随着UNIX系统的一起传播。1978年,Brian Kernighan 和 Dennis Ritchie 合著了《C程序设计语言》(The C Programming Language),是C语言的权威指南,被称为 K&R C。C语言的第一个官方标准化努力发生在1983年,由美国国家标准协会(ANSI)进行,并于1989年发布了第一个标准ANSI C。之后,国际标准化组织(ISO)也采纳了这个标准,并且还在此后多次更新了C语言的标准。
C语言的特点包括高效、灵活、功能强大和紧凑,它提供了对硬件的紧密控制能力,同时仍然提供足够的抽象以编写可读的程序,这些特性使其成为开发系统软件(如操作系统和编译器)的首选语言。
C语言影响了众多后续的编程语言,比如C++、Objective-C、Java和C#等,是软件开发历史上一个里程碑式的创新。
在2024年最新编程语言统计中,C语言挺立在第二的位置。纵观编程语言的历史,C语言一直排在第一或第二的位置,可见其地位。
附
TIOBE编程语言排行榜: https://www.tiobe.com/tiobe-index/