做驅(qū)動(dòng)開(kāi)發(fā)還是做應(yīng)用開(kāi)發(fā)更在前途,意思就是說(shuō),“你告訴我哪個(gè)更有前途,我就好好學(xué)哪個(gè),另外一個(gè)就不用學(xué)了”。問(wèn)這種問(wèn)題的同事往往會(huì)同時(shí)問(wèn)另外一些問(wèn)題:我以后就想做驅(qū)動(dòng)開(kāi)發(fā),你教我這些應(yīng)用開(kāi)發(fā)的技術(shù)有什么用?C++用得多嗎?學(xué)了有什么用?我以后不想做GUI,你教我Qt有什么用? QQ 黃工 2685896890 學(xué)習(xí)較忌諱的就是“有用的就學(xué),沒(méi)有用的就不學(xué)”這種功利的態(tài)度。兩個(gè)問(wèn)題: 第一,在你還沒(méi)學(xué)進(jìn)去、還不了解這種技術(shù)時(shí),要如何判斷這種技術(shù)學(xué)了有沒(méi)有用?只能是根據(jù)道聽(tīng)途說(shuō),看各種論壇上都怎么說(shuō)的,豈不知論壇上參與這種討論的**都是菜鳥(niǎo),有的水平還不如你。 第二,就算你學(xué)的技術(shù)沒(méi)有用上,有什么損失嗎?從嵌入式工程師可以從事各種各樣的開(kāi)發(fā)工作,有做驅(qū)動(dòng)的,有做系統(tǒng)編程的,有做GUI的,有做Web開(kāi)發(fā)的,只要確定了做一類(lèi)工作,就不可能把嵌入式所學(xué)的知識(shí)都用上,但至少也用得上3/4的知識(shí),假設(shè)剩下的1/4你一輩子也沒(méi)機(jī)會(huì)用上了,那也就損失你一個(gè)月的學(xué)習(xí)時(shí)間而已,相比于你的收獲,這算是很大的損失嗎? 請(qǐng)注意,上面的假設(shè)是不成立的,沒(méi)用上的那1/4也只是暫時(shí)沒(méi)用上而已,程序員要換工作或者換項(xiàng)目是很常見(jiàn)的,任何人都不可能只涉及一類(lèi)開(kāi)發(fā)工作,只要有扎實(shí)的基礎(chǔ)、完備的知識(shí)體系,任何工作都能輕松上手。扎實(shí)的基礎(chǔ),完備的知識(shí)體系,我們?cè)诎才耪n程體系的時(shí)候,正是以這兩點(diǎn)為依據(jù)的。有的課程內(nèi)容很少有學(xué)員在以后工作中會(huì)用到,但是缺了這一環(huán)就不成為一個(gè)完備的知識(shí)體系,例如通過(guò)C++來(lái)講面向?qū)ο缶幊蹋ㄟ^(guò)Qt來(lái)講面向?qū)ο蟆⑹录?qū)動(dòng)和狀態(tài)機(jī)編程,這些編程思想是程序員必備的基本素質(zhì),而C++和Qt可能有些學(xué)員以后工作用不到,那這種課該不該上呢?毫無(wú)疑問(wèn)該上。至于還有些人爭(zhēng)論說(shuō)C++不如Java用得多,Qt不如GTK用得多,其實(shí)這種爭(zhēng)論是無(wú)意義的,有工夫爭(zhēng)論誰(shuí)優(yōu)誰(shuí)劣,不如把兩種都學(xué)了,會(huì)更有收獲。 回到做驅(qū)動(dòng)開(kāi)發(fā)還是做應(yīng)用開(kāi)發(fā)更有前途的問(wèn)題。我只能說(shuō),做好了都有前途,做不好都沒(méi)有前途,只會(huì)做一樣而完全不懂另一樣是較沒(méi)前途的。不要以為內(nèi)核開(kāi)發(fā)者就不寫(xiě)應(yīng)用程序,Linus寫(xiě)了一個(gè)源代碼管理系統(tǒng)git來(lái)維護(hù)內(nèi)核,因?yàn)橛X(jué)得現(xiàn)有的源代碼管理系統(tǒng)都不好用。牛人都是這樣,需要什么就寫(xiě)什么,才不管是kernel?space還是user space。 同樣,做應(yīng)用開(kāi)發(fā)如果不懂內(nèi)核,也沒(méi)有辦法很好地利用內(nèi)核提供的服務(wù)寫(xiě)出性能較優(yōu)的程序。做內(nèi)核難,因?yàn)檎{(diào)試難,要跟蹤大量的并發(fā)線程,因?yàn)槿腴T(mén)難,要寫(xiě)一個(gè)hello world都需要學(xué)很多知識(shí)。做應(yīng)用也難,回頭去看1,計(jì)算機(jī)科學(xué)從理論到實(shí)踐大部分都在上面兩層做文章。所以不存在哪個(gè)更難哪個(gè)更有前途的問(wèn)題,任何關(guān)于哪個(gè)更難的討論都是too naive的。
|