作者 | Cliff Harris
譯者 | 彎月
然而,我用的那個專用上傳工具的客戶端總共有 230MB,包含 2700 多個文件。
是的,你沒看錯,2700 多個文件,237MB 的可執行文件和各種垃圾,僅僅是為了把文件拷貝到服務器而已。這已經不能叫膨脹了,更不是過度設計,這完完全全到了不可理喻的地步。
實際上,不光是這個上傳工具,如今任何大型軟件公司的任何軟件都一樣。

電腦里 99.9% 以上的代碼都是毫無用處的垃圾
我知道怎么回事,我也見過其他程序員的實現方式。根本原因在于,程序員根本不懂怎樣通過高效率的底層代碼來實現目標,他們甚至從來沒見過底層的高效代碼。沒見過的東西怎么可能做得出來,還要做得更好呢?
編寫一個安全、快速上傳文件到服務器的軟件,最多需要二十分之一的代碼量。只需要一個文件,一個 exe 文件就夠了,根本不需要好幾百個 DLL。這是完全可能的,而且會更容易、更可靠、效率更高,還很容易調試,甚至能更穩定地工作。
代碼膨脹似乎是像我這種老家伙的碎碎念,畢竟我已經上年紀了。但我們這幫老家伙們碎碎念的可不是代碼運行減慢了 50%、規模增大了 50%。實際情況遠不止于此。
我相信你電腦里 99.9% 以上的代碼都是毫無用處的垃圾,永遠不會被運行。但這些代碼都堆在那兒,堆在 65 個 DLL 文件里,這都是因為程序員想做一些不太重要的事情,比如保存一張圖片,但他們完全不懂得該怎么做,就干脆導入一大堆垃圾來實現。
我說過,看著年輕程序員這樣做我真不應該生氣,畢竟他們學到的實現方式就是這樣的。他們根本不知道高性能開發是什么樣子,也沒見過條件有限的軟件是什么樣子。你要是告訴他們,最初的 Elite 游戲能生成整個銀河系,有 3D 狗斗,有職業系統,交易系統,還能探索上千個星球,而這一切只有 64KB,他們也能接受,但完全沒辦法理解這與現在的軟件之間有什么差距。
為什么我關心這件事?原因有很多,最簡單的就是當你花費兩千倍的時間來做一個東西,它就應該能用。但更重要的是,我知道 99.9% 的 CPU 時間都浪費在這些垃圾上。每秒執行幾十萬指令,結果毫無用處。本來我的電腦應該處于極低功耗,風扇都不應該轉,因為我現在干的只不過是在 wordpress 里寫字而已。
現在的電腦速度飛快,確實是魔法。你能想到的一切,都能在屏幕刷新一次的 1/60 秒內完成。但是!當我在 Surface 筆記本(幾乎是新的!)上點擊硬盤圖標時,我能看到明顯的延遲,電腦在一點點畫出用戶界面。這需要很久,我估計至少有半秒鐘,對于 CPU 來說這就像幾十億年那么長。
如果我沒猜錯,因為電腦里有 99% 的垃圾,99% 的電力都被浪費了,這已經不能用犯罪來形容了。這些浪費的電力都干什么了?我不知道,但看看任務管理器就知道了:一大堆不知道是什么也不知道在干什么的東西。
我現在只不過寫篇文章,Windows 就要運行 102 個后臺進程。NVidia 顯卡有 6 個進程,一些甚至還有子進程。干啥呢?我又沒玩游戲,對于顯卡來說我現在干的事兒跟 20 年前沒什么區別,但就是要 6 個進程。
微軟的 Edge 瀏覽器也有 6 個進程,它的 Web View 還有 6 個。我甚至都沒打開 Edge。可能是我昨天開了一張 SVG 圖,這就出現了 12 個毫無用處的進程在那兒浪費內存和 CPU?這簡直不可理喻。
這就是為什么一切都不能正常工作,為什么一切都很慢,為什么你每年都要買新手機和新電視,買新的只不過是為了運行更多垃圾程序而已。
我悲觀地認為,事情只會越來越糟,因為像 Facebook、Twitter、Reddit 這些笨頭笨腦的巨無霸公司正是現在的趨勢。每個公司都有好幾千位 " 程序員 ",使用機器學習從 GitHub 復制粘貼這些毫無用處的垃圾代碼。兩個數相加就要使用 32 個 DLL 和 16 個 Windows 服務還有幾億行代碼。
Twitter 有兩千個程序員。但 Tweetdeck 偶爾還是無法加載某個用戶的時間線。這個 bug 已經有四年多了,我估計沒人知道為什么,背后的代碼只不過是一堆復制粘貼的垃圾。
再說 Reddit,從鏈接讀取標題的功能無法正確處理 & 和分號,這都 2022 年了。估計他們也有 2000 多個程序員,但甚至沒人會寫文本分析器,所以他們拿錢是干什么的?
曾經 CPU 和內存都有限的那個時代,才是編程的黃金時代;而現在,我們生活在一堆毫無效率的垃圾里。嗚呼哀哉!
原文地址:http://www.myzaker.com/article/62d6697ab15ec02fc842aa7d