ADVERTISEMENT
作為一名從事獨立遊戲設計和程式業務的開發者,克里夫斯基(Cliffski)在一篇文章中吐槽道 —— 這年頭的「程式碼膨脹」,已經到了令人髮指的地步。
他以自己常使用的一個雲端備份服務為例來說明,這個由某個大公司提供的雲端備份工具,基本上提供的服務就是指向本地端硬碟上的一個資料夾,然後把內容複製到一個遠端伺服器上。而上傳到伺服器時,大公司可能需要做一些與資料庫管理有關的事情,例如給這一堆上傳的檔案分配一個名稱,並驗證誰下載了它。
「這是一家大公司,所以他們有大的程式,而且可能經常被駭客攻擊,所以需要一些安全保障,也需要一些驗證,以確保在我上傳和他們接收檔之間沒有被篡改過。我明白這一點。」他表示。「但基本上這個程度的目的就是列舉一些文件,讀取它們,上傳它們,然後關閉連接,並提供一個日誌檔,說明是否成功,如果不成功,出了什麼問題。事實上,我自己也從頭開始寫過這樣的程式碼,使用wininet API和伺服器上的php與MySQL資料庫對話。與企業級的東西相比,我的東西可能沒有那麼強大,但它確實可以做到。」
不過他表示,今天他所使用的這個大公司提供的上傳工具,檔案大小共有230MB,裡頭有2700個不同的檔案,就為了管理這個過程。
他表示這說明了現在的應用程式,已經超越了「臃腫」可以形容的程度,程式檔案的膨脹已經變成「完全的、徹底的、明顯的荒謬和瘋狂」。
一個普通的程式設計師都可以編寫一個同樣功能的程式,它的程式碼量小到只有這個應用程式的 1/20,足以將文件安全、快速地上傳到伺服器。甚至可以是一個單獨的 .exe 可執行文件,無需成百上千的動態鏈接庫(DLL)。
不僅可行,而且簡單、可靠、高效、易於調試。只需稍微努力那麼一下,它就會起到切實的作用。
那麼,現在的程式碼為什麼會變得這麼大而臃腫呢?
「我見過不少程式員在幹這種爛活,我知曉這種情況是怎麼發生的。」他表示,越來越多程式設計師不去研究通過底層的高效程式碼來完成工作,且許多人甚至從未寫過所謂的好程式碼。很多人往往就是引用DLL函示庫,需要什麼就去找什麼。
「我可以斷言,在你的電腦中許多應用程式,99.9%的程式碼是絕對無用的,甚至從來沒有被執行過。它只是在那裡,在一套多達65個檔案的DLL函示庫中,這只是因為某個程式設計師想做一些微不足道的事情,比如保存一個點陣圖,但他們不想從底層來寫這個程式,所以他們導入了一整桶臃腫的垃圾來實現它。」
舉個例子,當年一個僅 64Kb 的《Elite》遊戲,就包含了龐大的星系、3D 太空戰鬥、職業發展系統、交易、以及數千顆可供探索的行星。
誠然,現如今電腦速度已經快到可以忽略程式的臃腫。但是在你使用電腦時,正在懷疑自己到底有沒有點下去按鈕的這半秒鐘時間裡,頻率動輒數 GHz 的處理器世界裡,早已過去了數十億年。我們浪費了個人計算機 99% 的算力和能耗,就為了這些垃圾程式。
想像一下,在你急著想要在檔案總管中快速搜尋某個檔案的時候,工作管理員卻在那搞一堆廢話,如果你查一下後台,竟有102 個程序在忙碌著,天知道他們在幹什麼!
或許正因如此,我們才在幾乎沒有幹任何事情的情況下,你發現你去年才買的機器,今年就「老了」。
你甚至需要每年都換一部新手機、新電視,以執行那些臃腫不堪的串流媒體 App —— 只因為它們依賴執行的程式碼是如此糟糕!
他表示他非常懷念過去程式的黃金時代,程式員們對記憶體和 CPU 的限制瞭如指掌。如今,我們已經被迫生活在了一個效率極其低下、但浪費又如此誇張的泥潭裡。
ADVERTISEMENT