程序員學(xué)什么樣的知識才能賺錢[2]
另外,現(xiàn)代的操作系統(tǒng),都是多任務(wù)操作系統(tǒng),多任務(wù)開發(fā)是個難點(diǎn),這個多任務(wù)計算其實就是并行計算了,必須對進(jìn)程,子進(jìn)程,線程有很清楚的認(rèn)識,對于時間片有清醒的認(rèn)識,對于鎖的使用,鎖的作用域,去鎖優(yōu)化要很熟悉。但是,也很可惜,目前市面上的書籍,講語言的就講語言,講操作系統(tǒng)的就講操作系統(tǒng),對于這個多任務(wù)開發(fā)這塊,同時需要結(jié)合語言和操作系統(tǒng)兩方面知識的,幾乎沒有,需要自己摸索。
嗯,還有一個很重要的問題,C語言的基本庫相對薄弱,很多近年發(fā)展的高級語言,對于哈希,List,隊列,棧,樹等常見數(shù)據(jù)結(jié)構(gòu)都提供標(biāo)準(zhǔn)庫函數(shù),或者庫模塊來支持,但C一般是沒有的,偏偏實際應(yīng)用開發(fā)還經(jīng)常用到,得自己找開源,或者程序員自己寫,這也會耽誤程序員很大一部分精力。
這里就出現(xiàn)了C語言一個不好不壞的特性,或者說既好也壞,C語言沒提供這些工具,程序員自己寫,很麻煩,但是,由于是自己寫的,自己掌握所有底層代碼,因此,優(yōu)化變得很容易,一個隊列,我隨手加個隊尾指針做加速因子,可以規(guī)避大量的遞歸操作,效率提升百倍甚至千倍以上,這在C里面就是加幾行代碼而已,但是對于Java等語言,由于底層庫是廠商提供,甚至根本就不是本語言開發(fā)的(很多高級語言底層庫其實是C和C++寫的.),程序員一般沒有修改能力,有時候,遇到性能瓶頸,大家就只有干看著,沒有任何辦法。因此,同樣的應(yīng)用,C語言可能一臺服務(wù)器就夠,但是Java語言呢,可能需要3~5臺,就是因為這些語言做的太完善,而太完善的東西,一般不好做優(yōu)化,性能就不及經(jīng)過專項優(yōu)化的C代碼。
就是因為這個原因,在很多嵌入式等小終端場合,由于CPU計算能力有限,需要使用C來做優(yōu)化,而不能使用Java等高級腳本語言,否則程序跑不過烏龜。
另外,現(xiàn)代的數(shù)據(jù)應(yīng)用,出于優(yōu)化起見,一般趨于功能細(xì)分的設(shè)計模型。比如一個數(shù)據(jù)庫應(yīng)用,存儲模塊專門負(fù)責(zé)高速出庫和入庫,中間甚至添加cache機(jī)制作專業(yè)的優(yōu)化,而業(yè)務(wù)模塊則強(qiáng)調(diào)設(shè)計一套嵌入式腳本語言做二次開發(fā),保持最大的業(yè)務(wù)開發(fā)靈活性。其實Java,PHP,很多都是這種模型,MySQL底層模塊實現(xiàn)高速存儲,上層則使用apache和PHP、Java等語言,靈活二次開發(fā)具體應(yīng)用。
但是,C由于一般都是編譯執(zhí)行,不是解釋執(zhí)行,一般很難做到這么大的靈活度,不能用戶僅僅加個字段,就跑過去把整個服務(wù)器重新改寫編譯一遍,這樣維護(hù)成本太高了。因此,C程序員的解決方案,一般是自己實現(xiàn)底層的高速數(shù)據(jù)應(yīng)用,再自己寫個腳本語言的解釋器,提供給用戶做二次開發(fā)。
【程序員學(xué)什么樣的知識才能賺錢[2]】相關(guān)文章:
外匯怎么才能賺錢的理財知識06-21
怎么養(yǎng)豬才能賺錢06-21
做網(wǎng)站怎么才能賺錢06-19
什么樣的小本生意賺錢02-07
如何經(jīng)營早教機(jī)構(gòu)才能更賺錢06-23
什么樣的小本生意比較能賺錢02-08
什么樣的學(xué)生適合學(xué)編導(dǎo)09-09
什么樣的水平才能過二級筆譯?10-01
干果加盟店要怎么經(jīng)營才能賺錢06-20