VimIy微民网,让世界倾听微民的声音! 设为首页 | 加入收藏 | 网站地图
当前位置:主页 > 大杂烩 >

世界上最让人抓狂的编程语言:BANCStar

整理时间:2013-09-12 12:17 来源:www.vimiy.com 作者:编辑 点击:

【楼主】2013-09-10 11:11

» 世界上最让人抓狂的编程语言:BANCStar
    英文原文:https://github.com/jloughry/BANCStar/blob/master/README.md
    
    下面是一段 BANCStar 语言的程序代码:
    
    2999,,,
    
    8600,,,1
    
    3000,829,6,30089
    
    10829,2446,22245,22012
    
    11585,15855,22002,22002
    
    11586,15865,22002,22002
    
    11587,15875,22002,22002
    
    11588,15885,22002,22002
    
    11596,15965,22002,22002
    
    11597,15975,22002,22002
    
    11598,15985,22002,22002
    
    11599,15995,22002,22002
    
    11600,16005,22002,22002
    
    11601,16015,22002,22002
    
    11602,16025,22002,22002
    
    11603,16035,22002,22002
    
    11604,16045,22002,22002
    
    11605,16055,22002,22002
    
    11606,16065,22002,22002
    
    11607,16075,22002,22002
    
    11608,16085,22002,22002
    
    11609,16095,22002,22002
    
    11610,16105,22002,22002
    
    11611,16115,22002,22002
    
    11612,16125,22002,22002
    
    11613,16135,22002,22002
    
    11614,16145,22002,22002
    
    11615,16155,22002,22002
    
    11616,16165,22002,22002
    
    11617,16175,22002,22002
    
    11618,16185,22002,22002
    
    11619,16195,22002,22002
    
    11620,16205,22002,22002
    
    11621,16215,22002,22002
    
    11622,16225,22002,22002
    
    11623,16235,22002,22002
    
    11624,16245,22002,22002
    
    11625,16255,22002,22002
    
    11626,16265,22002,22002
    
    11627,16275,22002,22002
    
    11628,16285,22002,22002
    
    11629,16295,22002,22002
    
    11630,16305,22002,22002
    
    11631,16315,22002,22002
    
    11632,16325,22002,22002
    
    11638,16385,22002,22002
    
    11639,16395,22002,22002
    
    11677,22002,22002,22002
    
    11678,22002,22002,22002
    
    11679,22002,22002,22002
    
    11680,22002,22002,22002
    
    11691,22002,22002,22002
    
    11693,22002,22002,22002
    
    11707,22002,22002,22002
    
    11749,22002,22002,22002
    
    3001,351,2,
    
    10190,3512,22002,22002
    
    10191,3522,22002,22002
    
    10192,3522,22002,22002
    
    10193,3522,22002,22002
    
    3000,192,1,
    
    10193,1902,1912,1922
    
    10863,3552,22002,22002
    
    10864,3562,22002,22002
    
    10865,3572,22002,22002
    
    10866,3582,22002,22002
    
    10867,3592,22002,22002
    
    10505,3662,22002,22002
    
    10414,3912,22002,22002
    
    10415,3922,22002,22002
    
    10416,3932,22002,22002
    
    10563,4072,22002,22002
    
    10562,4082,22002,22002
    
    10566,4102,22002,22002,
    
    3001,,,
    
    31597,10001,716,108
    
    31598,10001,785,108
    
    31599,10001,717,108
    
    31600,10001,710,107
    
    31601,10001,786,108
    
    31602,10001,715,108
    
    31603,10001,787,108
    
    31604,10001,714,108
    
    31605,10001,713,108
    
    31606,10001,712,108
    
    31607,10001,711,108
    
    31608,10001,765,108
    
    31609,10001,766,108
    
    31617,10001,767,108
    
    31618,10001,768,108
    
    31619,10001,769,108
    
    31620,10001,770,108
    
    31621,10001,771,108
    
    31622,10001,772,108
    
    31623,10001,776,108
    
    31624,10001,777,108
    
    31625,10001,778,108
    
    31626,10001,779,108
    
    31627,10001,780,108
    
    31628,10001,781,108
    
    31629,10001,782,108
    
    31630,10001,797,108
    
    31631,10001,763,108
    
    31632,10001,764,108
    
    8500,,2,
    
    1254,2301,1,-2301
    
    想象一下,上班第一天就被交给了这样一些程序代码。1990 年 2 月,我就是这样的。一个 7 人组成的团队维护着一批打印到纸上能有几百页的这样的代码,都是已经发布到生产环境的。并不是我们发明了它们,只是我们不得不要用它们。作为奇闻轶事,我在这里展示一张这些代码残存的文档的图片,这个文档格式是使用我开发的一个工具生成的,它仅可能的模仿了早期我们那些程序员在纸上那笔来研究这些文档的样子。
    
    
    
    关于这段代码
    
    纸上的这些代码是C16LNAPP.SCN里的一段,只是打印出来的第一页,它是 1990 年代美国一家大商业银行——位于华盛顿的第一洲际银行(First Interstate Bank)在生产环境里使用的一段代码。如今它已经没有用处理,我征得了当时参与人的同意,出于乐趣,公布在这里。
    
    再来一段
    
    下面的这段代码也是来自生产系统环境。我并不太担心在这里公布这么多具有版权问题的代码信息,因为这世界上大概只有 10 个人能看懂它们。
    
    8607,,,1
    
    11547,15475,22002,22002
    
    1316,1629,1,1649
    
    3001,1316,3,30078
    
    11528,22052,22002,22002
    
    9301,0,1528,1528
    
    31568,10001,800,107
    
    8560,,,1568
    
    8550,210,,
    
    3001,,,
    
    3100,1316,3,30089
    
    11547,15475,22002,22002
    
    3001,1316,3,30089
    
    3001,1317,3,10000
    
    8400,,,
    
    8550,700,801,
    
    3001,,,
    
    9301,0,522,522
    
    3000,1284,3,10001
    
    8500,,3,
    
    8500,,5,
    
    1547,,1,-2301
    
    像这样打印出来的代码文件我估计有 1350 多张,大部分每张上都有几百行,有些甚至上千行。第一洲际银行的银行分部用这些程序来处理业务。
    
    BANCStar 语言里一些有趣的特征:
    
    BANCStar 程序里仅有的合法字符就是数字0-9,逗号,减号,和回车符。不允许有空行。文件中的任何地方如果有一个“.”出现,编译器就会崩溃。
    注释是绝对不允许的。
    有控制结构,包括 3000 (“if”), 3001 (“end if”)和
    3101 (“else if”),还有 8500 (“GOTO”) 和 8550 (“组合 GOTO”).
    
    有一个硬性规定,在整个系统中变量+常量不能超过 2000 个。任何需要显示到屏幕上或打印到表单里的东西都要被定义成常量,因此,它们都要占用有限的资源空间。结果,大多数的计算的完成都由使用数十个“临时寄存”变量,而这变量会被系统不断的重复利用。系统中所有的东西都是全局的。开发新模块的程序员的第一要做的是在系统中找一些这些临时寄存的数字,“借”过来使用,完成自己的计算,并且要在这些寄存器真正的主人发现他们存放的数字不见了之前,把最初的值恢复回去。
    代码里的标签(Label)使用的都是绝对行址,于是,一旦有新代码插入,所以插入行之后的代码涉及到 GOTO 操作的都要重新定位和链接。
    我能记得的一些细节
    
    BANCStar 代码实际上是用一个“屏面生成程序(screen generator)”生成的,这个工具最初大概是用来可视化编程的。但 5.1c 版的这个生成器功能太有限,一些有经验的程序员很快就开始研究它的工作原理,并且开始直接修改它生成的中间代码,这些中间代码就是生产环境实际运行的代码。
    
    我在 1990 年代初来到西雅图,加入了这个由 7 个程序员组成的开发小组,这个小组的日常工作就是用 BancSTAR 机器语言直接编写代码,完全放弃了那个代码生成器。当他们第一次向我展示这种语言时,我认为他们在跟我开玩笑。但几个星期后,我也开始学会阅读和编写这种代码了——借助于每个 BancSTAR 语言程序员最喜爱的工具:一个点阵打印机,一大把各种颜色的用于高亮某段代码的彩笔,以及一种纸带,上面打印满了各种系统提示表格,类似速查手册。在每次系统有任何修改变动后,我们都认真的、小心翼翼的修改相关数据、文档。(关于重复使用的临时寄存器,我可不是在开玩笑;如果你需要用到一个常量整数 1000,你就需要到程序去寻找,看看其他人是否在其它地方使用了相同的值,你要把你的程序链接到这个地方,并期望在你使用它的过程中不被其他人修改。)
    
    我们开发了一些内部工具来帮助我们用 BancSTAR 语言编写大型应用,还曾经将这些应用向这种语言的所有者 Broadway & Seymour 公司展示,但我想他们绝对不会相信我们是直接用他们底层的、没有文档说明的机器代码编写的。
    
网友评论2013-09-10 11:14


    彩笔语言,都不能做到图灵完全。
    
    看我大 草泥马 语言怒秒之:
    
    http://zh.wikipedia.org/zh-cn/Brainfuck
    
    一个在屏幕上打印"Hello World!"的程序:
    
    ++++++++++
    >++.>+.+++++++..+++.>++.<<+++++++++++++++.
    >.+++.------.--------.>+.>.
    
    其编译器可以只有200个字节。
    
网友评论2013-09-10 11:16


    我整个人都22002了。
    
网友评论2013-09-10 11:25


    你确定这不是CD-KEY? 思密达的节奏啊!
    
网友评论2013-09-10 11:25


    纯数字啊。反人类~
    

    
    
    

关于网站 | 网站声明 | 用户反馈 | 合作伙伴 | 联系我们
Copyright © 2012年2月8日