我們收穫的正是我們所播下的種子
計算機科學建立在對理論與實踐之間不匹配的冷酷接受上。
作者:Micah D. Beck
發佈日期:2025年1月8日
理論計算機科學就像一隻玻璃鞋,從來沒有真正適合實際計算工程的腳。它們的結合本質在於,理論家設計出一個捕捉現實某些基本特徵的形式模型,然後基於這個模型進行推理並應用到實現中。當模型無法充分捕捉現實系統的結構以解釋和預測其行為時,問題就會出現。
在處理有限性時,計算建模的一些早期問題便浮現出來。有限計算模型的問題在於,它們在表達能力上都是等價的,且相當有限。這產生了兩個問題:無法解決不規則問題的輸入(參見抽水引理),以及由於數字大小的精確界限而產生的高度特定效應(如在有限群論中所見)。
使用可以在算法執行過程中增長的抽象機器模型(例如,推疊自動機和圖靈機)進行計算的想法,導致了一個相當豐富的計算理論。這類模型的含義可以應用於現實世界的計算機,只要資源利用不超過其物理限制。即使當這些界限被觸及時,仍然存在一個問題,即未來在更大規模和更快速度的機器上能計算什麼。然而,即使面對未來的物理限制和功耗等問題,無窮模型與現實之間的對應關係開始出現裂痕。
一個廣為人知的例子是算法複雜性理論在排序中的應用。排序的經典分析得出一個眾所周知的結果:在最壞情況下,對於一組N個整數進行排序所需的比較或數據移動操作的次數受限於N*log(N)的某個常數倍。然而,最常用的算法Quicksort在最壞情況下需要二次資源(即某個N²的倍數)。對於足夠大的N,N²的倍數大於任何N*log(N)的倍數,因此在無界複雜性理論中,Quicksort被認為“效率較低”,即使是某些可以使用最多N*log(N)資源實現的算法,如插入排序,卻被視為更高效。
造成這一理論與實踐不匹配的原因有很多,包括:
– Quicksort的內存和寄存器使用模式使其在中等大小數據集上極為高效(局部性)。
– 在許多現實應用中,Quicksort的最壞情況資源利用最大化的情境不太可能發生,在某些情況下,Quicksort能夠非常快速地終止(這一特性稱為“提前停止”)。
– 在實踐中,許多排序工具會根據輸入的性質,自適應地使用多種不同算法作為替代方案或協同使用,以獲得最佳結果。這包括使用冒泡排序,一種在最壞情況下效率極差但非常適合極小數據集的算法。
– 當數據集必須從二級存儲或通過通信網絡移動以進行排序時,實際上數據移動所需的資源(這是線性的,或N的倍數)可能會超過排序所需的資源。
儘管這一現實的複雜性,抽象排序理論仍然因其簡單性和強大而被教授。學生們仍然常常被教導要避免在無界輸入上高資源利用的算法,或者在實踐中可能無法使用。我們依賴於他們在實際數據管理課程或工作中去“忘記”這些早期的教訓。事實被認為過於複雜,無法進行抽象證明,而這是一項我們急於教授的技能。
在教授本科計算機網絡課程時,我遇到了這種不匹配的另一個當前例子。網絡架構的基本課程之一是,數據包網絡並不可靠:發送的數據包可能會丟失、在傳輸過程中受到損壞、可能無限延遲,並且可能錯誤送達。還有一個分佈式系統定理告訴我們,無法使用不可靠的網絡來實現完全可靠的網絡。然而,計算機網絡教科書普遍將互聯網的傳輸控制協議(TCP)描述為“可靠”。
事實是複雜的。TCP實施了與互聯網協議不同的錯誤模型,使用包括校驗和、序列編號和重傳在內的多種工具來降低數據損壞或錯誤交付的概率。TCP還引入了新的錯誤模式(例如“斷開連接”),這些模式在互聯網的底層數據包傳遞模型中並不存在。這些因素共同作用,降低了錯誤的概率,使得大多數常見應用足夠穩定,這被認為是可用的“可靠”定義。
應用開發者經常將TCP視為完全可靠,儘管其16位的校驗和在足夠大的數據傳輸中使得“無聲數據損壞”高度可能。在科學計算等應用領域,這類錯誤被視為不可接受的開發者們理解這個問題,並使用更長的端到端文件哈希和重傳來克服錯誤。然而,在多媒體流媒體等領域,偶爾出現的錯誤被認為是可以接受的,因此通常會簡單地認為TCP“足夠可靠”。同樣的問題在大規模存儲和計算中也存在,只有當不匹配導致不可接受的應用故障時才會被解決。值得注意的是,由於可編程系統的高度“不連續性”,意外錯誤可能導致大規模的安全故障或看似無關的系統異常行為。
今天,我們面臨著生成式AI,這是一個新的計算工程子領域,提供了已知易出錯的訓練行為。生成式AI可能在某些應用中被認為是“足夠可靠”的,至少在最初階段是如此。生成式AI與現實世界的關係尚不明朗,因為它使用了統計和隨機化方法。應用更可靠的防護措施需要基於形式邏輯的經典AI工具。這些工具無法跟上生成式AI的高效複製和猜測能力。
將生成式AI辯護為“足夠好”以便在一個已經充滿人類和機器錯誤的世界中使用,與我的網絡學生們對於我反對稱TCP為“可靠”的看法如出一轍,他們認為這種反對是迂腐和過時的。他們說“可靠”這個詞只是被賦予了新意義。或者說“每個人都知道”這個“可靠”的機制必須被檢查(儘管這一事實並未被教授,也不為廣泛理解)。主要是,他們想保持主題簡單易懂,以便學習如何使用直觀的API編程,獲得好成績和工作。而教科書的作者和現代大學課程的開發者似乎也與他們達成了一致。
因此,請所有對接受生成式AI中的“幻覺”和其他錯誤感到震驚的人,停止緊握珍珠。我們已經發展出一個基於對理論與實踐之間不匹配的冷酷接受的領域(計算機科學)。我們這樣做是為了證明我們自己的教育和該領域迄今為止的歷史。
重要的是,我們應該將實用的計算工程作為一個與正式計算機科學分開的領域來教授。後者可以幫助理解和分析前者,但可能永遠無法像物理科學那樣對其進行有效的預測建模。
—
在這篇文章中,Micah D. Beck對於計算機科學中的理論與實踐之間的鴻溝進行了深刻的反思。這不僅僅是對學術界的批評,更是對整個計算機科學教育的呼籲。我認為,這樣的觀點引發了我們對於教育課程設計的重新思考。隨著技術的快速發展,尤其是生成式AI的興起,教育者應該更加注重如何能夠在理論與實踐之間架起一座橋樑,讓學生能夠在真實世界中靈活應用所學知識。這不僅能夠提升他們的問題解決能力,還能培養他們對技術的批判性思維,這在當今不斷變化的科技環境中尤為重要。
以上文章由特價GPT API KEY所翻譯及撰寫。而圖片則由FLUX根據內容自動生成。