[恐怖非小說] Google 蟲蟲危機 – 關於程式錯誤與地球毀滅

「333 333 333 333 335」

在一篇關於臭蟲的文章中,有人提到 Google 的計算機服務也存在著臭蟲,這一個話題吸引了我的興趣。



所謂臭蟲指的是潛藏在電腦程式碼裡頭的錯誤,在維基百科裡頭說道:「程式錯誤(英語:Bug),在程式設計中的術語,是指在軟體運行中因為程式本身有錯誤而造成的功能不正常、死機、數據丟失、非正常中斷等現象。」。

40
蟲子車

 我在 Google 的搜尋頁面裡,藉由中值分析的逐一推算,將這組神奇數字給找出來。用實際的數學運算式呈現,就是「333333333333335 – 333333333333334」,原本這則簡單的數學運算,只要有眼睛的人一看,都能馬上知道正確答案會是 1,但是 Google 計算出的答案卻偏偏是 0。

如果改以微軟 Windows XP 內附的小算盤進行計算,卻得到 1 的正確解答;即便繼續將數值提高到小算盤的最大數值:「99999999999999999999999999999999 – 99999999999999999999999999999998」,小算盤依舊可以計算出 1 的正確解答。

所以我私自下了一個結論:「Google 伺服器的程式設計,比不上一個微軟小算盤」(笑)。

起碼我在這個臭蟲中,沒看見 Google 想要修正錯誤的決心,而這個臭蟲似乎也在 Google 伺服器裡頭一待就是數年之久。

— 延伸分析之分隔線 —

接著,我們用大量數值代入計算,對 Google 計算機進行反應分析,看看最後是否能由關聯性中,尋找到臭蟲的一點蛛絲馬跡。

  • 「333333333333335–333333333333333 = 2」
  • 「399999999999995–399999999999994 = 0」
  • 「1000000000000005–1000000000000002 = 0」
  • 「1333333333333335–1333333333333334 = 0」
  • 「2000000000000009–2000000000000003 = 0」
  • 「3000000000000009–3000000000000001 = 0」
  • 「9999999999999999999999999999999–9999999999999969799548763635712 = 0」
large_3355106480
Design by: myklroventine

由上面所列各項數據列可以看出當數值越大,計算誤差越大,顯見 Google 計算機發生運算錯誤的情況,並非只有單純的「333333333333335 – 333333333333335 = 0」,或是「N-(N-1)=0」(設 N 為大於「333333333333335」之數的代數符號)等情況。同時,透過單一的減法運算,也說明了這隻臭蟲不是邏輯上的設計錯誤(例如先加減後乘除的順序問題),至於我認為的可能原因等下會在文章中進行說明。

雖然 Google 的臭蟲看似只是個小問題,但是即便機率有多麼小,依然可能引發極為嚴重,甚至牽扯到生命安全的事件,而且比起蝴蝶效應來得更加直觀。我在底下特別舉幾個情境實施例讓大家看看,為何我會認為 Google 的這隻臭蟲,極度危險。

— 情境例之分隔線 —

一位正在某國尖端實驗室進行研究的天才科學家,由於常用的工程計算機的電池恰巧耗盡,而他的電腦又恰巧開著網路瀏覽器,網路瀏覽器的頁面恰巧是 Google 首頁,這位天才科學家恰巧用過 Google 計算機運算過一些數學式。於是,這位天才科學家一時懶得去買電池,便順手用 Google 計算機進行一系列的長運算。

可是天才科學家不曉得 Google 有這隻臭蟲,結果當 Google 計算機計算完畢後,由最先的只差 1,到最後卻讓核能電廠的臨界值被高估一倍。而後面引用該數據的工程師恰巧又未加以反覆驗證,便順手將核電廠蓋好。接著,腦殘的高層人士到了核電廠前開開心心的剪綵,風光一時,受到百姓愛戴。

只可惜,在核電廠剛啟用沒多久,便因為核反應超出臨界值,發生一場極為嚴重的爆炸,於是高層人士帶著妻小搭上專機尋求國外庇護,百姓們把碘片當糖果吞,開始一場好萊塢式的小人物末日狂想曲(好像有點偏激)。

— 情境例之二之分隔線 —

雖然在太平洋上的某一個小島國已經毀滅,讓全世界新聞社瘋狂報導並且荷包飽飽,但是天才科學家還是沒發現是因為自己用了 Google 臭蟲導致的計算錯誤造成的。

某一天,天才科學家(對,還是同一位)接到軍方的請託,設計一款 M2000GX 高能量長射程光束砲的路徑修正程式。這位科學家恰巧還沒去買工程計算機的電池,恰巧科學家的首頁設定自從安裝 Chrome 而被強迫設定後,一直都是 Google 搜尋頁面,而科學家恰巧又需要計算一個數學式,於是乎,科學家又使用了 Google 計算機進行計算。

你知道的,軍方工程師在這時候一定又恰巧沒有進行驗證,便順利的將 M2000GX 高能量長射程光束砲進行生產製造。不過這次沒有高層人士想承認自己的國家做了這根砲管,所以沒有安排剪綵活動。

自從該根經由天才科學家加持的光束砲孵出來後,一直安穩的躺在某個沙漠秘密基地裡,據傳聞旁邊還有幾座魔山,常常有學生或軍隊在山裡神秘失蹤。

在又某一天,A 國終於對 S 政府的邪惡暴行無法再加以忍受,一方面也是因為反抗軍已經沒錢再跟 A 國買武器。於是 A 國決定是時候啟動光速炮,將該地區完全殲滅,以維護該國家的和平,實現世界警察的"正義"。

只可惜,當光束炮發射出去後不久,便因為瞄準目標用的路徑修正程式的計算錯誤(對,恰巧就是天才科學家加持過的路徑修正),由最初的只差 1,到最後導致原本該往南修正的高能光速,卻朝相反方向前進,並恰巧在 R 國本土掉了下來,轟的一聲。

受到 A 國武力攻擊的 R 國,理所當然不能就這樣吞下這口氣,於是 R 國當局決定立刻予以反擊,不僅將原本收了錢,已運往 S 政府的武器全部強制招回外,還啟動境內全部武器,朝 A 國本土一齊發射,冀求迅速用最強大武力,一次完全毀滅 A 國的反擊能力。

但是 A 國的空中預警系統早就秘密的佈局全球,R 國當然不曉得,於是在全球鵰的偵測下,A 國已經發現 R 國的反擊行動,於是 A 國亦決定同步實施全武器反擊。接著,下一幕就是所有原始目標被完美的極重,而在國際太空站的太空人們在宇宙中,親眼目睹地球上最美麗的一刻。

就在天才科學家還在納悶,為何光束炮會射徧的同時,天才科學家已經與地球一同就被炸成兩半,全人類宣告滅亡。(好像更偏激了)。
11
— 呃…之分隔線 —

好了,既然地球已經都被那位科學家毀滅了,我們再來談談 Google 為何至今仍不解決這隻眾所周知的臭蟲問題。

我個人認為(先聲明,我不會寫程式,也沒有進行任何調查研究,純粹自己憑邏輯推測。)其中的原因之一或在於,Google 設計的資料庫系統及其中收錄以天文數字計的數據資料,採用一種特殊格式加以儲存,而搜尋框用來擷取字串也是使用相同的格式,這樣的對等式設計可以達到高處理效率的優點,但是最初的程式設計師卻忽略「333333333333335」或「N」等數值在被擷取並轉換後,會造成格式上的溢位或是不足等問題,進而形成計算上的錯誤結果;也因此,Google 之所以不修正錯誤,便是因為這將是牽動到整個資料庫轉換的超大工程,所以他們寧可無視這隻只有在附加功能上出現的臭蟲;又或者,Google 覺得這樣很有趣(請看前揭情境一或二)。

Google 計算機的臭蟲問題,反映出即便是身為 Google 的程式設計團隊,擁有高學歷與高智商的菁英聚合體,依舊無法跳脫最基本人性錯誤的一個事實:「只要是人為設計,必定存在缺陷。」難怪魔鬼阿諾的老大「天網」能夠毀滅人類(喂!)。

124877476157
那個腰是怎麼回事
  •  
  •  
  •  
  •  
  •  
  •  

說些什麼吧

您也許也會喜歡…