揚(yáng)尼斯定律:程序員的開(kāi)發(fā)效率每6年提高一倍
我不斷的聽(tīng)到各種關(guān)于“軟件危機(jī)”的警言,以及關(guān)于軟件開(kāi)發(fā)缺少過(guò)程規(guī)范的批評(píng)。我做編程工作超過(guò)15年,我認(rèn)為這些言論基本上都是錯(cuò)的:我確信我能在很短的時(shí)間里用如今的開(kāi)發(fā)工具復(fù)制出15年前一個(gè)不錯(cuò)的程序員開(kāi)發(fā)出的東西。
模仿摩爾定律和Proebsting定律(這個(gè)不像是預(yù)言,更像是挑唆),我要給出的定律是:程序員的開(kāi)發(fā)效率每6年提高一倍。
為了證實(shí)我這個(gè)定律里的數(shù)字部分,請(qǐng)注意下面我的發(fā)現(xiàn)。在1972年的《在分解模塊化系統(tǒng)中用到的規(guī)范(On the Criteria to Be Used in Decomposing Systems into
Modules)》這篇經(jīng)典論文里,作者David Parnas寫道:
KWIC索引系統(tǒng)接受一個(gè)有序的多行信息,每行由有序的多個(gè)詞組成,每個(gè)詞由有序的多個(gè)字符組成。每行信息都能通過(guò)把第一個(gè)詞挪到行尾這樣“循環(huán)變換”。KWIC索引系統(tǒng)的輸出是每行內(nèi)容都通過(guò)字母順序經(jīng)過(guò)“循環(huán)變換”后的新行。這是一個(gè)小系統(tǒng),如果不考慮特殊情況(海量數(shù)據(jù),沒(méi)有軟件支持),這樣一個(gè)系統(tǒng)由一個(gè)中等水平的程序員來(lái)開(kāi)發(fā),能在一到兩周時(shí)間里做出來(lái)。 |
現(xiàn)在是2003年,如果一個(gè)程序員不能在一或二個(gè)小時(shí)——而不是1972年的一至二周——做出這個(gè)系統(tǒng),我會(huì)認(rèn)為他是個(gè)不可接受的程序員。這就建立起了一個(gè)31年里開(kāi)發(fā)效率提高40倍、或者說(shuō)每年12.5%提高的公式,由此而得到每6年開(kāi)發(fā)效率提高一倍的結(jié)論。
請(qǐng)注意,沒(méi)有一個(gè)現(xiàn)代程序員所使用的開(kāi)發(fā)工具是專門針對(duì)KWIC系統(tǒng)的需求的:這個(gè)問(wèn)題需要“從頭解決”,所以,盡管跟1972年的時(shí)代不同,我們?nèi)匀豢梢赃@樣比較。
這種巨大的進(jìn)步無(wú)疑是由于可復(fù)用的軟件代碼、更好的開(kāi)發(fā)工具、更好的編程語(yǔ)言,更好的計(jì)算機(jī)教育等因素疊加的結(jié)果。但同時(shí)也是使用更快的機(jī)器、允許我們忽略掉底層的操作、使用更便捷但效率稍微次一點(diǎn)的解決方案的結(jié)果。
原文鏈接:http://www.aqee.net/yanniss-law-programmer-productivity-doubles-every-6-years/