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






.png)





















