研究!rsc公司

关于编程的想法和链接,通过

RSS(RSS)

B语言
发布于2008年2月8日星期五。

我喜欢阅读过去的编程语言。(我可能也很喜欢阅读未来的编程语言,但这些语言很难找到。)今天的链接是对类型之前的编程世界的一瞥。

当然,C编程语言的前身是Ken Thompson的B,这反过来又受到了Martin Richards的BCPL的影响*

汤普森1972年的技术备忘录”用户对B的引用“(PDF,1MB;也HTML格式)详细描述了B。关于B最引人注目的部分是它与C有多相似。根本的区别是缺少类型,或者说是缺少单一类型:机器字。正如Thompson所说,“没有检查可以确保没有类型不匹配。同样,也没有想要或不想要的类型转换。”对我来说,类型的缺乏给B带来了与C截然不同的味道。从小用类型编程,能够取消引用任何值似乎没有系安全带。

这个BCPL手册也是在线的,由Dennis Ritchie提供。很容易看出B是BCPL通过汤普森的极简主义情感过滤出来的。在一个1989年采访汤普森回忆道,“[B]非常小,非常干净。它与BCPL是同一种语言,看起来完全不同,从语法上看,它是一个重做。语义与BCPL.实际上,它的语法是,如果你仔细看,你会说它是C。因为实际上它是C,没有类型。”

B备忘录还包含其他有趣的琐事。汤普森定义了这个新奇的虽然循环转到,这表明当时“结构化”编程是多么罕见。备忘录还包含了可能是第一个发布的打印.

在一种唯一类型是机器字的语言中,字符处理特别麻烦。B包含基本体烧焦利查尔从字符串(向量)中提取和存储字符。在上面链接的BCPL历史页面上,Ritchie说“C的发明部分是为了提供一种合理的方式来处理以单词为导向的语言开头的字符。”

B拥有全套=操作操作员(后来是什么操作=在现代C)中,不只是对于像=+=-也适用于比较运算符:===,=!=,=<,=<=,=>、和=>=不幸的是,手册末尾指出,这些比较运算符都没有实际实现,也没有=/=&.

Brian Kernighan的1973年B教程(PDF;也HTML格式)包含可能是第一个“hello,world”程序的内容。(请参阅PDF的第4页。)


*有一个古老的故事,在贝尔实验室,对于C的后继者应该被称为D(按照字母表)还是P(按照BCPL中的字母),存在着争论,而Bjarne Stroustroup则选择了C++这个名字来结束争论。在拉里·沃尔1999年的演讲中“Perl,第一种后现代计算机语言,”他说Perl是C的真正继承者,它采用了BCPL中剩下的两个字母作为其传统的脚本扩展。