國(guó)菱教你提高系統(tǒng)編程能力
來(lái)源:湖北國(guó)菱計(jì)算機(jī)科技有限公司-荊州網(wǎng)站建設(shè)-荊州軟件開(kāi)發(fā)-政府網(wǎng)站建設(shè)公司
時(shí)間:2018-04-27
計(jì)算機(jī)科學(xué)有兩類根本問(wèn)題。一類是理論:算法,數(shù)據(jù)結(jié)構(gòu),復(fù)雜度,機(jī)器學(xué)習(xí),模式識(shí)別,等等等。一類是系統(tǒng):操作系統(tǒng),網(wǎng)絡(luò)系統(tǒng),分布式系統(tǒng),存儲(chǔ)系統(tǒng),游戲引擎,等等。
理論走的是深度,是在追問(wèn)在給定的計(jì)算能力約束下如何把一個(gè)問(wèn)題解決得更快更好。而系統(tǒng)走的是廣度,是在追問(wèn)對(duì)于一個(gè)現(xiàn)實(shí)的需求如何在眾多的技術(shù)中設(shè)計(jì)出最多快好省的技術(shù)組合。
如果你一點(diǎn)不懂理論,還是應(yīng)該學(xué)點(diǎn)的。對(duì)于系統(tǒng)性能的設(shè)計(jì)上,算法和數(shù)據(jù)結(jié)構(gòu)就像在自己手頭的錢一樣,它們不是萬(wàn)能的,但不懂是萬(wàn)萬(wàn)不行的。
怎么提高系統(tǒng)編程能力呢?
1、土辦法:多造輪子。就像學(xué)畫畫要畫雞蛋一樣,不是這世界上沒(méi)有人會(huì)畫雞蛋,但畫雞蛋能馴服手指,感受陰影線條和筆觸。所以,自己多寫點(diǎn)東西吧。寫個(gè)編譯器?渲染器?操作系統(tǒng)?web服務(wù)器?web瀏覽器?部件都一個(gè)個(gè)換成自己手寫的,然后和已有的現(xiàn)成部件比一比,看看誰(shuí)的性能好,誰(shuí)的易用性好?好在哪兒?差在哪兒?為什么?
2、更聰明一點(diǎn)的辦法:多拆輪子。多研究別人的代碼是怎么寫的。然而這個(gè)實(shí)踐起來(lái)經(jīng)常很難。原因:大部分工業(yè)上用的輪子可能設(shè)計(jì)上的思想和技術(shù)是好的,都設(shè)計(jì)和制造過(guò)程都很爛,里面亂成一團(tuán),讓人乍一看毫無(wú)頭緒,導(dǎo)致其對(duì)新手來(lái)說(shuō)非常難拆。這種狀況其實(shí)非常糟糕。所以,此辦法一般只對(duì)比較簡(jiǎn)單的輪子好使,對(duì)于復(fù)雜的輪子,請(qǐng)量力而行。輪子不好拆,其實(shí)是一個(gè)非常嚴(yán)重的問(wèn)題。重復(fù)發(fā)明輪子固然是時(shí)間的浪費(fèi),但當(dāng)輪子復(fù)雜而又不好拆的時(shí)候,尤其是原來(lái)造輪子的人已經(jīng)不在場(chǎng)的時(shí)候,重新發(fā)明和建造輪子往往會(huì)成為無(wú)奈之下最好的選擇。這是為什么工業(yè)界在明知道重復(fù)發(fā)明/制造輪子非常不好的情況下還在不斷重復(fù)發(fā)明/制造輪子的根本原因。