• 3

程式碼有99.9%都是廢話

作為一名從事獨立遊戲設計和程式業務的開發者,克里夫斯基(Cliffski)在一篇文章中吐槽道 —— 這年頭的「程式碼膨脹」,已經到了令人髮指的地步。

他以自己常使用的一個雲端備份服務為例來說明,這個由某個大公司提供的雲端備份工具,基本上提供的服務就是指向本地端硬碟上的一個資料夾,然後把內容複製到一個遠端伺服器上。而上傳到伺服器時,大公司可能需要做一些與資料庫管理有關的事情,例如給這一堆上傳的檔案分配一個名稱,並驗證誰下載了它。

「這是一家大公司,所以他們有大的程式,而且可能經常被駭客攻擊,所以需要一些安全保障,也需要一些驗證,以確保在我上傳和他們接收檔之間沒有被篡改過。我明白這一點。」他表示。「但基本上這個程度的目的就是列舉一些文件,讀取它們,上傳它們,然後關閉連接,並提供一個日誌檔,說明是否成功,如果不成功,出了什麼問題。事實上,我自己也從頭開始寫過這樣的程式碼,使用wininet API和伺服器上的php與MySQL資料庫對話。與企業級的東西相比,我的東西可能沒有那麼強大,但它確實可以做到。」

不過他表示,今天他所使用的這個大公司提供的上傳工具,檔案大小共有230MB,裡頭有2700個不同的檔案,就為了管理這個過程。

他表示這說明了現在的應用程式,已經超越了「臃腫」可以形容的程度,程式檔案的膨脹已經變成「完全的、徹底的、明顯的荒謬和瘋狂」。

一個普通的程式設計師都可以編寫一個同樣功能的程式,它的程式碼量小到只有這個應用程式的 1/20,足以將文件安全、快速地上傳到伺服器。甚至可以是一個單獨的 .exe 可執行文件,無需成百上千的動態鏈接庫(DLL)。

不僅可行,而且簡單、可靠、高效、易於調試。只需稍微努力那麼一下,它就會起到切實的作用。

那麼,現在的程式碼為什麼會變得這麼大而臃腫呢?

「我見過不少程式員在幹這種爛活,我知曉這種情況是怎麼發生的。」他表示,越來越多程式設計師不去研究通過底層的高效程式碼來完成工作,且許多人甚至從未寫過所謂的好程式碼。很多人往往就是引用DLL函示庫,需要什麼就去找什麼。

「我可以斷言,在你的電腦中許多應用程式,99.9%的程式碼是絕對無用的,甚至從來沒有被執行過。它只是在那裡,在一套多達65個檔案的DLL函示庫中,這只是因為某個程式設計師想做一些微不足道的事情,比如保存一個點陣圖,但他們不想從底層來寫這個程式,所以他們導入了一整桶臃腫的垃圾來實現它。」

舉個例子,當年一個僅 64Kb 的《Elite》遊戲,就包含了龐大的星系、3D 太空戰鬥、職業發展系統、交易、以及數千顆可供探索的行星。

誠然,現如今電腦速度已經快到可以忽略程式的臃腫。但是在你使用電腦時,正在懷疑自己到底有沒有點下去按鈕的這半秒鐘時間裡,頻率動輒數 GHz 的處理器世界裡,早已過去了數十億年。我們浪費了個人計算機 99% 的算力和能耗,就為了這些垃圾程式。

想像一下,在你急著想要在檔案總管中快速搜尋某個檔案的時候,工作管理員卻在那搞一堆廢話,如果你查一下後台,竟有102 個程序在忙碌著,天知道他們在幹什麼!

或許正因如此,我們才在幾乎沒有幹任何事情的情況下,你發現你去年才買的機器,今年就「老了」。

你甚至需要每年都換一部新手機、新電視,以執行那些臃腫不堪的串流媒體 App —— 只因為它們依賴執行的程式碼是如此糟糕!

他表示他非常懷念過去程式的黃金時代,程式員們對記憶體和 CPU 的限制瞭如指掌。如今,我們已經被迫生活在了一個效率極其低下、但浪費又如此誇張的泥潭裡。





唐鳳政委
你怎麼看
阿耨多羅三藐三菩提心不應住色生心。不應住聲香味觸法生心。應無所住而生其心。
2022-07-06 11:18 發佈
程式應該不是他寫的
他只是決策者
放開那個女孩 ...
wingsquare2000

+1,前一陣子幫朋友請託的客戶修改組合語言,據說裡面一堆工程師都看不懂所以只能凹廠商處理,加上客戶連編譯器都不提供,結果只能用傳統的腦內編譯完成修改。主管講的都是很容易..別人寫出來又看不起..

2022-07-07 0:17
tteffuB 特肥吧

看不出曾提供過甚麼重要決策

2022-07-07 17:41
99.9%無用論.就很想打他的臉..

如果真是這樣.幹嘛不自已架個雲端備份~然後寫那只要0.1% 的程式碼.來為自已服務.~
水果公司及某泡菜公司表示:

看是要程式臃腫或負優化 只能挑一個

兩個都來就太不講武德了
黃金手指 wrote:
程式碼有99.9%都是廢話


問題是這些"廢話"的目的是
大公司如果把寫這程式的工程師換人
99%接手的人可以很快上手, 看得懂和修改原來的程式

沒有這些"廢話", 沒人知道你自己寫的程式在幹甚麼
好吧 還是有人看的懂
但是可能要花當初寫這程式10倍的時間
30年前我就在說pc遊戲就是瘋狂的朝著浪費更多系統資源的方向在不斷前進

基於硬體的不斷進步,
誰吃飽了撐著的在那邊幹這種吃力不討好的精簡活?
錢燒不完又真的吃撐了沒事幹的例外.
Ghostwriter

他這種獨立遊戲設計工作者會說這種話不意外

2022-07-06 20:22
很正常吧

今天時間有限,只能去拜訪一個客戶,筆電裡有 500 家客戶的資料,我要把另外的 499 筆客戶資料先挑掉,再帶筆電出門嗎?

寫一個輸入 A,B 兩個值求 A+B=? 的程式,光是人機界面輸入防呆就比主要的計算求和的程式碼多了好幾倍...
ulimie wrote:
寫一個輸入 A,B 兩個值求 A+B=? 的程式,光是人機界面輸入防呆就比主要的計算求和的程式碼多了好幾倍...


看用什麼語言寫C=A+B,輸入A跟B算出C
機器語言可能要50行
組合語言可能要30行
Java可能要10行
C/C++可能要10行
Python可能要7行
VB可能要6行
現代程式設計朝API方向發展就是要利用機器龐大的運算能力省人類的時間啊

不然程式都用機器效率最高的機器語言寫好了,只是這樣的話,編程只能是電腦科學家的專利,99.999%的人類都不會使用電腦,不會有GUI的存在,因為電腦都在實驗室內不是普羅大眾能企及的物品
我只是開標案的,實際coding的是民間公司,沒有公信力,就算99.99999%是垃圾,也跟我一點關係也沒有!

其實,文中已經提出關鍵,因為沒有自行開發DLL的能力或時間,找現成的一籃子DLL,比你要死要活自行開發,要來的省事。
  • 3
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?