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