有一個暴露年齡的老段子,叫做「1999年到底發生了什麼」。
經歷過「那一年」的人,對當時發生了什麼說法不一。大概是世界末日,外星人入侵了地球,地球組織防衛軍打敗了侵略者,然後倖存者被迫籤署保密協議。
不少社交平臺都在告訴我們這樣一個事實,80後、90後跟00後玩的這個梗,似乎還真有人信了。
1999年其實真的發生了世界末日的場景,也就是「千年蟲」事件,這是一個程式設計師拯救世界的故事,而且是真·拯救世界於末日。
如果當初千年蟲危機爆發了,2000年1月1日,各國的銀行、醫院、政府機構很有可能會直接癱瘓。美俄能把全世界每個人都炸一遍的核彈,說不準就程序出問題,自動彈射了。
程式設計師們挽回的經濟損失與人民財產,是絕對的天文數字。非洲甘比亞就是個例子,因為沒能徹底擺脫千年蟲,多地出現了電力供應中斷,財政部等政府部門,海關、交通、金融等行業都出現了局部癱瘓。
不過跟別的程式設計師故事一樣,哪怕拯救世界,這個故事也還是稍顯乏味,沒有打鬥場面,只有熬夜掉頭髮。所以咱們放到最後再說吧。
和「1999年發生了什麼?」這個段子一樣,所有經歷過2020年的人,都可以對未來沒經歷過這年的人神秘一笑。翻一翻2020年2月疫情初期的新聞,就算一個人想像力再不著邊際,他也不會料想到後來的種種。
這一年,人性中最光輝睿智的一面,最舍己堅韌的一面,以及最自私的一面,最愚蠢的一面,我們都見到了。
人類這個物種,會毀滅於一場瘟疫嗎?這一年我們聽過太多瘟疫的歷史故事,而眼下這個病毒,已經像「瘟疫公司」中崩盤的一局一樣,走到了解藥研發、疫苗發放的階段。
災難後的重建,經濟的復甦,國與國之間信任的恢復,才是今年的看點。有些東西註定已經回不去了。
我們距離世界末日並不遙遠,所以這個話題對人類來說,才永遠具有魅力。
各個文明的傳統社會,普遍認為這個世界是早先「創造出來」的,一切觀念知識,飛禽走獸,都是先驗的。歷史會平穩地重演自己,偶有道德的墮落,或黃金時代的輝煌。但並非什麼螺旋式上升,還是會中值回歸。所謂分久必合,合久必分。
直到世界末日的來臨。有的民族認為它是末日的審判,有的民族認為它是諸神的黃昏。
從科學的角度來看,不論回望歷史,還是展望未來,世界末日都是重要主題。
地球自有生命以來,已經發生過5次大滅絕事件,恐龍滅絕只能算規模不太大的一場,距離比較近而已。
今天,我們腳下踩著的是幾億年各式生命的積澱。從海洋裡的藻類與魚蝦,到陸地上的茂盛蕨類,再到史前的巨龍與渺小的蟲豕,這些在時間跨度上難以想像的生命,也曾如人類的今天一樣輝煌過。
我們的工業文明,就是建立在它們屍體的能量之上,也就是化石能源。
順便說一句,如果今天人類的文明被摧毀,被打回部落狀態,進入一個廢土世界/喪屍世界/雪國列車世界,我們基本沒有可能重建工業文明。原因在於,人類已經消耗了絕大多數易於開採的石油,以及淺層的煤礦。
沒有這些淺層的化石能源,就沒有瓦特改良的蒸汽機,以及世界第一臺內燃機。
人類遠比自己想像的依賴化石能源,製造玻璃、冶鍊金屬、合成塑料,都需要化石能源。工業原料對我們生活的意義,就像人體的骨架。
總之我們肯定得過渡到新能源時代,這跟環保一點關係都沒有,有關世界末日。
展望未來的話,大概50億年後,太陽會毀滅,地球會被膨脹的太陽包圍。就算不毀滅保不好也會「氦閃」吧,這就是《流浪地球》的劇情了。
這是人類文明的未來,至於我們個人,每個人都會死,所以每個人都會走向自己的末日。
好吧,再來聊聊1999年到底發生了什麼吧。
1999年年末的時候,比起進入新千年的期待,人們更多的是恐慌。銀行提高利息,防止擠兌,但普通人還是去銀行取錢。政府、軍隊、金融機構,為了預防「一些事」,都在找程式設計師搶修。
60年代,計算機的儲存空間有限且昂貴,所以為了節省空間,早批程式設計師選擇用兩位數代表年份,65是1965,99是1999,而00,只能是1900。
這就導致1999年和2000年雖然只差了一年,但系統卻無法識別,而且有的老系統連99都無法識別,認為這是文件過期,需要刪除的代碼。
那麼當初那批程式設計師,在用兩位數表示年份的時候,怎麼就沒想到呢?
因為他們沒人想到自己寫的程序會用這麼多年,而且對程式設計師來說,計算機是一門日新月異的學科,但對政府辦公大樓的工作人員就不是了。他們斥重金搞來一套系統,將全省、全國的老百姓的出生檔案錄入,可是想用至少半個世紀的。
至於程式設計師自己,寫新程序的時候總要考慮和老程序兼容,所以哪怕儲存器的成本降下來,大家也還是不改,還是用六位數表示日期。
這真是非常有意思的一種全人類都犯拖延症的現象,誰都知道有問題,但就是沒人先改。
直到90年代,大家才開始干著急。因為不僅銀行、交通、工廠用的是老版本,就連核彈發射井也是,等到2000年1月1日,會出現什麼問題呢?
剛生產出來的產品,就過期90年。
新生兒剛出生,就已經100歲了。
迎接千禧年的party結束,回到家中,收到了銀行帳單,要補交從1900年到1999年的利息。
核彈發射井出bug,開始自己彈射。
……
於是,史上最大規模的修改bug的工作開始了。人們007地工作,將六位日期紛紛改為八位。
但時間明顯不夠用了,工程量遠超所有人的想像。
最後,機智的程式設計師想出了解決方法。那就是還是用六位日期表示法,但是將系統的判定窗口改了,改為1920到2020,1900自動被排除,也就不會引發歧義。
我寫的程序,總不會被用到2020年吧,哈哈哈哈。
問題就這麼解決了,2000年1月1日,人類喜提新千年。