哈卡瓦塔之歌

向 H. W. 朗費羅致歉 

第一部分:哈卡瓦塔的登入

首先,他坐著面對主控台
面對發光、嗡嗡作響的主控台
在鍵盤上輸入了他的登入名稱
輸入了他的密碼(十四個字母)
等待系統回覆
等待許久並咒罵它的緩慢
(喔,那惱人的緩慢——
像患有腰痛的軟體動物)
等待了似乎好幾個小時
直到作業系統
印出了最新的抱怨
來自被稱為「超級使用者」的人——
抱怨有些三年級學生
在午餐時間玩冒險遊戲,
抱怨磁碟幾乎
(非常幾乎)快要爆滿,
咆哮說他不會忍受
尖叫說他會報復
透過刪除人們的磁碟檔案。
接著,是哈卡瓦塔的「每日運勢」
(覺得一點也不好笑)
然後從「郵件程式」中取出一封信
來自一位網路駭客同伴

(他已滲透到 ARPA
一路到格林漢公共機場——
雖然他潛行穿過檔案儲存區
並沒有讓美國空軍高興——
所以這位朋友,這位網路駭客,
不得不逃到阿根廷
在那裡他從事模擬工作
模擬他們軍隊的
佔領福克蘭群島)。
最後,我的哈卡瓦塔
開始輸入一個程式。
首先,他思考了好幾分鐘
他到底應該叫它什麼名字
以便日後他會記得
它的功能以及他寫它的原因,
思考了許多、許多分鐘,
想得太久了,因為系統
因為他無所事事而讓他逾時
讓他逾時並嚴厲警告他
(像一位憤怒的公車查票員
當你慌亂地找車票時
當你原本可以發誓你已經把它
安全地放在內口袋裡)。

所以可憐的哈卡瓦塔
不得不從頭開始
輸入登入名稱和密碼——
發現系統甚至更慢
比第一次還要慢
(簡直就像某個邪惡的靈魂
已經用 LISP 或 OCCAM 語言
重新編寫了整個 Unix
這兩種語言在內行人士中
並非以執行速度快而聞名
而是以它們的笨重緩慢而聞名
就像一位三年級電腦科學系的學生
試圖理解一個定理
例如 Church-Rosser 定理)。
經過許多、許多分鐘
在冒著無聊致死的風險之後
在螢幕上,我的哈卡瓦塔
看到來自網路的訊息
說沒有空閒的主控台,
告訴他乾脆忘了吧,
告訴他稍後再來
(比如說,凌晨兩點半
最好是星期天早上,
星期天,在漫長的假期中)。
但在這時,我的哈卡瓦塔
用充滿憤怒的語言說話
「我寧願在 COBOL 中寫程式
在 Sinclair ZX80 上!」
因此,眾神聽到了哈卡瓦塔
聽到了他怒吼的雷霆

聽到他詛咒「超級使用者」
到社會科學部門任職
聽到他詛咒網路
在腐蝕性蘇打中慢慢煮沸
聽到他詛咒那種人
他們使用 LISP 而不是 Ada
(Ada 是一種複雜的語言
版權所有,國防部
它有一個形式語法
比聖經還要長
但語義上卻沒有任何東西
除了非正式的閒聊。
讀者!使用它,後果自負!)
眾神對他產生了憐憫之心
(雖然他們非常不贊同這種語言
非常不贊同這種骯髒的語言
哈卡瓦塔所使用的)
導致經濟學系某個懦夫的主控台故障
經濟學系某個懦夫的主控台故障
空出了一條線讓他可以使用
讓他的螢幕顯示一條訊息
「抱歉,我們只是在開玩笑
請登入並輸入您的密碼
我們馬上就會為您服務。」
哈卡瓦塔因此被安撫
輸入了他的登入名稱和密碼
再次閱讀了耶利米哀歌
關於躁狂的「超級使用者」
讀了他的每日運勢(仍然不好笑)
並準備開始輸入他的程式。

第二部分:哈卡瓦塔的程式設計風格

唉,我的哈卡瓦塔仍然
不知道該如何稱呼它
該如何稱呼這個可憐的程式
以便他日後會記得
它的功能以及他寫它的原因
但可怕的逾時威脅迫在眉睫
為了避免麻煩
他只是把它叫做「program7」
(一個沒有太多意義的名字
幾乎沒有任何意義
——儘管它有一個真正的優點
它符合這個韻律)
打算稍後用 mv 重新命名它
當他稍後想到一些名字時
現在他進入了編輯器
哈卡瓦塔然後快速地輸入
非常、非常、非常快速地
比三年級學生還快
試圖避開他的導師
太陽報「記者」還快
追蹤一些猥褻的東西

他的手指像老鷹般飛舞
只停頓了幾次
當他絞盡腦汁回憶
他的演算法的細節時
這些他知道,但只是模糊地知道
(就像日出時的薄霧
籠罩著高聳的山峰
就像 s-nd-rs 印表機
在應該底線的地方印出模糊的東西
就像三年級學生對
圖靈定理證明的概念一樣)
這些思考結束後
哈卡瓦塔輸入得更快了
遺漏了引號和分號
遺漏了許多右括號
(註解,他留待以後再處理
直到他理解了他的程式
理解了他一直在做什麼)
他自信地認為編譯器
會挑出語法錯誤

因此,程式像野火般蔓延
像某種傳染病的蔓延
像疾病、愛滋病或 BASIC
或者像礦工停止罷工一樣
在亞瑟·斯卡吉爾的統治下。
哈卡瓦塔像發瘋一樣地輸入
鍵盤發出劈啪、劈啪的聲音
像一副躁狂的假牙
就這樣,早晨、就這樣,午餐時間、
就這樣,下午過去了
就像超級使用者的髮際線一樣
當被三年級學生圍困時
都一心想學他的密碼
直到最後星星在閃爍
直到最後酒吧開門了
直到警衛,被提醒
敲了敲他的門並警告他
「抱歉,先生,但是所有晚歸的員工
都必須簽到簿,先生。」
即使如此,我的哈卡瓦塔
幾乎沒有聽到他在說什麼

他的眼睛非常紅腫且茫然
他的手指又抽筋又疼痛
他的胃空空如也且咕嚕作響
他的額頭冰冷且冒汗
主控台溫暖且嗡嗡作響
像一頭消化不良的母牛
感謝警衛並告訴他
他會「馬上」簽
他「完全忘記了
所有那些官僚廢話
在創作的白熱化中」
要求他在接下來的幾分鐘內警告他,如果大樓
在接下來的幾分鐘內燒毀
感謝他的「好意」
然後,完全忽略他,
轉過身來再次敲擊鍵盤
用他靈巧的手指
直到最後夜幕降臨
直到最後酒吧關門了
直到最後工作完成了。

第三部分:哈卡瓦塔的程式測試

接著我的哈卡瓦塔召喚了
適當的編譯器
要求它接收他的程式
並嘗試執行它
列出任何語法錯誤——
如果萬一有任何錯誤——
在一個他稱為「errors」的檔案中
(這個命名選擇所展現的創新令人驚嘆)
(這個命名選擇所展現的創新令人驚嘆)
要求它請在背景執行。
名為「errors」的檔案迅速增長
直到它似乎變得比
名為「program7」的檔案還要大得多
名為「errors」的檔案更大
比最高的山還要大
比三叉戟潛射彈道飛彈的成本還要高
比那個被人類稱為 D--kstr- 的神的
比那個被人類稱為 D--kstr- 的神的
甚至比人們稱為 Unix 郵件程式的軟體還要大
甚至比人們稱為 Unix 郵件程式的軟體還要大
(雖然,也許,誇張,
或者那種被稱為詩意的許可
引導我犯了一個錯誤

因為我們知道 Unix 郵件程式
比名為鐵達尼號的郵輪更大且更有缺陷
比名為鐵達尼號的郵輪更大且更有缺陷
哈卡瓦塔現在變得擔心起來
試圖終止背景程序
試圖將它帶到前景
試圖對編譯器說
「夠了,老兄,暫時這樣就好」
程序完全不理會
像沒人管一樣地吞噬位元組
直到似乎系統
會因純粹的疲憊而崩潰
來自這個不知疲倦的程序所需的
分頁交換數量。
哈卡瓦塔變得絕望
他的詛咒再次生動起來
使周圍的陰影都變成了紫色。
因此,眾神聽到了哈卡瓦塔
聽到了那些糟糕的語言
認為他們最好阻止它
堅定地告訴 Unix 系統
堅定地,停止所有胡說八道
堅定地,中止程序。

第四部分:哈卡瓦塔的執行時期錯誤捕捉

現在,這個程式有一個指標
指向一個記錄聯合
有時指向一個 REAL
或 INTEGER 或 BOOLEAN
有時指向一個指標
指向 RECORD 的 FILE 的 ARRAY
其中每一個又都有指標
其中每一個,在瘋狂的遞迴中,
瘋狂地互相指向
(就像一群星期日小報
互相指責
彼此缺乏道德
就像一群左翼學生
都互相指責
帶有修正主義傾向)
在這團純粹的混亂中
(在哈卡瓦塔看來似乎
當時是天才之舉
但現在他不清楚
理解他為什麼要這樣做)

他放置了一個簡單的陳述
放置了一個看起來很簡單的陳述
重新分配了 FIRST 指標
到另一個,而且他不能
完全記得他把它放在哪裡了,
覺得這可能是原因
為什麼他的程式無法運作
沒有做到他想要的事情。
這引起了一些挫敗感
導致高貴的哈卡瓦塔
犯下褻瀆的髒話
導致他大喊「Debug her!」
(或者,我想他就是這樣喊的)。
「肯定有更簡單的方法,
用於計算的方法
階乘的計算!
把這玩意兒扔到一邊去玩士兵遊戲!
我要去教職員俱樂部
喝一杯 Romfords' Glory!」

哈卡瓦塔就這樣離開了。

純文字版本


哈卡瓦塔之歌 是對 海華沙之歌 的模仿,作者是 H. W. 朗費羅。

這首詩由 Paul Boyd 於 2000 年提交

不確定這是從哪裡來的,我已經保存超過 10 年了。希望您喜歡。
—Paul Boyd

根據維基百科,哈卡瓦塔之歌 是由 Michael W. Shield 以筆名 F. X. Reid 撰寫。他可能在 八十年代早期 寫了原始版本。此頁面上的版本似乎比較新近,因為它提到了英國礦工罷工的結束(1985 年),而原始版本暗示了災難性的失業率上升,失業率在 1983 年左右達到頂峰。