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