1970年,B语言是贝尔实验室员工
肯·汤普逊以BCPL(基本组合程序设计语言)为基础,设计并创新出一种非常简单且易于操作
计算机硬件的
高级语言。然后他用B语言编写了操作系统
unix。1972年,
丹尼斯·里奇在B语言的基础上设计出了
c语言。
简介
B语言是贝尔实验室开发的一种通用的程序设计语言,是一种无类型语言,所有的数据都和机器字相对应,并且程序员可以直接通过内存地址操作内存。B语言最初在DEC的PDP-7和PDP-11小型机的早期Unix版本和Honeywell机器的GCOS系统上实现。
B语言的无类型特性使得其在PDP-11机器上无法以比较优雅的方式访问字符类型,因而从1971年开始,Dennis Ritchie开始对B语言进行改造,其中最重要的是引入了数据类型的概念,这些改造最终使B语言演化为了
计算机发展历史上最为重要的
编程语言——
c语言。
时至今日,除了在一些古老的大型机或是特殊的嵌入式平台上,B语言已经芳踪难觅了。但B语言在编程语言发展历史上重要的承前启后的里程碑地位,却将永远为人们铭记。
演变历史
B语言是从BCPL系统中删减了
肯·汤普逊认为非必备的组件以便能运行在当时的小型计算机上而产生的。B语言还包括了汤普逊的一些个人偏好(主要在一些特定的程序中减少非空格字符的数量)。
和BCPL以及
Forth类似,B语言只有一种数据类型,
计算机字。大部分操作将其作为整数对待(例如进行+、-、*、/操作),但其余操作将其作为一个复引用的内存地址。在许多方面B语言更像是一个早期版本的
c语言,它还包括了一些库函数,其作用类似于C语言中的标准输入/输出函数库。
实际示例
下面是来自Ken Thompson的B语言用户手册的例子:
/* The following
函数 will print a non-negative number, n, to
the base b, where 2\u003c=b\u003c=10, This routine uses the fact that
in the ANSCII character set, the digits 0 to 9 have sequential
code values. */
printn(n,b) {
extrn putchar;
auto a;
if(a=n/b) /* assignment, not test for equality */
printn(a, b); /* recursive */
putchar(n%b + '0');
}