看板 C_Chat
作者 pl132 (pl132)
標題 [閒聊]遊戲開發者抱怨現在程式碼誇張膨脹「可能有99%的內容都是垃
時間 Sun Jul  3 16:39:03 2022


遊戲開發者Cliffski抱怨現在程式碼誇張膨脹「可能有99%的內容都是垃圾」

https://tinyurl.com/229o8zbm
遊戲開發者Cliffski抱怨現在程式碼誇張膨脹「可能有99%的內容都是垃圾」 | T客邦
[圖]
越來越多程式設計師不去研究通過底層的高效程式碼來完成工作,且許多人甚至從未寫過所謂的好程式碼。很多人往往就是引用DLL函示庫,需要什麼就去找什麼。 ...

 

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

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


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


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

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

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


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

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

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


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


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

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


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

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

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

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

--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.177.1.144 (臺灣)
※ 文章代碼(AID): #1YmLMpF_ (C_Chat)
※ 文章網址: https://www.ptt.cc/bbs/C_Chat/M.1656837555.A.3FF.html
amsmsk: 確實1F 07/03 16:40
argorok: 確實2F 07/03 16:40
a2364983: 給錢啊 時限跟薪水就訂在那邊 幹嘛自己寫底層3F 07/03 16:41
k960608: 要有以前那種超多限制的環境才有研究這些程式的必要阿4F 07/03 16:41
horseorange: 所以你敢刪掉99%的代碼嗎5F 07/03 16:41
mosqutiolamp: 確實6F 07/03 16:41
abccbaandy: 他去大公司工作就知道了,獨立開發都把事情想得很簡單7F 07/03 16:42
gaaaaper: 確實 你行你上8F 07/03 16:42
q251425: 幹嘛自己造已經有的輪子....9F 07/03 16:43
spfy: 對 我就廢 寫個小程式要引用幾百M的.NET框架10F 07/03 16:43
mapulcatt: 不用自己造輪子 但是使用輪子也該用得更聰明一點吧11F 07/03 16:43
aliensu: 可能還是要踏出門一下12F 07/03 16:43
wizardfizban: 那麼肝 自己重寫又沒比較多薪水 幹嘛自找麻煩
嫌肝太新鮮?13F 07/03 16:43
rockmanx52: 如果是接手前人的會留一堆垃圾很正常 因為根本看不懂包括那個寫的人...15F 07/03 16:44
leon19790602: 無解啦,就問你接手上一個的碼,你願意全部重寫只為加一個功能,還是直接外掛一個省事?17F 07/03 16:44
tsubasawolfy: 不知道寫程式的AI會不會執著於#magic19F 07/03 16:45
flysonics: 這就是最典型的沒事幹嘛去造輪子的問題20F 07/03 16:45
hom5473: 輪子別人造的 隨便改以後維護很麻煩 但裡面又塞了一堆21F 07/03 16:46
spfy: 如果他是工程師寫了三十年程式 那我可以理解他說的 但現在高22F 07/03 16:46
fuhu66: 硬體夠強軟體就隨便寫,功能對就可以了23F 07/03 16:46
spfy: 階語言就是叫你直接用別人的輪子 就算那輪子很胖24F 07/03 16:46
Srwx: 一部分是空間成本低 所以膨脹頂多讓玩家增加下載時間25F 07/03 16:47
qwer338859: 一個爛的工程師可以製造三個工作機會.jpg26F 07/03 16:47
JustBecauseU: 好像js也是這樣欸27F 07/03 16:47
hom5473: 而大公司可能有自己常用的輪子組28F 07/03 16:47
tw15: 錢29F 07/03 16:47
flysonics: 我覺得這個人真的把問題想得太簡單 一堆DLL放在那邊就是為了相容性跟可攜性
你哪天灌個東西就因為少個DLL或是兩個互相衝突 結果導30F 07/03 16:47
inte629l: 東西穩穩能動就好 重造出事還要扛責任33F 07/03 16:48
flysonics: 致你要花幾天的時間在那邊Debug 最後解法還超級簡單34F 07/03 16:49
arrenwu: "與企業級的東西相比,我的東西可能沒有那麼強大,35F 07/03 16:49
flysonics: 那你就會寧願留多一點空間放這些DLL了36F 07/03 16:49
arrenwu: 但它確實可以做到。" <--- 所以他想表達啥?37F 07/03 16:49
astrofluket6: Techbang呵呵連程式設計師的名字都寫錯38F 07/03 16:49
sunshinecan: 如果目標平台有足夠空間 當然是開發效率>>>程式精簡39F 07/03 16:50
Vladivostok: 現在容量就跟不用錢一樣,哪個消費者在乎大小?只有switch 版遊戲會加減瘦身吧?然後瘦完載day1修正檔40F 07/03 16:50
arrenwu: 他好像在說"我做的小項目程式可以比較精簡"的廢話42F 07/03 16:51
henry1234562: 簡單說 就是因為現在不怕容量不夠43F 07/03 16:51
medama: 確實44F 07/03 16:51
memory1024: 完全理解,我在前公司曾經砍掉系統一半的code再重寫了1/6去取代,結果網站速度比以前快了10倍有45F 07/03 16:51
henry1234562: 所以把程式精簡這一步優先度就很低47F 07/03 16:51
CorkiN: 獨立遊戲開發者 難怪說的出這種話==48F 07/03 16:52
arrenwu: 有效能需求的時候自然會有人去profiling49F 07/03 16:52
eewhole: 自己寫的和接手四五個人碰過的程式就不一樣,講什麼幹話50F 07/03 16:52
q251425: 要在影響效能重大才有理由做 通常都只是佔容量而已沒差51F 07/03 16:53
henry1234562: 然後呢 接手別人寫的程式是怎麼回事應該知道吧52F 07/03 16:53
eewhole: 原來是獨立遊戲開發者講的,難怪53F 07/03 16:53
arrenwu: 「研究通過底層的高效程式碼來完成工作」這幹話都講得出54F 07/03 16:53
henry1234562: 你拿過來的東西 要加一個功能 你難道要重新把別人寫好的東西完全review一遍嗎55F 07/03 16:53
airawesu: 團體分工時 當然要選擇肥但很容易看懂的寫法比較輕鬆...57F 07/03 16:54
wanjack: 他的意思可能是你能自己造輪子 但有現成的可以用,只是那58F 07/03 16:54
henry1234562: 哪有這美國時間.. 完整看一遍跟重新開發有啥兩樣59F 07/03 16:54
wanjack: 個現成的上面有超複雜無意義的花紋這樣 自己造就能只保留60F 07/03 16:54
k960608: 前人的成果就擺在那 沒什麼事情當然是能不動就不動阿61F 07/03 16:54
wanjack: 輪子的功能不需要那堆裝飾62F 07/03 16:54
r85270607: 我反而會去注意奇怪的遊戲容量膨脹問題63F 07/03 16:54
arrenwu: 現在CI/CD可能都比他那個高效重要多了64F 07/03 16:54
CorkiN: 大公司的程式一堆都是長久pass下來的 你想改還不一定給你改勒 動了出事誰負責==65F 07/03 16:54
spfy: 能正常運作的就不要去動它 大型專案的工程師定律67F 07/03 16:54
et310: 雀食68F 07/03 16:55
henry1234562: 要改就要改一整套完整的 然後還要測試結果沒變69F 07/03 16:55
CorkiN: 而且很多時候你光要理解某部分某些東西為什麼那樣做都會有困難了70F 07/03 16:55
storyo11413: 自吹順便踩大公司72F 07/03 16:55
henry1234562: 你一個人能完成那你就自己做啊..73F 07/03 16:55
k960608: 簡單說 比起要多繞10分鐘才能回家 找新路的那個出錯成本74F 07/03 16:55
aegis123321: 同意啊 現在一堆實作就是一大串dependencies 但他舉75F 07/03 16:55
eewhole: 獨立遊戲開發不用趕時程商業工具要阿,一個月要我重寫?76F 07/03 16:55
aegis123321: 自己寫小程式有差不多功能的例子很尷尬==77F 07/03 16:55
r85270607: 記得是新德軍總部系列出現時我注意到高達50G
這對於以技術宅起家的id soft而言 臃腫真的是很奇怪78F 07/03 16:55
k960608: 不一定更划算就是 站在第一次探路的立場上會想找新路80F 07/03 16:55
avans: 說的是正論,但市面上已有造好的輪子,通常就是直接利用了81F 07/03 16:56
chinnez: 我他媽才不做輪子 ,我他媽就給你裝輪子 不管大小用途就給你他媽的裝爆82F 07/03 16:56
spy19: 問題是去追求他所說的那些東西 遊戲公司也不會賺更多錢啊84F 07/03 16:56
arrenwu: 他舉那例子...痾 一個有工作經驗的人講話像個學生85F 07/03 16:56
r85270607: 不過外行人也不在乎就是 甚至記者以為越大越好的也有86F 07/03 16:56
henry1234562: 他是獨立開發者 如果沒有在大公司當碼農就不會理解87F 07/03 16:57
k960608: 工作經驗不是問題阿 他長期在獨立環境的話這樣想很正常88F 07/03 16:57
henry1234562: 然而理論上只要他的程式部分有跟任何人合作過89F 07/03 16:57
eewhole: 會講出這種話的人,真的想叫他多出去接觸人,別宅在家90F 07/03 16:57
henry1234562: 理論上應該就能體會到寫程式碼不是這樣91F 07/03 16:57
storyo11413: 商場最沒價值就是他認為自己很厲害的地方 縮空間沒用92F 07/03 16:57
Bencrie: 遊戲的話佔空間的絕對不是程式碼啦93F 07/03 16:57
henry1234562: 不是我要說 就算是我自己寫的 一個月前寫的都看不懂94F 07/03 16:57
s540421: 客戶不在乎你寫得多美多小,好玩好用才是他們要的95F 07/03 16:57
gaym19: 有別人的輪子可以用 幹嘛自己造一個輪子96F 07/03 16:58
Severine: 我自己就貢獻了很多QQ97F 07/03 16:58
henry1234562: 何況是不知道幾個人用多少年寫好的東西98F 07/03 16:58
flysonics: 作為工程師我認同啦 reduce code size & performance99F 07/03 16:58
zxcasdjason1: 這完全是菜鳥發言
遵循框架是為了統一開發語言降低溝通成本,功能與安全是需求,別混為一談,而需求會決定採用什麼框架來解決問題,獨立開發者我好棒,我能寫高效代碼但別人看不懂的思維,才是一直重造輪子的原因688F 07/04 10:47
easych: 大家都會抱怨動態連結垃圾庫,就算放手也沒人願意改XD693F 07/04 11:35
notinservice: 確實694F 07/04 13:21
oyaji5566: 1開發時間,2測試問題
你用現成的庫既省時間而且測試人員也不用再重新驗證695F 07/05 12:58

--
--
作者 pl132 的最新發文:
點此顯示更多發文記錄
(pl132.): [閒聊]遊戲開發者抱怨現在程式碼誇張膨脹「可能有99%的內容都是垃 - ACG板