資料介紹
這本書(shū)最初是為北京亞嵌教育研究中心的嵌入式Linux系統(tǒng)工程師就業(yè)班課程量身定做的教材之一。該課程是為期四個(gè)月的全日制職業(yè)培訓(xùn),要求學(xué)員畢業(yè)時(shí)具備非常Solid的C編程能力,能熟練地使用Linux系統(tǒng),同時(shí)對(duì)計(jì)算機(jī)體系結(jié)構(gòu)與指令集、操作系統(tǒng)原理和設(shè)備驅(qū)動(dòng)程序都有較深入的了解。然而學(xué)員入學(xué)時(shí)的水平是非常初級(jí)而且參差不齊的:學(xué)歷有專(zhuān)科、本科也有研究生,專(zhuān)業(yè)有和計(jì)算機(jī)相關(guān)的也有很不相關(guān)的(例如會(huì)計(jì)專(zhuān)業(yè)),以前從事的職業(yè)有和技術(shù)相關(guān)的也有完全不相關(guān)的(例如HR),年齡從二十出頭到三十五六歲的都有。這么多背景完全不同、基礎(chǔ)完全不同、思維習(xí)慣和理解能力完全不同的人來(lái)聽(tīng)同一堂課,大家都迫切希望學(xué)會(huì)嵌入式開(kāi)發(fā)技術(shù),投身IT行業(yè),這就是職業(yè)教育的特點(diǎn),也是我編這本書(shū)時(shí)需要考慮的主要問(wèn)題。學(xué)習(xí)編程絕不是一件簡(jiǎn)單的事,尤其是對(duì)于零基礎(chǔ)的初學(xué)者來(lái)說(shuō)。大學(xué)的計(jì)算機(jī)專(zhuān)業(yè)有四年時(shí)間從零基礎(chǔ)開(kāi)始培養(yǎng)一個(gè)人,微積分、線代、隨機(jī)、離散、組合、自動(dòng)機(jī)、編譯原理、操作系統(tǒng)、計(jì)算機(jī)組成原理等等一堆基礎(chǔ)課,再加上C/C++、Java、數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)、軟件工程、計(jì)算機(jī)圖形學(xué)等等一堆專(zhuān)業(yè)課,最后培養(yǎng)出一個(gè)能找到工作的學(xué)生。很遺憾這最后一條很多學(xué)校沒(méi)有做好,來(lái)亞嵌培訓(xùn)的很多學(xué)生就是四年這么學(xué)過(guò)來(lái)的,但據(jù)我們考查他們的基礎(chǔ)幾乎為零,我不知道為什么。與之形成鮮明對(duì)比的是,只給我們四個(gè)月的時(shí)間,同樣要求從零基礎(chǔ)開(kāi)始,最后培養(yǎng)出一個(gè)能找到工作的學(xué)生,而且還要保證他找到工作,這就是職業(yè)教育的特點(diǎn)。為什么我說(shuō)“只給我們四個(gè)月的時(shí)間”?我們倒是想教四年呢,但學(xué)時(shí)的長(zhǎng)短我們做不了主,是由市場(chǎng)規(guī)律決定的。四年的任務(wù)要求四個(gè)月做好,要怎么完成這樣一個(gè)幾乎不可能的任務(wù)?有些職業(yè)教育給出的答案是“實(shí)用主義”,打出了“有用就學(xué),沒(méi)有用就不學(xué)”的口號(hào),大肆貶低說(shuō)大學(xué)里教的基礎(chǔ)課都是過(guò)時(shí)的、無(wú)用的,只有他們教的技術(shù)才是實(shí)用的,這種炒作很不好,我認(rèn)為大學(xué)里教的每一門(mén)課都是非常有用的,基礎(chǔ)知識(shí)在任何時(shí)候都不會(huì)過(guò)時(shí),倒是那些時(shí)髦的“實(shí)用技術(shù)”有可能很快就過(guò)時(shí)了。四年的任務(wù)怎么才能用四個(gè)月做好?我們給出的答案是“優(yōu)化”?,F(xiàn)在大學(xué)里安排的課程體系最大的缺點(diǎn)就是根本不考慮優(yōu)化。每個(gè)過(guò)來(lái)人都會(huì)有這樣的感覺(jué):大一大二學(xué)了好多數(shù)學(xué)課,卻不知道都是干什么用的,為什么要學(xué)。連它有什么用都不知道怎么能有興趣學(xué)好呢?然后到大三大四學(xué)專(zhuān)業(yè)課時(shí),用到以前的知識(shí)了,才發(fā)現(xiàn)以前學(xué)的數(shù)學(xué)是多么有用,然而早就忘得一干二凈了,考完試都還給老師了,回頭重新學(xué)吧,這時(shí)候才發(fā)現(xiàn)很多東西以前根本沒(méi)學(xué)明白,現(xiàn)在才真的學(xué)明白了,那么前兩年的時(shí)間豈不是都浪費(fèi)了?大學(xué)里的課程體系還有一個(gè)缺點(diǎn)就是不靈活,每門(mén)課必須占一個(gè)學(xué)期,必須由一個(gè)老師教,不同課程的老師之間沒(méi)有任何溝通和銜接,其實(shí)這些課程之間是相互依賴的,把它們強(qiáng)行拆開(kāi)是不符合人的認(rèn)知規(guī)律的。比如我剛上大學(xué)的時(shí)候,大一上半學(xué)期就被逼著學(xué)C語(yǔ)言,其實(shí)C語(yǔ)言是一門(mén)很難的編程語(yǔ)言,不懂編譯原理、操作系統(tǒng)和計(jì)算機(jī)體系結(jié)構(gòu)根本不可能學(xué)明白,那半個(gè)學(xué)期自然就浪費(fèi)掉了。當(dāng)時(shí)幾乎所有學(xué)校的計(jì)算機(jī)相關(guān)專(zhuān)業(yè)都是這樣,大一上來(lái)就學(xué)C語(yǔ)言,有的學(xué)校更瘋狂,上來(lái)就學(xué)C++,導(dǎo)致大多數(shù)學(xué)生都以為自己會(huì)C語(yǔ)言,但其實(shí)都是半吊子水平,到真正寫(xiě)代碼的時(shí)候經(jīng)常為一個(gè)Bug搞得焦頭爛額,卻沒(méi)有機(jī)會(huì)再系統(tǒng)地學(xué)一遍C語(yǔ)言,因?yàn)樵趯W(xué)??磥?lái),C語(yǔ)言課早在大一就給你“上完了”,就像一頓飯已經(jīng)吃完了,不管你吃飽沒(méi)吃飽,不會(huì)再讓你重吃一遍了。顯而易見(jiàn),如果要認(rèn)真地對(duì)這些課程做優(yōu)化,的確是有很多水份可以擠的
用Windows還真的是學(xué)不好C語(yǔ)言。C語(yǔ)言是一種面向底層的編程語(yǔ)言,要寫(xiě)好C程序,必須對(duì)操作系統(tǒng)的工作原理非常清楚,因?yàn)椴僮飨到y(tǒng)也是用C寫(xiě)的,我們用C寫(xiě)應(yīng)用程序直接使用操作系統(tǒng)提供的接口。既然你選擇了看這本書(shū),你一定了解:Linux是一種開(kāi)源的操作系統(tǒng),你有任何疑問(wèn)都可以從源代碼和文檔中找到答案,即使你看不懂源代碼,也找不到文檔,也很容易找個(gè)高手教你,各種郵件列表、新聞組和論壇上從來(lái)都不缺樂(lè)于助人的高手;而Windows是一種封閉的操作系統(tǒng),除了微軟的員工別人都看不到它的源代碼,只能通過(guò)文檔去猜測(cè)它的工作原理,更糟糕的是,微軟向來(lái)喜歡藏著揶著,好用的功能留著自己用,而不會(huì)寫(xiě)到文檔里公開(kāi)。本書(shū)的第一部分在Linux或Windows平臺(tái)上學(xué)習(xí)都可以,但第二部分和第三部分介紹了很多Linux操作系統(tǒng)的原理以幫助讀者更深入地理解C語(yǔ)言,只能在Linux平臺(tái)上學(xué)習(xí)。 Windows平臺(tái)上的開(kāi)發(fā)工具往往和各種集成開(kāi)發(fā)環(huán)境(IDE,Integrated Development Environment)綁在一起,例如Visual Studio、Eclipse等。使用IDE確實(shí)很便捷,但I(xiàn)DE對(duì)于初學(xué)者絕對(duì)不是好東西。微軟喜歡宣揚(yáng)傻瓜式編程的理念,告訴你用鼠標(biāo)拖幾個(gè)控件,然后點(diǎn)一個(gè)按鈕就可以編譯出程序來(lái),但是真正有用的程序有哪個(gè)是這么拖出來(lái)的?很多從Windows平臺(tái)入門(mén)學(xué)編程的人,編了好幾年程序,還是只知道編完程序點(diǎn)一個(gè)按鈕就可以跑了,把幾個(gè)源文件拖到一個(gè)項(xiàng)目里就可以編譯到一起了,如果有更復(fù)雜的需求他們就傻眼了,因?yàn)樗麄兡X子里只有按鈕、菜單的概念,根本沒(méi)有編譯器、鏈接器、Makefile的概念,甚至連命令行都沒(méi)用過(guò),然而這些都是初學(xué)編程就應(yīng)該建立起來(lái)的基本概念。另一方面,編譯器、鏈接器和C語(yǔ)言的語(yǔ)法有密切的關(guān)系,不了解編譯器、鏈接器的工作原理,也不可能真正掌握C的語(yǔ)法。所以,IDE并沒(méi)有幫助你學(xué)習(xí),而是阻礙了你學(xué)習(xí),本來(lái)要學(xué)好C編程只要把語(yǔ)法和編譯命令學(xué)會(huì)就行了,現(xiàn)在有了IDE,除了學(xué)會(huì)語(yǔ)法和編譯命令,你還得弄清楚編譯命令和IDE是怎么集成的,這才算學(xué)明白了,本來(lái)就很復(fù)雜的學(xué)習(xí)任務(wù)被IDE搞得更加復(fù)雜了。Linux用戶的使用習(xí)慣從來(lái)都是以敲命令為主,以鼠標(biāo)操作為輔,從學(xué)編程的第一天起就要敲命令編譯程序,等到你把這些基本概念都搞清楚了,你覺(jué)得哪個(gè)IDE好用你再去用,不過(guò)到那時(shí)候你可能會(huì)更喜歡vi或emacs而不是IDE了。
?
程序(Program)是一個(gè)精確說(shuō)明如何進(jìn)行計(jì)算的指令序列。這里的計(jì)算可以是一些數(shù)學(xué)上的計(jì)算,比如解方程或者求多項(xiàng)式的根,也可以是符號(hào)運(yùn)算,一個(gè)簡(jiǎn)單的例子是查找和替換文檔中的詞,一個(gè)復(fù)雜的例子是搜索引擎。從根本上說(shuō),計(jì)算機(jī)是由數(shù)字電路組成的運(yùn)算機(jī)器,只能對(duì)數(shù)字做運(yùn)算,程序之所以能做符號(hào)運(yùn)算是因?yàn)榉?hào)在計(jì)算機(jī)內(nèi)部也是用數(shù)字來(lái)表示的。此外,程序還可以處理聲音和圖像,同樣因?yàn)槁曇艉蛨D像在計(jì)算機(jī)內(nèi)部是用數(shù)字來(lái)表示的,這些數(shù)字再通過(guò)專(zhuān)門(mén)的硬件設(shè)備轉(zhuǎn)換成人可以聽(tīng)到、看到的聲音和圖像。程序由一系列指令(Instruction)組成,指令是指示計(jì)算機(jī)做某種運(yùn)算的命令,通常包括以下幾類(lèi):輸入(Input)從鍵盤(pán)、文件或者其它設(shè)備獲取數(shù)據(jù)。輸出(Output)把數(shù)據(jù)顯示到屏幕,或者存入一個(gè)文件,或者發(fā)送到其它設(shè)備?;具\(yùn)算執(zhí)行最基本的數(shù)學(xué)運(yùn)算(加減乘除)和數(shù)據(jù)存取,其實(shí)輸入和輸出也屬于數(shù)據(jù)存取。測(cè)試和分支(Branch)測(cè)試某個(gè)條件,然后根據(jù)不同的測(cè)試結(jié)果執(zhí)行不同的后續(xù)指令。循環(huán)(Loop)重復(fù)執(zhí)行一系列操作。對(duì)于程序來(lái)說(shuō),有上面這幾類(lèi)指令就足夠了。你曾用過(guò)的任何一個(gè)程序,不管它有多么復(fù)雜,都是由上面這幾類(lèi)指令組成的。程序是那么的復(fù)雜,而編寫(xiě)程序可以用的指令卻只有這么簡(jiǎn)單的幾種,這中間巨大的落差就要由程序員去填了,所以編寫(xiě)程序理應(yīng)是一件相當(dāng)復(fù)雜的工作。編寫(xiě)程序可以說(shuō)就是這樣一個(gè)過(guò)程:把復(fù)雜的任務(wù)分解成子任務(wù),把子任務(wù)再分解成更簡(jiǎn)單的任務(wù),層層分解,直到最后簡(jiǎn)單得可以用以上指令來(lái)完成。
- 光纖處理一站式解決方案:剝除-切割-熔接-涂覆(全品類(lèi)光纖) 0次下載
- 一站式晶圓三維檢測(cè)機(jī)WM系列
- 嵌入式網(wǎng)絡(luò)編程+嵌入式Linux系統(tǒng)
- 鳥(niǎo)哥的Linux私房菜基礎(chǔ)學(xué)習(xí)篇電子版下載 0次下載
- C語(yǔ)言編程及GPIO應(yīng)用的學(xué)習(xí)課件免費(fèi)下載 2次下載
- Linux Shell腳本編程基礎(chǔ)和相關(guān)資料合集免費(fèi)下載 26次下載
- Linux C編程一站式學(xué)習(xí)教程PDF電子書(shū)免費(fèi)下載 8次下載
- Linux教程之Linux C函數(shù)參考教程免費(fèi)下載 4次下載
- Linux和C語(yǔ)言教程之Linux C編程一站式學(xué)習(xí)教材免費(fèi)下載 20次下載
- 嵌入式開(kāi)發(fā)Linux網(wǎng)絡(luò)編程培訓(xùn)資料的詳細(xì)資料免費(fèi)下載 34次下載
- Linux C編程一站式學(xué)習(xí) 3次下載
- 2012MCUDAY講義:MSP430一站式解決方案 0次下載
- ST可穿戴一站式解決方案 0次下載
- Linux_C編程一站式學(xué)習(xí) 9次下載
- Linux C 一站式學(xué)習(xí) 9次下載
- Linux應(yīng)用編程的基本概念 265次閱讀
- 高速風(fēng)筒一站式解決方案 3687次閱讀
- 基于精準(zhǔn)聚焦目標(biāo)空間區(qū)域的轉(zhuǎn)錄組和蛋白質(zhì)組一站式解決方案 1017次閱讀
- 移動(dòng)云發(fā)布操作系統(tǒng)遷移工具,助力全場(chǎng)景業(yè)務(wù)一站式遷移 919次閱讀
- 深入探索Linux中的C語(yǔ)言 2015次閱讀
- 亞太天能科技OEM定制指紋鎖簡(jiǎn)介 1617次閱讀
- s7-200smart自由口通信例程 1.8w次閱讀
- 嵌入式Linux下的C編程知識(shí)要點(diǎn)匯總 3146次閱讀
- 嵌入式Linux工程師需要了解的八大開(kāi)發(fā)知識(shí)點(diǎn) 4798次閱讀
- 如何在Step7中實(shí)現(xiàn)PID控制? 7905次閱讀
- 學(xué)習(xí)嵌入式linux系統(tǒng)開(kāi)發(fā),文件類(lèi)型一定要分清 895次閱讀
- 關(guān)于Linux下多線程編程技術(shù)學(xué)習(xí)總結(jié) 2217次閱讀
- 嵌入式學(xué)習(xí)的學(xué)習(xí)規(guī)劃介紹 5731次閱讀
- 嵌入式Linux的學(xué)習(xí)方法解析 3234次閱讀
- 嵌入式Linux開(kāi)發(fā)之C語(yǔ)言學(xué)習(xí)秘訣 9990次閱讀
下載排行
本周
- 1TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 2開(kāi)關(guān)電源基礎(chǔ)知識(shí)
- 5.73 MB | 6次下載 | 免費(fèi)
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計(jì)
- 0.60 MB | 3次下載 | 免費(fèi)
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 0.61 MB | 2次下載 | 免費(fèi)
- 6基于FPGA的C8051F單片機(jī)開(kāi)發(fā)板設(shè)計(jì)
- 0.70 MB | 2次下載 | 免費(fèi)
- 751單片機(jī)窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費(fèi)
- 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21548次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6653次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191185次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183278次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多