<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          “如今,99.9% 以上的代碼都是垃圾!”

          共 2201字,需瀏覽 5分鐘

           ·

          2022-07-26 14:08

          作者:Cliff Harris 譯者:彎月 來源:CSDN


          偶然的一次,我需要使用網(wǎng)盤服務(wù),就是把文件上傳到某個(gè)地方(具體是哪家服務(wù)就不說了,反正都一樣)。這只一個(gè)非常簡(jiǎn)單的操作,首先將硬盤上某個(gè)文件夾里的文件復(fù)制到遠(yuǎn)程服務(wù)器,然后再執(zhí)行一些數(shù)據(jù)庫操作,給文件起個(gè)名字,然后提供給下載,僅此而已。

          提供網(wǎng)盤服務(wù)的是一家大公司,規(guī)模很大,估計(jì)每天有不少黑客訪問,所以他們需要一些安全措施,上傳和下載的時(shí)候還得驗(yàn)證文件是否被篡改等等,這都沒問題。

          但是,最基本的功能只不過是列出文件、讀取文件、上傳文件,然后關(guān)閉連接,在日志里寫上成功,或者出錯(cuò)的話在日志里寫出錯(cuò)誤原因。這又不是火箭科技,實(shí)際上我自己用wininet API寫這段代碼,服務(wù)器用PHP和MySQL,盡管達(dá)不到企業(yè)級(jí),但也能支持幾十萬文件的上傳、下載和日志記錄——一個(gè)人寫代碼大概也就是兩三周的工作量?

          然而,我用的那個(gè)專用上傳工具的客戶端總共有230MB,包含2700多個(gè)文件。

          是的,你沒看錯(cuò),2700多個(gè)文件,237MB的可執(zhí)行文件和各種垃圾,僅僅是為了把文件拷貝到服務(wù)器而已。這已經(jīng)不能叫膨脹了,更不是過度設(shè)計(jì),這完完全全到了不可理喻的地步。
          實(shí)際上,不光是這個(gè)上傳工具,如今任何大型軟件公司的任何軟件都一樣。

          電腦里 99.9% 以上的代碼都是毫無用處的垃圾

          我知道怎么回事,我也見過其他程序員的實(shí)現(xiàn)方式。根本原因在于,程序員根本不懂怎樣通過高效率的底層代碼來實(shí)現(xiàn)目標(biāo),他們甚至從來沒見過底層的高效代碼。沒見過的東西怎么可能做得出來,還要做得更好呢?

          編寫一個(gè)安全、快速上傳文件到服務(wù)器的軟件,最多需要二十分之一的代碼量。只需要一個(gè)文件,一個(gè)exe文件就夠了,根本不需要好幾百個(gè)DLL。這是完全可能的,而且會(huì)更容易、更可靠、效率更高,還很容易調(diào)試,甚至能更穩(wěn)定地工作。

          代碼膨脹似乎是像我這種老家伙的碎碎念,畢竟我已經(jīng)上年紀(jì)了。但我們這幫老家伙們碎碎念的可不是代碼運(yùn)行減慢了50%、規(guī)模增大了50%。實(shí)際情況遠(yuǎn)不止于此。

          我相信你電腦里99.9%以上的代碼都是毫無用處的垃圾,永遠(yuǎn)不會(huì)被運(yùn)行。但這些代碼都堆在那兒,堆在65個(gè)DLL文件里,這都是因?yàn)槌绦騿T想做一些不太重要的事情,比如保存一張圖片,但他們完全不懂得該怎么做,就干脆導(dǎo)入一大堆垃圾來實(shí)現(xiàn)。

          我說過,看著年輕程序員這樣做我真不應(yīng)該生氣,畢竟他們學(xué)到的實(shí)現(xiàn)方式就是這樣的。他們根本不知道高性能開發(fā)是什么樣子,也沒見過條件有限的軟件是什么樣子。你要是告訴他們,最初的Elite游戲能生成整個(gè)銀河系,有3D狗斗,有職業(yè)系統(tǒng),交易系統(tǒng),還能探索上千個(gè)星球,而這一切只有64KB,他們也能接受,但完全沒辦法理解這與現(xiàn)在的軟件之間有什么差距。

          CPU和內(nèi)存都有限才是編程的黃金時(shí)代

          為什么我關(guān)心這件事?原因有很多,最簡(jiǎn)單的就是當(dāng)你花費(fèi)兩千倍的時(shí)間來做一個(gè)東西,它就應(yīng)該能用。但更重要的是,我知道99.9%的CPU時(shí)間都浪費(fèi)在這些垃圾上。每秒執(zhí)行幾十萬指令,結(jié)果毫無用處。本來我的電腦應(yīng)該處于極低功耗,風(fēng)扇都不應(yīng)該轉(zhuǎn),因?yàn)槲椰F(xiàn)在干的只不過是在wordpress里寫字而已。

          現(xiàn)在的電腦速度飛快,確實(shí)是魔法。你能想到的一切,都能在屏幕刷新一次的1/60秒內(nèi)完成。但是!當(dāng)我在Surface筆記本(幾乎是新的!)上點(diǎn)擊硬盤圖標(biāo)時(shí),我能看到明顯的延遲,電腦在一點(diǎn)點(diǎn)畫出用戶界面。這需要很久,我估計(jì)至少有半秒鐘,對(duì)于CPU來說這就像幾十億年那么長。

          如果我沒猜錯(cuò),因?yàn)殡娔X里有99%的垃圾,99%的電力都被浪費(fèi)了,這已經(jīng)不能用犯罪來形容了。這些浪費(fèi)的電力都干什么了?我不知道,但看看任務(wù)管理器就知道了:一大堆不知道是什么也不知道在干什么的東西。

          我現(xiàn)在只不過寫篇文章,Windows就要運(yùn)行102個(gè)后臺(tái)進(jìn)程。NVidia顯卡有6個(gè)進(jìn)程,一些甚至還有子進(jìn)程。干啥呢?我又沒玩游戲,對(duì)于顯卡來說我現(xiàn)在干的事兒跟20年前沒什么區(qū)別,但就是要6個(gè)進(jìn)程。

          微軟的Edge瀏覽器也有6個(gè)進(jìn)程,它的Web View還有6個(gè)。我甚至都沒打開Edge。可能是我昨天開了一張SVG圖,這就出現(xiàn)了12個(gè)毫無用處的進(jìn)程在那兒浪費(fèi)內(nèi)存和CPU?這簡(jiǎn)直不可理喻。

          這就是為什么一切都不能正常工作,為什么一切都很慢,為什么你每年都要買新手機(jī)和新電視,買新的只不過是為了運(yùn)行更多垃圾程序而已。

          我悲觀地認(rèn)為,事情只會(huì)越來越糟,因?yàn)橄馞acebook、Twitter、Reddit這些笨頭笨腦的巨無霸公司正是現(xiàn)在的趨勢(shì)。每個(gè)公司都有好幾千位“程序員”,使用機(jī)器學(xué)習(xí)從GitHub復(fù)制粘貼這些毫無用處的垃圾代碼。兩個(gè)數(shù)相加就要使用32個(gè)DLL和16個(gè)Windows服務(wù)還有幾億行代碼。

          Twitter有兩千個(gè)程序員。但Tweetdeck偶爾還是無法加載某個(gè)用戶的時(shí)間線。這個(gè)bug已經(jīng)有四年多了,我估計(jì)沒人知道為什么,背后的代碼只不過是一堆復(fù)制粘貼的垃圾。

          再說Reddit,從鏈接讀取標(biāo)題的功能無法正確處理&和分號(hào),這都2022年了。估計(jì)他們也有2000多個(gè)程序員,但甚至沒人會(huì)寫文本分析器,所以他們拿錢是干什么的?

          曾經(jīng)CPU和內(nèi)存都有限的那個(gè)時(shí)代,才是編程的黃金時(shí)代;而現(xiàn)在,我們生活在一堆毫無效率的垃圾里。

          嗚呼哀哉!

          推薦閱讀

          讀博了

          我的考研簡(jiǎn)史

          吳恩達(dá),屬實(shí)牛逼

          機(jī)器學(xué)習(xí)數(shù)學(xué)本質(zhì)

          點(diǎn)「在看」的人都變好看了哦!
          瀏覽 26
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久草草草草草亚洲 | 【乱子伦】露脸50 | 做爱的免费网站 | 日韩艹| 韩国三级黄色片免费 |