有一种说法:中国线装书是信任文化,现代胶装书是怀疑文化。从肢体语言看:手捧线装书,从上读到下、从右读到左,不住地点头;现代胶装书,从左读到右、从上读到下,不住地摇头。
横行应该是西方语言文字的传统,比如拉丁语。此处“横行”的一个含义是FORTRAN为IBM704量身定做的语言,扩张不是它的本义,另一个含义是指西方文字编排与阅读是先从左到右、横扫文字世界。
低调是指FORTRAN的数组存放与处理次序是取低头姿态,一路走低(列),偶一抬头(建立新列),又低眉顺沿(成语谐用)了。
我最近喜欢做些计算机比较语言学的粗浅思考。数组据说是最重要的数据结构,然而,在招牌语言中,却是竖排的FORTRAN横排的C。这是为何?FORTRAN二维数据、三维数组、多维数组的读取顺序为什么与人类的自然语言背道而驰?比如多语言混合编程,数据结构上的方凿圆枘、鸡同鸭讲构成了一道先天的屏障。为何FORTRAN不遵从西方传统的先左后右逻辑,却与古中国文化结构结下不解之缘?莱布尼茨的二进制据说可能受中国文化的启发,巴库斯也有中国情结吗?
文明源头之一的阿拉伯文字从右到左、从上到下的编排结构别具一格。中国线装书的从上到下、从左到右也不同凡响。然而,巴库斯为什么另辟蹊径、别出心裁,先从上至下、再从左到右呢?
下面转述一段网上关于FORTRAN与ALGOL的文字:
“FORTRAN是人类所拥有的第一种高级语言。它把语言用那些特定机器所能接受的字符序列(亦就是IBM公司用来向计算机输入程序的卡片穿孔设备的48个字符)来定义.而它的那种卡片输入方式决定了很多的程序书写格式。例如通常把语言中的一个语句写在一个记录上,也就对应着穿孔的一张卡片;各个语句按顺序读入,对应着卡片的顺序读入;卡片的格式是固定的,构成后来所谓的固定源码形式。
不久降生的另外一种高级语言是ALGOL,这个名称就是算法语言的简称,因此可以预料到这种语言具有与FORTRAN非常不同的面貌,因为这种语言在设计初始,就不是计算机制造公司为某种特定机器设计的,而是纯粹面向描述计算过程的,也就是所谓面向算法描述的。
ALGOL最早是在1958年由德意志联邦共和国应用数学与力学协会提出的。ALGOL的设计目标显然比FORTRAN要来得高远,它希望不仅能够用于人对机器转述计算过程,也希望能够直接用于人与人之间的对于算法的描述。
为了实现这个通用的目的,ALGOL的字符不是针对任一具体机器定义的,因此它不反映任何一台特定机器的特性。实际上ALGOL所使用的字符与词汇完全是独立定义的。除此之外ALGOL还具有许多更加独特的性质。
不过语言终久摆脱不了它的市场属性,由于FORTRAN更加具有市场侵占能力,最终FORTRAN至今还是主流的科学计算编程语言,而ALGOL语言则不幸成为了任人凭吊的古董。”
我推测,FORTRAN对于数组结构的竖排不是出于巴库斯个人的喜好,而是机器的制约,后来由于市场与技术惯性,只能直来直去了(指垂直意)。
当然,以上是我从西方自然语言顺序天然优先角度的考虑,横排具有阅读优势。
不过从数据库结构来看,竖排的价值也是可以想见的,因为普通纸张的宽度以及早期打印机的迷你宽度(80列当时已是豪华配置,PC1500的打印纸其实只能称作打印竖条纸)都是极其有限的。因此,数据库的字段名与记录名只有一种选择,横为字段竖为记录。此时,如以行优先进行录入,那么,只能一个记录一个记录地手工敲击。我们知道,同一字段的数据是同质的、近似的,而不同字段可能是迥然有异的。以三字段为例:姓名、部门、性别、销售金额。在部门、性别等方面,先进行纵向录入的合理性、便利性一望即知。以数据处理而论,比如销售金额,往往是人们关心的,放在一列进行处理非常方便,也便于数据质量控制。Excel的数据处理也是列优先。
综上所述,数组处理的行优先反映了自然语言的特点,列优先反映了数据库处理的优势。至于两者运行效率差异的考量在计算机语言发明中可能并不是最重要的。
https://wap.sciencenet.cn/blog-350729-621588.html
上一篇:
并不周延的“湿周”——明渠水力学中的湿周与水力半径字面谈下一篇:
莫言的中国忽然发出了时代最强音——红高梁又走向世界了!