世界上最讓人抓狂的編程語言:BANCStar

jopen 11年前發布 | 7K 次閱讀 編程語言

世界上最讓人抓狂的編程語言:BANCStar

        英文原文:The Worst Programming Environment in the World?

        下面是一段 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 人組成的團隊維護著一批打印到紙上能有幾百頁的這樣的代碼,都是已經發布到生產環境的。并不是我們發明了它們,只是我們不得不要用它們。作為奇聞軼事,我 在這里展示一張這些代碼殘存的文檔的圖片,這個文檔格式是使用我開發的一個工具生成的,它僅可能的模仿了早期我們那些程序員在紙上那筆來研究這些文檔的樣 子。

世界上最讓人抓狂的編程語言:BANCStar

        關于這段代碼

        紙上的這些代碼是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 公司展示,但我想他們絕對不會相信我們是直接用他們底層的、沒有文檔說明的機器代碼編寫的。

來自: 外刊IT評論

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!