
?作者:Amir Taaki?來(lái)源:X,@Narodism
中本聰編寫(xiě)的代碼是不常見(jiàn)的。他有很多怪癖。我們可以通過(guò)對(duì)比他和其他人的代碼來(lái)找出他,只是還沒(méi)有這么做過(guò)。
在我第一次讀到他的代碼時(shí),我就認(rèn)為 “中本聰不是個(gè)程序員),因?yàn)樗拇a非常奇怪。他不遵循哪個(gè)時(shí)代最新的常見(jiàn)代碼規(guī)范。
他大量使用了鎖(那時(shí)候鎖還不流行)。他使用了匈牙利命名法(Hungarian notation),當(dāng)時(shí)已經(jīng)沒(méi)人使用了。他寫(xiě)的函數(shù)遞歸像意大利面一樣糊,而且從不使用對(duì)象來(lái)封裝進(jìn)程。他也集中于 Windows 編程。
(譯者注:
“鎖” 是多線程編程中的一種工具,用于防止多個(gè)線程競(jìng)爭(zhēng)修改同一個(gè)數(shù)據(jù)。
“匈牙利命名法” 是一種變量命名規(guī)則,通過(guò)將變量的類(lèi)型以小寫(xiě)字母作為變量名開(kāi)頭來(lái)幫助記憶其類(lèi)型和用途。
“遞歸” 指的是讓函數(shù)調(diào)用自身的函數(shù)編寫(xiě)方法。
“對(duì)象” 是一種編程方法,指的是把一類(lèi)數(shù)據(jù)及其使用方法(函數(shù))打包成一個(gè)專(zhuān)門(mén)的類(lèi)型,通過(guò)將變量定義為某類(lèi)型下的實(shí)例來(lái)約束該變量的用法。)
所有這些都指向一位較為年長(zhǎng)的人,可能并不是一位軟件開(kāi)發(fā)者,而來(lái)自相鄰的領(lǐng)域,比如工程學(xué)或物理學(xué)。他的白皮書(shū)也體現(xiàn)出,其背景更像是帶有實(shí)用關(guān)切的人,而不是一位數(shù)學(xué)家。
代碼本身是非常獨(dú)特和個(gè)性化的,自身就包含了風(fēng)格。對(duì)代碼的分析會(huì)告訴我們一切。
你甚至可以比較來(lái)自 2008 年的代碼和 2010 年的代碼,而且中本聰寫(xiě)代碼的方法并沒(méi)有改變。實(shí)際上,你可以看到代碼從概念驗(yàn)證變成了細(xì)致地操縱中本聰自己的節(jié)點(diǎn)。
每當(dāng)有人說(shuō)某某是中本聰?shù)臅r(shí)候,我的第一反應(yīng)總是 “你給我看看他寫(xiě)的代碼吧”。這應(yīng)該成為我們的默認(rèn)立場(chǎng)。
但沒(méi)有比特幣程序員多么在乎這個(gè)(也包括我自己)。我們都忙于實(shí)際工作。我猜我們都尊重中本聰君自己的愿望。甚至寫(xiě)這篇展示可以如何找到他的文章,都讓我感覺(jué)像是背叛。
公平地說(shuō),Peter Todd 處理得很好,并沒(méi)有冒領(lǐng)榮譽(yù)。
(譯者注:此處應(yīng)指在 2024 年出版的一部紀(jì)錄片中,創(chuàng)作團(tuán)隊(duì)指稱(chēng) Peter Todd 就是中本聰,而 Peter 以譏笑的方式否認(rèn)。)
nullc:
…… 比特幣的代碼是非常專(zhuān)業(yè)的,而且與常規(guī)的商業(yè)軟件相比,缺陷異常少。說(shuō)編寫(xiě)代碼的人是業(yè)余人士是站不住腳的。
這看起來(lái)是初級(jí)開(kāi)發(fā)者,或者還沒(méi)學(xué)會(huì)區(qū)分與自己風(fēng)格不同的代碼和差代碼區(qū)別的人,所作的之處。人們可能只是想通過(guò)貶低中本聰來(lái)吹捧自己,或者繼續(xù)一種常見(jiàn)的誤解:如果你在某件事情上做得很好,那么你別的事情通常都不如人。反例很常見(jiàn)。
唯一可以批評(píng)比特幣早期代碼的重要錯(cuò)誤就是,代碼沒(méi)有模塊化,但是,早期代碼只有區(qū)區(qū) 3 萬(wàn)行代碼的極小體積,嘗試模塊化會(huì)帶來(lái)許多的復(fù)雜性,以及可能得 bug。所以早期代碼只是恰如其分地做了作者希望它們做的事。后來(lái),當(dāng)人們嘗試拓展這份代碼的時(shí)候,就改成了更加模塊化的形式。
Amir Taaki?:
我的批評(píng)并不是風(fēng)格上的,而是架構(gòu)上的。當(dāng)時(shí)人們已經(jīng)開(kāi)始遷移到 reactor 和事件驅(qū)動(dòng)的架構(gòu)上(比如 nginx)。中本聰關(guān)于比特幣腳本的代碼是不可反序列化的,從而除非解析它們,否則無(wú)法形成靜態(tài)分析。代碼從頭到尾會(huì)規(guī)律地交換字節(jié)序(字節(jié)的編碼方式)。沒(méi)有清晰的調(diào)用圖,而且鎖會(huì)在少數(shù)地方形成遞歸。我還可以繼續(xù)列舉。






.png)





















