問: 一枚大學生,,學過c c#Java,,但是這些老師或者我所了解到的高校老師,上課都不以敲代碼為實例 答: 很簡單,,老師不是專業(yè)程序員唄,。 如果你真的寫過程序,那么一定知道,,寫程序有N個層次…… 1,、這個東西的原理是什么 2、我該如何把它用代碼表達出來 3,、這個表達方式究竟對不對,?能不能通過編譯? 4、哎呀,,為什么這行程序還有這么多副作用,?壞了壞了壞了……它完全不按我預想工作怎么辦? 5,、我就是參考書,所有語句在內(nèi)存在寄存器在任何地方的任何副作用全都門清,! 6,、哎呀哎呀邊界值……這里究竟該用>呢,還是>=呢,?分割點這個邊界是寫成j+1呢,,還是j-1?壞了,!j是不是丟了啊同學們,? 7、我才寫了兩行你給我報7K錯……這鬼畫符怎么看,?什么時候C++里面來了這么多雙冒號這么多<>>><><><<>?! 一般來說: 純看書能把1學好已經(jīng)很不錯了,; 想到2就必須多思考; 想到3就必須多上機,; 想到4就必須把微機原理,、操作系統(tǒng)原理等等融會貫通(不需要很深,但起碼得知道哪是哪),; 想到5就得對編程癡迷,,沒用又瘋又傻的經(jīng)歷,怎么可能把滿篇鬼畫符讀出肉味,。 想到6反而得從書里走出來,,徹徹底底把自己的腦袋變成CPU,以至于見了代碼無需實際運行靜態(tài)分析都能把它的整個運行過程看的通通透透…… 想到7就得跳出課本窠臼,,自發(fā)的跟蹤研讀新技術——沒錯,,泛型之類“過新”的技術并不在教材范圍內(nèi),你必須有能力自己查資料自己教自己知識…… 如果你想要在課堂上現(xiàn)場敲代碼,、敲完一遍過……那么不到5甚至6基本上是不可能的,。然而很遺憾,這水平哪怕專業(yè)程序員都不多見——我在知乎說自己編程,,不超2000行一般都能0 error 0 warn 0 bug一遍過,,多少人罵我吹牛。 對絕大多數(shù)人來說,,一段代碼寫完,,編譯運行255個錯誤(第255個錯誤是錯誤太多無法繼續(xù))才是正常現(xiàn)象;然后排錯一排五六個小時(往往總還是會有一兩個錯誤無論如何都找不到根源)…… 等等……一節(jié)課是多少分鐘來著,? 貼點數(shù)據(jù),。 https://security./questions/21137/average-number-of-exploitable-bugs-per-thousand-lines-of-codesecurity./questions/21137/average-number-of-exploitable-bugs-per-thousand-lines-of-code 根據(jù)這個數(shù)據(jù)可知: google chrome每千行代碼bug率為0.06;或者說平均每十萬行代碼有6個bug,;或者說平均每一萬行代碼有0.6個bug,。 Firefox的代碼質(zhì)量要更好一些,千行bug率僅為0.05,;也就是說平均每兩萬行代碼會有一個bug,。 python千行代碼bug率為0.003,一百萬行代碼有3個bug,,或者33萬行代碼出一個bug,。 ruby千行bug率為0.08。 PHP千行bug率為0.03——剛好比python差了十倍,。寫的真爛,,三萬三千行代碼就有一個bug。 django的bug率為0.007,,比python代碼質(zhì)量差了不少,,十幾萬行代碼就有一個bug。 ruby on rails的bug率為0.05,。 總結起來就是,,這些業(yè)界支柱級的開源項目,其每千行代碼的bug數(shù)目介于0.003到0.08之間;或者說,平均每一萬兩千五百行代碼到三十萬行代碼會出一個bug,。 再看看這個,,看看你們能不能被嚇死: >>industry average bugs per 1000 lines of code at 15-50 and Microsoft released c... 業(yè)界平均每1000行代碼有15到50個bug;微軟released代碼平均1000行有0.5個bug——而NASA的代碼,50萬行0bug! 看看這個數(shù)據(jù),看看這些業(yè)界頂尖程序員的代碼質(zhì)量,。 現(xiàn)在,看看我那可憐巴巴的,、2000行代碼0bug的記錄,,您覺得我是“代碼質(zhì)量真好”呢,還是“2000行無bug也值得出來吹”,? 看著業(yè)界頂級程序員們的水平,,我還覺得自己這兩下子不夠看呢;你們居然覺得是吹,? 是我對自己要求太高呢,,還是你們眼界太狹隘,? 點個在看你最好看 Click on it to see you look good |
|