下面是一段 BANCStar 语言的程序代码:
2200211598,15985,22002,2200211599,15995,22002,2200211600,16005,22002,2200211601,16015,22002, 2200211602,16025,22002,2200211603,16035,22002,2200211604,16045,22002,2200211605,16055,22002, 2200211606,16065,22002,2200211607,16075,22002,2200211608,16085,22002,2200211609,16095,22002, 2200211610,16105,22002,2200211611,16115,22002,2200211612,16125,22002,2200211613,16135,22002, 2200211614,16145,22002,2200211615,16155,22002,2200211616,16165,22002,2200211617,16175,22002, 2200211618,16185,22002,2200211619,16195,22002,2200211620,16205,22002,2200211621,16215,22002, 2200211622,16225,22002,2200211623,16235,22002,2200211624,16245,22002,2200211625,16255,22002, 2200211626,16265,22002,2200211627,16275,22002,2200211628,16285,22002,2200211629,16295,22002, 2200211630,16305,22002,2200211631,16315,22002,2200211632,16325,22002,2200211638,16385,22002, 2200211639,16395,22002,2200211677,22002,22002,2200211678,22002,22002,2200211679,22002,22002, 2200211680,22002,22002,2200211691,22002,22002,2200211693,22002,22002,2200211707,22002,22002, 2200211749,22002,22002,220023001,351,2,10190,3512,22002,2200210191,3522,22002,2200210192, 3522,22002,2200210193,3522,22002,220023000,192,1,10193,1902,1912,192210863,3552,22002, 2200210864,3562,22002,2200210865,3572,22002,2200210866,3582,22002,2200210867,3592,22002, 2200210505,3662,22002,2200210414,3912,22002,2200210415,3922,22002,2200210416,3932,22002, 2200210563,4072,22002,2200210562,4082,22002,2200210566,4102,22002,22002,3001,,,31597,10001, 716,10831598,10001,785,10831599,10001,717,10831600,10001,710,10731601,10001,786,10831602, 10001,715,10831603,10001,787,10831604,10001,714,10831605,10001,713,10831606,10001,712, 10831607,10001,711,10831608,10001,765,10831609,10001,766,10831617,10001,767,10831618,10001, 768,10831619,10001,769,10831620,10001,770,10831621,10001,771,10831622,10001,772,10831623, 10001,776,10831624,10001,777,10831625,10001,778,10831626,10001,779,10831627,10001,780, 10831628,10001,781,10831629,10001,782,10831630,10001,797,
想象一下,上班第一天就被交给了这样一些程序代码。1990年2月,我就是这样的。一个7人组成的团队维护着一批打印到纸上能有几百页的这样的代码,都是已经发布到生产环境的。并不是我们发明了它们,只是我们不得不要用它们。作为奇闻轶事,我在这里展示一张这些代码残存的文档的图片,这个文档格式是使用我开发的一个工具生成的,它仅可能的模仿了早期我们那些程序员在纸上那笔来研究这些文档的样子。 关于这段代码 纸上的这些代码是 再来一段下面的这段代码也是来自生产系统环境。我并不太担心在这里公布这么多具有版权问题的代码信息,因为这世界上大概只有10个人能看懂它们。
像这样打印出来的代码文件我估计有1350多张,大部分每张上都有几百行,有些甚至上千行。第一洲际银行的银行分部用这些程序来处理业务。 BANCStar语言里一些有趣的特征:
我能记得的一些细节BANCStar代码实际上是用一个“屏面生成程序(screen generator)”生成的,这个工具最初大概是用来可视化编程的。但5.1c版的这个生成器功能太有限,一些有经验的程序员很快就开始研究它的工作原理,并且开始直接修改它生成的中间代码,这些中间代码就是生产环境实际运行的代码。 我在1990年代初来到西雅图,加入了这个由7个程序员组成的开发小组,这个小组的日常工作就是用BancSTAR机器语言直接编写代码,完全放弃了那个代码生成器。当他们第一次向我展示这种语言时,我认为他们在跟我开玩笑。但几个星期后,我也开始学会阅读和编写这种代码了——借助于每个BancSTAR语言程序员最喜爱的工具:一个点阵打印机,一大把各种颜色的用于高亮某段代码的彩笔,以及一种纸带,上面打印满了各种系统提示表格,类似速查手册。在每次系统有任何修改变动后,我们都认真的、小心翼翼的修改相关数据、文档。(关于重复使用的临时寄存器,我可不是在开玩笑;如果你需要用到一个常量整数1000,你就需要到程序去寻找,看看其他人是否在其它地方使用了相同的值,你要把你的程序链接到这个地方,并期望在你使用它的过程中不被其他人修改。) 我们开发了一些内部工具来帮助我们用BancSTAR语言编写大型应用,还曾经将这些应用向这种语言的所有者Broadway & Seymour公司展示,但我想他们绝对不会相信我们是直接用他们底层的、没有文档说明的机器代码编写的。 |