一、標準C語言開發
ANSI C是美國國家標準協會(ANSI)對C語言發佈的標準。ANSIC能夠被所有的平臺、所有C編譯器支持。C99標準應用最廣泛。
標準C應用場景:標準C開發一般只是以基本語法和庫的形式出現,能夠完成基本的功能和簡單的交互,但是如果要支持高效、複雜且有可視化交互功能,需要藉助操作體系提供的系統編程,或者更高級的應用框架編程。
標準C庫函數查詢:http://ganquan.info/standard-c/
標準C頭文件:
庫:一般見於鏈接的libc.lib
數據結構:數據結構是對C語言基本語法的高度封裝運用,以面向對象的思維去表述現實問題。編程就是數據結構+算法。參考:數據結構與算法分析:C語言描述(原書第2版).pdf
C++語言開發:C++語言是從語法級支持面向對象開發,具有封裝、組繼承、多態等面向對象特性,天然具備數據結構的封裝優勢。參考:C++Primer中文版(第4版).pdf
JAVA語言開發:JAVA語言跟C++類似,是面對對象開發語言,但是比C++要簡單些。其和C++相比,是在底層操作系統的基礎上,還需要依賴於JAVA虛擬機來解釋執行,即由JAVA虛擬機來講JAVA中間代碼轉換爲機器理解的指令。而C和C++在編譯即變成機器理解的指令。參考:Java編程思想(第4版).pdf
編程規範:良好的編程規範是高級軟件開發工程師的基本素質。參考:華爲技術有限公司c語言編程規範.pdf
1. Windows C語言開發
經典開發平臺:windows VC6.0
支持大部分C99標準。
選擇Win32 ConsoleApplication
2. LinuxGNU C語言開發
在兼容標準C語言的基礎上,由GNU的GCC工具鏈增加一部分特性。
LinuxC開發工具:Linux下C語言編程環境的工具.txt
Linux C語言編程特性:LinuxC編程特性.doc
Linux內核GCC特性:Linux 內核中的GCC特性.doc
二、系統編程
顧名思義,系統編程跟操作系統相關,由操作系統嚮應用層提供豐富且高效的接口。其包括多進程多線程編程、進程間同步與互斥、網絡編程、高級文件IO及映射、圖形編程、設備編程(如串口)、系統狀態與控制等等。
系統編程應用場景:一般系統編程用於非UI系統,常見於服務端技術,或者前端的核心框架。UI應用一般使用在有Framework框架基礎上的可視化編程。
庫:部分庫存在於運行時庫CRT.O,如多進程多線程,部分庫存在於系統支持庫裏面,見windows和linux的系統lib目錄。
1. Windows系統編程
經典開發平臺:windowsVC6.0
選擇Win32 Application
Windows系統編程參考:WINDOWS.核心編程第五版.pdf
2. Linux系統編程
參考Unix環境高級編程,使用Posix標準。
開發平臺:跟我一起寫Makefile.pdf、GCC中文手冊.pdf
Linux系統編程參考:linux系統編程.pdf、UNIX環境高級編程.pdf
三、可視化編程(應用框架編程)
可視化編程即所見即所得,如拉一個時間空間和列表控件出來,只需要編寫很少部分函數代碼(一般是callback)即可以完成系統功能。其一般都是基於特定的平臺應用框架來開發的。其有豐富的UI控件接口,是對系統編程接口的再次組合和封裝。
可視化應用場景:一般用於客戶端、前端UI、應用界面編程。
庫:一般可視化編程都有一個集成開發平臺,平臺已經集成了框架支持庫。、
1. Windows可視化編程
應用編程框架:MFC
經典開發平臺:windowsVC6.0
選擇MFC AppWizard
Windows可視化編程參考:深入淺出.MFC.pdf
2. Linux可視化編程
應用編程框架:QT
開發平臺:QtCreator
QT可視化編程參考:Qt編程及應用經典教程.pdf
3. Android可視化編程
Android其實也是基於Linux內核的,是在Linux操作系統的基礎上開發了一個強大的而且是開放的Android應用框架。因此Android和QT是同等概念,都是基於Linux平臺的應用框架。當然,Android的底層Linux區別於常規Linux內核,做了部分改動,如新增Binder驅動和Log日誌驅動。
應用框架:Android應用框架
開發平臺:Eclipse+JDK+ADT+Android
Android應用開發參考:Android應用開發詳解.pdf
四、腳本編程
以上語言均需要通過編譯之後才能執行,而腳本編程屬於解釋性語言,不需編譯即可立即執行。腳本編程是基於系統抽象出可高度重複利用的庫的基礎上開發出來的一套語法和命令。主要用於系統配置、項目管理、自動化測試等方面。Makefile即是最經典的腳本編程範例。
Windows腳本編程:有CMD命令窗口進行管理和解釋執行。參考windows批處理命令詳解及腳本實例.doc
Linux腳本編程:由Shell命令窗口進行管理和解釋執行,熟悉腳本編程是Linux開發人員的一項技能。參考Linux+命令行和shell腳本編程寶典.pdf
五、Web編程
Web編程是應用編程的一種特例,主要針對網頁、網絡編程。網頁由HTML超文本標記語言和腳本組成,所以Web編程語言包括靜態語言(即HTML格式語言)和動態語言(即腳本開發語言)。網頁腳本開發語言包括:ASP、PHP、JAVASCRIPT、JSP等等,其由瀏覽器Browse負責展示、由服務端解釋引擎負責解釋響應。
Web編程一般是腳本開發,是解釋執行的。
Web編程領域同樣有很出名的應用框架,即由框架提供很多可重複利用的可視化控件,封裝了底層的展示和控制邏輯。比較出名的有:微軟提供的.NET框架、基於JAVA平臺有很多出色的開源框架(Struts等)。
Web編程會涉及數據庫編程,不同的框架提供訪問數據庫的能力是評價該框架優劣的重要因素。
Web編程使用HTTP應用層協議,而系統編程的網絡編程(Socket編程)使用的網絡層和傳輸層協議。
由於Web編程離嵌入式Linux課程體系太遠,這裏只做簡單介紹,不提供參考書籍。
六、服務器端編程
Web編程一般稱爲前端編程,而服務器端編程一般稱爲後端編程。Web應用都是由前端交互程序和後端服務程序組成。服務器編程一般涉及到應用控制、業務邏輯、數據處理、數據庫訪問控制等內容。服務器編程一般屬於第二的系統編程的其中一個大類。
服務端編程涉及到多個前端的同時併發訪問,因此併發、高性能編程是服務器編程的關鍵技術。
七、嵌入式編程
以上編程都是基於一定操作系統平臺的編程,屬於帶系統編程。而在嵌入式Linux操作系統平臺上進行應用編程與Ubuntu Linux平臺上的應用編程基本一致。
一般意義上,嵌入式編程主要是指如何移植和開發嵌入式操作系統以及其驅動,並給應用程序提供運行時庫支持。另外,嵌入式編程也包含嵌入式控制器編程,控制器編程資源有限,一般會使用簡單的操作系統或者沒有操作系統。嵌入式編程更多指的是硬件體系編程,即基於特定的硬件處理器SOC進行驅動編程。
1. 資源有限型系統編程
一般指的是CPU主頻較低,100M以下,內存在K字節級別,主要是單片機控制編程。單片機控制同樣可以移植和構建多任務操作系統,如基於UCOS內核的操作系統。其包括封閉系統的應用開發和封閉系統的移植和定製,前者是帶系統開發,後者是裸機開發。
2. 資源豐富型系統編程
一般指的是CPU主頻在512M以上,內存在128M以上,主要是高級處理器編程。這裏處理器一般會部署多任務實時操作系統,如嵌入式Linux或者Android系統(內核也是Linux,其要求內存在512M以上)。當今的手機和平板都是屬於這一類。資源豐富型系統編程包括系統編程(如服務端應用)和應用框架編程(如android APP),另外其還包括下面介紹的內核和驅動開發編程。
3. 嵌入式內核和驅動開發編程
這裏是移植和定製嵌入式Linux操作系統,包括內核移植和驅動開發。
4. 嵌入式交叉工具鏈、調試、自動化測試
應用編程很少去關心工具鏈,但是嵌入式軟件開發一定要深入地去理解交叉工具鏈和調試技巧,這是資深嵌入式開發工程師的重要技能。只有懂得這個,才能高效地定製和開發嵌入式產品。甚至,開發人員需要自己去定製開發一些嵌入式工具。
嵌入式自動化測試也是嵌入式開發的一項重要內容。
總體來說,嵌入式編程包括硬件體系編程、UBOOT啓動、嵌入式Linux系統移植、根文件系統構建、Linux驅動開發等內容;而系統編程、網絡編程、腳本編程都是在嵌入式Linux平臺上的帶系統編程。
微信公衆號:嵌入式企鵝圈
1.忠於Linux源碼,百分百原創。
2.從上電第一行代碼、系統第一行代碼、模塊第一行代碼、應用第一行代碼,深入講解嵌入式軟件生命週期。
3 深刻理解硬件體系, 聚焦軟件層次設計、模塊設計和框架設計。