想了解嵌入式和java學習嗎?想了解到底是學Java還是嵌入式?,我花了半個月,整理出了這篇嵌入式開發(fā)學習指南(學習路線+知識點梳理)?? 嗎?......本文帶你一探究竟。
1.到底是學Java還是嵌入式?
可能是我回答了很多嵌入式問題的原因,經(jīng)常有讀者給我留言主要就是關于職業(yè)選擇和技術發(fā)展的問題,其中有一個問的很多,就是 “我到底是學Java還是嵌入式?”開始我都是不厭其煩得從未來發(fā)展和學習難度幫忙分析,讓大家對這這個有個自主的認識,但是慢慢的我發(fā)現(xiàn)其實很多人是沒有找到問題的重點。我還是那個原則,興趣是*位的,不然后邊幾十年你會后悔的。糾結這個問題的無非有幾個考慮。1.Java學著簡單,嵌入式好像摸不著頭腦,很多學了很久還是不知道怎么回事?這兩個我都學過,我覺得這主要是因為Java的應用很集中,基本就是web和安卓(占比很?。?,所以就是web開發(fā),再加上這些年培訓班的大肆招生,學習路徑基本很清晰,所以對于后來者學習來說自然是很簡單的嵌入式則不然,嵌入式的應用非常廣,單片機軟硬件設計(無數(shù)的單片機類型,各種應用場景),紛繁的嵌入式操作系統(tǒng)學習,F(xiàn)PGA軟硬件設計,Linux軟硬件設計,這些軟件又分應用開發(fā)和驅動開發(fā)(很多還結合緊密),更進一步甚至還有內核開發(fā)如果把這些混在一起和Java對比是不是有點不公平,Java甚至只是Linux軟件開發(fā)中學習的一部分,當然這確實就是嵌入式的缺點,太分布了,讓初學者迷茫。不過好處也是有的,從上到下,從底層到驅動,到操作系統(tǒng),到應用都可以不斷的擴展,這本身就是有意思的。2.Java賺的多,嵌入式賺的少?這還得借用上邊的回答,這個問題可能存在目標不一致的問題,先總的說一下,工作賺的多少我一直認為和語言無關,而是和行業(yè)有關,Java之所以看起來賺的多,主要還是因為Java基本都是用于web開發(fā),得益于互聯(lián)網(wǎng)發(fā)展,自然水漲船高。當然這也是部分,效益好的還是大公司,很多小公司其實不算高。這時候一般做對比的就是嵌入式的單片機開發(fā),但是不能專挑軟柿子捏,把一眾高薪的嵌入式算法開發(fā),大廠硬件開發(fā),芯片開發(fā),協(xié)議開發(fā),模擬電子開發(fā)排除在外是吧,可能會說我沒這水平啊?那就是你的問題了,Java學不精去不了好公司也不會賺的多的,忘了還有996等你??偨Y下,Java因為行業(yè)原因,紅利大崗位多,所以自然很多高薪者,這無可厚非,但是其實愿意不斷提高,且興趣使然嵌入式也是很多高薪職位的(上來就說自己不行的,建議去做Java)
2.我花了半個月,整理出了這篇嵌入式開發(fā)學習指南(學習路線+知識點梳理)
不好意思久等了這篇文章讓小伙伴們久等了。一年多以來,關于嵌入式開發(fā)學習路線、規(guī)劃、看什么書等問題,被問得沒有一百,也有大幾十次了。但是無奈自己對這方面了解有限,所以每次都沒法交代,搞得實在不好意思。但是辦法總歸是有的,正如前篇文章《最近厚著臉皮聯(lián)系了不少老同學》所聊,雖然我自己不從事這些方向,但尋思了一下,我的同學和朋友中,多少還是有一些從事相關方向并且在一線(或曾在一線)工作過的,所以我就請他們幫忙一起梳理這幾個我不熟悉領域的學習路線,這次嵌入式開發(fā)就是其中之一。這篇文章之所以拖這么久,因為溝通實在太費時間了,畢竟大佬們都挺忙,況且梳理總結這件事情本身就比較繁瑣,所以等到現(xiàn)在才發(fā)出來。本文在開源項目: 中已收錄,里面包含不同方向的自學編程路線、面試題集合/面經(jīng)、及系列技術文章等,資源持續(xù)更新中...嵌入式開發(fā)難嗎?經(jīng)過這次和同學的交流,我自己也學到了很多。因為嵌入式方面的很多東西我也不懂,我也算學習了。站在我個人角度來看,結合以前的學習體驗。我覺得嵌入式開發(fā)比互聯(lián)網(wǎng)軟開(比如Java后端)還是要難一些的,比如我們搞Java開發(fā)的,再怎么說,基本也都是用戶態(tài)的東西,但嵌入式很多東西都深入到了內核態(tài),所以難度肯定是有的,表現(xiàn)在幾個方面吧:首先,嵌入式它偏底層,軟、硬件都要懂,對能力要求本來就要高不少;其次,嵌入式開發(fā)的學習門檻也要高一些,而且像Linux平臺下的開發(fā)流程,很多人都不習慣,摸不清;再者,嵌入式學習的正向反饋可能比較慢,尤其是前期學習階段,導致沒有什么成就感,也就堅持不下去了,所以往往就棄坑了。但是話說回來,做IT的就是這樣,越往底層對人能力的鍛煉就越高,所以對于能力來說是在升維,所以反過來,如果嵌入式做得好的,我覺得來做互聯(lián)網(wǎng)問題也不大,到時候就屬于降維打擊了。總體學習思路總體來說,還是可以把嵌入式學習分為三個大的階段:首先基礎學習階段,這就包括通用編程基礎(C語言、數(shù)據(jù)結構/算法、操作系統(tǒng)、計網(wǎng)、計組、Linux系統(tǒng)基礎)和基本的硬件基礎,扎實地掌握這兩大基礎,是后續(xù)持續(xù)發(fā)展和不斷進步的動力源泉。其次就是嵌入式應用編程階段,或者說系統(tǒng)平臺編程階段。因為一般會以特定的嵌入式平臺和特定的嵌入式操作系統(tǒng)為依托,熟悉這個系統(tǒng)平臺上的編程方法和流程。以常見的ARM+Linux平臺為例,需要掌握從內存管理到多任務編程、文件I/O、網(wǎng)絡編程,甚至圖形化界面編程等幾個大的方面。*就是深入嵌入式底層開發(fā)階段,最常見的就是內核開發(fā)和驅動開發(fā),這些統(tǒng)屬于內核態(tài)開發(fā)范疇,所以需要對操作系統(tǒng)內部機制有所涉獵和理解,在此基礎上需要掌握從系統(tǒng)移植到內核開發(fā)、驅動開發(fā)的各個細節(jié),這是成神之路。大體思路是這樣,接下來看一下詳細的學習路線和知識點梳理。學習路線+知識梳理花了很長時間,就為了整理這張詳細的知識路線腦圖。當然由于時間有限、能力也都有限,畢竟嵌入式全體系實在太龐大了,包括我那做嵌入式的同學,也不可能什么都懂,有些東西可能沒覆蓋到,不足之處,還希望小伙伴們一起交流補充,一起完善進步。書籍推薦*,按照整體的學習路線,再推薦一些對應的經(jīng)典書籍:后記:本文在開源項目: 中已收錄,里面包含不同方向的自學編程路線、面試題集合/面經(jīng)、及系列技術文章等,資源持續(xù)更新中...這次就分享到這里吧,下篇見。每天進步一點點慢一點才能更快
上述文章了解到關于到底是學Java還是嵌入式?,我花了半個月,整理出了這篇嵌入式開發(fā)學習指南(學習路線+知識點梳理)?? ,讓我們對嵌入式和java學習 有一個直觀的認知。我們發(fā)現(xiàn),作為一個優(yōu)秀的Java程序員是多么的自豪。