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