这是世界上最糟糕的编程环境么?

开发 项目管理
想象一下,上班第一天就被交给了这样一些程序代码。1990年2月,我就是这样的。一个7人组成的团队维护着一批打印到 纸上能有几百页的这样的代码,都是已经发布到生产环境的。并不是我们发明了它们,只是我们不得不要用它们。作为奇闻轶事,我在这里展示一张这些代码残存的 文档的图片,这个文档格式是使用我开发的一个工具生成的,它仅可能的模仿了早期我们那些程序员在纸上那笔来研究这些文档的样子。

下面是一段 BANCStar 语言的程序代码:

  1. 2999,,, 
  2. 8600,,,1 
  3. 3000,829,6,30089 
  4. 10829,2446,22245,22012 
  5. 11585,15855,22002,22002 
  6. 11586,15865,22002,22002 
  7. 11587,15875,22002,22002 
  8. 11588,15885,22002,22002 
  9. 11596,15965,22002,22002 
  10. 11597,15975,22002,22002 
  11. 11598,15985,22002,22002 
  12. 11599,15995,22002,22002 
  13. 11600,16005,22002,22002 
  14. 11601,16015,22002,22002 
  15. 11602,16025,22002,22002 
  16. 11603,16035,22002,22002 
  17. 11604,16045,22002,22002 
  18. 11605,16055,22002,22002 
  19. 11606,16065,22002,22002 
  20. 11607,16075,22002,22002 
  21. 11608,16085,22002,22002 
  22. 11609,16095,22002,22002 
  23. 11610,16105,22002,22002 
  24. 11611,16115,22002,22002 
  25. 11612,16125,22002,22002 
  26. 11613,16135,22002,22002 
  27. 11614,16145,22002,22002 
  28. 11615,16155,22002,22002 
  29. 11616,16165,22002,22002 
  30. 11617,16175,22002,22002 
  31. 11618,16185,22002,22002 
  32. 11619,16195,22002,22002 
  33. 11620,16205,22002,22002 
  34. 11621,16215,22002,22002 
  35. 11622,16225,22002,22002 
  36. 11623,16235,22002,22002 
  37. 11624,16245,22002,22002 
  38. 11625,16255,22002,22002 
  39. 11626,16265,22002,22002 
  40. 11627,16275,22002,22002 
  41. 11628,16285,22002,22002 
  42. 11629,16295,22002,22002 
  43. 11630,16305,22002,22002 
  44. 11631,16315,22002,22002 
  45. 11632,16325,22002,22002 
  46. 11638,16385,22002,22002 
  47. 11639,16395,22002,22002 
  48. 11677,22002,22002,22002 
  49. 11678,22002,22002,22002 
  50. 11679,22002,22002,22002 
  51. 11680,22002,22002,22002 
  52. 11691,22002,22002,22002 
  53. 11693,22002,22002,22002 
  54. 11707,22002,22002,22002 
  55. 11749,22002,22002,22002 
  56. 3001,351,2, 
  57. 10190,3512,22002,22002 
  58. 10191,3522,22002,22002 
  59. 10192,3522,22002,22002 
  60. 10193,3522,22002,22002 
  61. 3000,192,1, 
  62. 10193,1902,1912,1922 
  63. 10863,3552,22002,22002 
  64. 10864,3562,22002,22002 
  65. 10865,3572,22002,22002 
  66. 10866,3582,22002,22002 
  67. 10867,3592,22002,22002 
  68. 10505,3662,22002,22002 
  69. 10414,3912,22002,22002 
  70. 10415,3922,22002,22002 
  71. 10416,3932,22002,22002 
  72. 10563,4072,22002,22002 
  73. 10562,4082,22002,22002 
  74. 10566,4102,22002,22002, 
  75. 3001,,, 
  76. 31597,10001,716,108 
  77. 31598,10001,785,108 
  78. 31599,10001,717,108 
  79. 31600,10001,710,107 
  80. 31601,10001,786,108 
  81. 31602,10001,715,108 
  82. 31603,10001,787,108 
  83. 31604,10001,714,108 
  84. 31605,10001,713,108 
  85. 31606,10001,712,108 
  86. 31607,10001,711,108 
  87. 31608,10001,765,108 
  88. 31609,10001,766,108 
  89. 31617,10001,767,108 
  90. 31618,10001,768,108 
  91. 31619,10001,769,108 
  92. 31620,10001,770,108 
  93. 31621,10001,771,108 
  94. 31622,10001,772,108 
  95. 31623,10001,776,108 
  96. 31624,10001,777,108 
  97. 31625,10001,778,108 
  98. 31626,10001,779,108 
  99. 31627,10001,780,108 
  100. 31628,10001,781,108 
  101. 31629,10001,782,108 
  102. 31630,10001,797,108 
  103. 31631,10001,763,108 
  104. 31632,10001,764,108 
  105. 8500,,2, 
  106. 1254,2301,1,-2301 

想象一下,上班***天就被交给了这样一些程序代码。1990年2月,我就是这样的。一个7人组成的团队维护着一批打印到 纸上能有几百页的这样的代码,都是已经发布到生产环境的。并不是我们发明了它们,只是我们不得不要用它们。作为奇闻轶事,我在这里展示一张这些代码残存的 文档的图片,这个文档格式是使用我开发的一个工具生成的,它仅可能的模仿了早期我们那些程序员在纸上那笔来研究这些文档的样子。

20130912111327

关于这段代码

纸上的这些代码是C16LNAPP.SCN里的一段,只是打印出来的***页,它是1990年代美国一家大商业银行——位于华盛顿的***洲际银行(First Interstate Bank)在生产环境里使用的一段代码。如今它已经没有用处理,我征得了当时参与人的同意,出于乐趣,公布在这里。

#p#

再来一段

下面的这段代码也是来自生产系统环境。我并不太担心在这里公布这么多具有版权问题的代码信息,因为这世界上大概只有10个人能看懂它们。

  1. 8607,,,1 
  2. 11547,15475,22002,22002 
  3. 1316,1629,1,1649  
  4. 3001,1316,3,30078 
  5. 11528,22052,22002,22002 
  6. 9301,0,1528,1528 
  7. 31568,10001,800,107 
  8. 8560,,,1568 
  9. 8550,210,, 
  10. 3001,,, 
  11. 3100,1316,3,30089 
  12. 11547,15475,22002,22002 
  13. 3001,1316,3,30089 
  14. 3001,1317,3,10000 
  15. 8400,,, 
  16. 8550,700,801, 
  17. 3001,,, 
  18. 9301,0,522,522 
  19. 3000,1284,3,10001 
  20. 8500,,3, 
  21. 8500,,5, 
  22. 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公司展示,但我想他们绝对不会相信我们是直接用他们底层的、没有文档说明的机器代码编写的。

原文链接:https://github.com/jloughry/BANCStar/blob/master/README.md

译文链接:http://www.aqee.net/bancstar/

责任编辑:陈四芳 来源: 外刊IT评论
相关推荐

2014-07-15 11:10:01

面试题面试

2018-12-04 15:46:53

编程语言Python

2018-07-19 19:07:33

语言编程语言程序

2019-11-18 15:07:54

编程语言C#

2012-12-28 09:47:07

程序员代码编程

2013-09-12 15:39:30

编程语言BANCStar

2013-09-29 13:40:21

项目

2022-09-19 21:34:04

PHPFacebook语言

2020-11-16 09:38:08

编程语言EmojiEmojicode

2023-07-18 15:56:05

2018-11-06 12:22:18

排序算法代码

2013-05-08 09:38:28

InteropNetSDN网络设备供应商

2012-08-08 09:12:01

程序员

2015-04-20 17:12:53

变量变量名最糟糕变量名

2010-07-15 16:21:22

编程语言

2023-07-31 08:59:46

软件FossilSQLite

2022-04-28 23:27:08

人工智能机器学习工具

2009-05-07 09:02:15

思科钱伯斯营收

2013-04-24 09:57:08

Excel微软

2010-09-02 13:21:46

点赞
收藏

51CTO技术栈公众号