這位華清遠見高級研發工程師和高級講師,從事Android底層及系統移植相關研發工作,09年轉行到裴玄與研發結合的教育行業,擔當企業在職員工培訓、企業內訓及大學生職業培訓,從那時開始進行Android應用開發及底層移植等工作,現在來看看這些學習指南具體有哪些,如何來更好地把握?
任何一門新技術,興趣和堅持都起關鍵性的作用
唐攀以前在日企從事汽車嵌入式開發,是什么緣故促使他轉向Android移動開發?在自主學習的過程中有沒有遇到什么困難?他是如何克服的?看看他是如何來做到的,Android在08年出現,大陸的程序員基本上09年才開始接觸 Android,我之所以轉向Android移動開發,主要是因為Android是基于Linux操作系統,而我之前又是做Linux應用與驅動工作,所以一定的“交集”讓我快速轉型。當然,剛開始對Android很陌生,后來買了部G1手機才開始慢慢感受到它的優勢,比如開源、程序間平等、UI漂亮和可玩性強等。
當然在09年開始學習Android時,那個時候網上并沒有現在這么多的資料,所以都是直接從官方網站上看在線SDK。有問題也是Google去解決,并且一般做底層的都是和C或C++接觸比較多,所以Java語言這兒可能也會有一點突破,不過還好,學會C的人,學其它語言都不難。在學習過程中就是靠興趣和堅持這種強大精神支撐才得以順利轉型,當然在轉到Android底層之后,主要還是因為開源是Android大的優勢,也比較適合國情。如果在底層的開發過程中把環境搭建和調試經驗做的很好,并且解決相應的問題,那就會是自己的經驗,快捷有效的辦法就是借助google和自己的跟讀代碼。
如何能夠更好、更深入地學習Android技術
對于Android初學者來講,我個人認為Android是一個大雜燴,牽扯的東西非常多,比如Java、C、C++、設計模型、Linux和驅動等等,總之太多了。如果你是做嵌入式底層,比如做過驅動,做過Linux應用程序開發,那你學Android底層相對比較輕松一些,如果你是做上層的,那你要突破的點太多了。我覺得學習Android底層,應站在應用程序角度考慮接口,站在接口角度考慮框架, 站在框架角度考慮硬件抽象與數據處理,以Linux操作為基礎,以編程語言為武器,以設計模型為戰略,以read source code 為具體動作,堅持下來就行。
在嵌入式開發領域,對于嵌入式學習又有怎樣獨到的見解呢?
如何開始和深入學習嵌入式開發,這個還是要和專業相關,并且有興趣,因為嵌入式有時真的挺枯燥,簡單的問題可能卡上幾天。深入的話,就是個人追求的問題,我是喜歡打破沙鍋問到底的人,嵌入式這塊如果你想深入的話,匯編和體系結構要學好,然后是操作系統要了解透、中斷處理、內存管理和內核結構體等等都能達到掌握程度,另外再加上代碼的閱讀能力就差不多了。
此外在嵌入式學習過程中,如果想要成為一名優秀的嵌入式工程師,還應該具備哪些相關的職業素養呢?
技術無止境,幾年前J2ME還很火,可現在已是Android和ios天下,再過兩年可能就是HTML5,這些都不好說。其實技術只是工具,主要的還是編程思想和一個人對新方向的嗅覺能力,編程思想這塊就是開發經驗的積累,多調幾個錯誤、多寫代碼、多看別人的代碼和多實現自己的想法,然后就是多關注外類似CSDN的一些IT資訊門戶。對于職業素養來講,在這個很小的圈子里,要堅持做好每一件事,下好每一行代碼。
在嵌入式學習過程中,應該如何來選擇適合自己的嵌入式系統系統?
常用的嵌入式系統主要還是按功能分:實時和非實時,單任務與多任務,常見的有vxworks、linux、winCE和ucosII等。選嵌入式系統得根據硬件芯片和系統功能來決定,如果實時性要求高的,那么就是vxworks和ucosII,如果用于處理多任務,并且要UI表現好點,那么就是linux+QT或Android與winCE。
在嵌入式學習過程中,硬件開發平臺有FPGA,ARM,DSP,AVR等等,哪個更好,對于初學者來講如果想要學習ARM開發板,該如何去選購?
其實不能說硬件開發平臺哪個更好,只能說哪個更適合你哪個更有前途,說白了,就是賺的多還不累的。其實這幾個平臺都有自己的特點,FPGA基本上是純硬件,搞IC的,DSP主要是邏輯處理控制,ARM平臺現在應用比較多一些,基本上就是針對ARM的芯片進行編程和外設控制,AVR是比較偏小型化的單片機開發和設計,應用廣泛且比較簡單。如果你是硬件專業的,就做FPGA或ARM、AVR的外設電路設計,如果做軟件的,就DSP、ARM和AVR的編程等。如果初學者要學習ARM開發板,我覺得還是2440的比較不錯,一是便宜資源多,二是方便調試。有很學生就想花大價錢,買好的板,其實沒有用,買了學習用不上也是浪費,不如自己花500多塊買個2440,一點一點的學習,學習成本低且效率好。好去淘寶上找一個2440開發板,那里不僅多,關鍵不貴包郵,還送東西。
有人認為嵌入式學習中,嵌入式開不一定要學會ARM匯編指令集,還有人說會Windows CE的都是牛人,不過也有人講Windows CE沒前景,就業范圍太窄,如何來跟好的看待這個問題?
沒寫過匯編程序的C語言的程序員,不是優秀的程序員。為什么這么說?匯編并不是一門語言,而是背后的體系結構,了解體系結構后,能大大增加你的計算機理解力,能寫出高效的C代碼,就好像C語言是武器,而體系結構是劍法,有了寶劍,沒有劍法,不能達到高的殺傷力。WinCE我沒有太多的經驗,現在WinCE是有點落伍了,主流都是WindowsPhone了,不過目前WindowsPhone市場需求還沒有激發出來,再過上一年應該差不多了,大家可以關注下,個人比較看好它。
在嵌入式學習中,嵌入式開往哪個方向發展會比較好?在未來的移動互聯網和云計算時代,嵌入式開發又會有怎樣的發展機遇?
嵌入式開發好和現在的物聯網、智能家居和云計算結合起來,物聯網有傳感器外設,有控制單元,云計算要與端結合,這些過程都需要嵌入式,我們平時工作中要多關注新理念和新機遇。