做驅動開發還是做應用開發更在前途,意思就是說,“你告訴我哪個更有前途,我就好好學哪個,另外一個就不用學了”。問這種問題的同事往往會同時問另外一些問題:我以后就想做驅動開發,你教我這些應用開發的技術有什么用?C++用得多嗎?學了有什么用?我以后不想做GUI,你教我Qt有什么用?
QQ 黃工 2685896890
學習較忌諱的就是“有用的就學,沒有用的就不學”這種功利的態度。兩個問題:
第一,在你還沒學進去、還不了解這種技術時,要如何判斷這種技術學了有沒有用?只能是根據道聽途說,看各種論壇上都怎么說的,豈不知論壇上參與這種討論的**都是菜鳥,有的水平還不如你。
第二,就算你學的技術沒有用上,有什么損失嗎?從嵌入式工程師可以從事各種各樣的開發工作,有做驅動的,有做系統編程的,有做GUI的,有做Web開發的,只要確定了做一類工作,就不可能把嵌入式所學的知識都用上,但至少也用得上3/4的知識,假設剩下的1/4你一輩子也沒機會用上了,那也就損失你一個月的學習時間而已,相比于你的收獲,這算是很大的損失嗎?
請注意,上面的假設是不成立的,沒用上的那1/4也只是暫時沒用上而已,程序員要換工作或者換項目是很常見的,任何人都不可能只涉及一類開發工作,只要有扎實的基礎、完備的知識體系,任何工作都能輕松上手。扎實的基礎,完備的知識體系,我們在安排課程體系的時候,正是以這兩點為依據的。有的課程內容很少有學員在以后工作中會用到,但是缺了這一環就不成為一個完備的知識體系,例如通過C++來講面向對象編程,通過Qt來講面向對象、事件驅動和狀態機編程,這些編程思想是程序員必備的基本素質,而C++和Qt可能有些學員以后工作用不到,那這種課該不該上呢?毫無疑問該上。至于還有些人爭論說C++不如Java用得多,Qt不如GTK用得多,其實這種爭論是無意義的,有工夫爭論誰優誰劣,不如把兩種都學了,會更有收獲。
回到做驅動開發還是做應用開發更有前途的問題。我只能說,做好了都有前途,做不好都沒有前途,只會做一樣而完全不懂另一樣是較沒前途的。不要以為內核開發者就不寫應用程序,Linus寫了一個源代碼管理系統git來維護內核,因為覺得現有的源代碼管理系統都不好用。牛人都是這樣,需要什么就寫什么,才不管是kernel?space還是user space。
同樣,做應用開發如果不懂內核,也沒有辦法很好地利用內核提供的服務寫出性能較優的程序。做內核難,因為調試難,要跟蹤大量的并發線程,因為入門難,要寫一個hello world都需要學很多知識。做應用也難,回頭去看1,計算機科學從理論到實踐大部分都在上面兩層做文章。所以不存在哪個更難哪個更有前途的問題,任何關于哪個更難的討論都是too naive的。
|