筆者雖然沒有從事計算機相關工做,但依然沒法捨棄對編程的喜好。經過發佈文章,一方面,把從新學習的內容紀錄下來,最重要的是,可以與你們分享所學與所困。不喜勿噴!程序員
1972年,貝爾實驗室的Dennis Ritch和Ken Thompson在開發UNIX操做系統時,設計了C語言。C語言設計的初衷是將其做爲程序員使用的一種編程工具,其主要目標是成爲有用的語言。編程
C是一門流行的語言,融合了計算機科學理論和實踐的控制特性。許多高校將它做爲學習計算機編程的第一種語言。C語言的設計理念讓用戶可以輕鬆完成自頂向下的規劃、結構化編程和模塊化設計。所以,用C語言編寫的程序更易懂、更可靠。架構
C語言具備一般是彙編語言才具備的微調控制能力,能夠根據具體狀況微調程序以得到最大運行速度或最有效地使用內存。模塊化
所謂可移植性,是指在一種系統中編寫的程序稍做修改(如更改主程序頭文件中的少量項)或不修改就能在其餘系統運行。因爲有許多運行在不一樣系統上的C編譯器,C語言成爲可移植方面的佼佼者。但須要注意的是,程序中針對特殊硬件設備或操做系統特殊功能(如,Windows或Mac OS)編寫的部分,一般是不可移植的。函數
例如,工具
例如,學習
早在20世紀80年代,C語言就已經成爲UNIX系統使用的主流語言。從那之後,C語言的應用範圍擴大到PC(主要體如今操做系統與應用程序方面)和超級計算機。測試
雖然說這些年來C++和Java很是流行,可是C語言仍然是軟件行業中的核心技能。特別是,C語言已成爲嵌入式系統編程的流行語言。愈來愈多的汽車、照相機、音響和其餘現代化設備的微處理器都用C語言進行編程。動畫
題外話:
人工智能的熱潮,讓C/C++、Java、Python成爲最熱門的三個語言。聽說,Python已經被計劃歸入高考內容。
不過,能夠確定的是,學好C語言確定木有壞處。2017年12月TIOBE排行榜,Java、C、C++、Python、C#分別排名前五。2017年,人工智能大熱,C語言有但願成爲年度最佳「候選人」。人工智能
ANSI C
。它定義了C語言和C標準庫。對於C語言標準,有機會再詳細學習、總結。
這個步驟要求對程序有清晰的思路。首先明確,要作什麼,須要哪些信息,要進行哪些計算和控制,要反饋哪些結果。
在這個步驟中,不涉及計算機語言,應該用術語來描述。
這個步驟,要考慮如何用程序實現需求。例如,用戶界面應該怎麼樣?目標用戶是哪些?程序架構應該怎麼樣?計劃多長時間實現這個程序?如何表示數據?用什麼方法處理數據?
這個步驟涉及的內容,有專門的術語和描述工具。可參考軟件工程相關書籍。
這個步驟,纔是真正用到計算機語言的地方,也就是把你設計的程序,翻譯成C語言。
編譯器,是把源代碼轉換成可執行代碼的程序。可執行代碼是用機器語言表示的代碼。C編譯器除了把C代碼翻譯成特定的機器語言,還將源代碼與C庫的代碼合併成最終的程序。(更準確地說,應該是又連接器來連接函數庫。可是大部分系統中,編譯器運行連接器)。最終,生成一個用戶能夠運行的可執行文件。
此外,編譯器還會檢查C語言程序是否有效。若是發現錯誤,就沒法生成可執行文件並報錯。理解特定編譯器報告的錯誤或警告信息,是程序員必需要掌握的技能。
雖然,在Windows命令提示符模式、UNIX終端模式和Linux終端模式下,能夠運行程序。可是,如今更爲使用的,是在IDE(Intergrated Development Environment,集成開發環境)中,編輯、編譯、執行C程序。
測試,分爲黑盒測試和白盒測試。黑盒測試,通常就是直接經過運行程序,看其是否可以實現預期的功能。白盒測試,可以更深層次檢測程序所包含的問題,對技術水平要求較高。
查找並修復程序的過程叫調試
。會遇到各類形態的BUG(八阿哥)。隨着一步步的學習,可能犯錯誤的地方會愈來愈多,不經意間的小問題,就能致使程序的崩潰。
因此,要養成良好的編程習慣,可以提升代碼的可讀性和可維護性。
這一步,一般是被忽視的。程序可以運行,但不意味着就是完美的。隨着時間推移或者運營環境的改變,問題會又更好的解決方案,程序會須要更多的功能。也許,維護、修改代碼的工做量遠遠超出前面的步驟。
本文同步發佈在簡書。若是不足之處,還請指出。
參考書籍: