第1課 - 學習C++的意義
第1課 - 學習C++的意義
1. 對C++的一些誤解 ×××
(1)操作系統和驅動都是用C寫的,學好C就夠了。 (驅動和操作系統開發屬於極少部分的人)
(2)C++在應用層用的多,學嵌入式的沒必要學。 (嵌入式系統應用程序開發也需要C++)
(3)以後就做驅動開發了,沒精力也沒必要學習C++了。 (掌握一門編程語言不可能支撐整個職業生涯)
(4)Linus大神都認為C++一無是處,還學它幹嘛? (技術盲目崇拜)
2. UNIX操作系統的發展歷史
(1)UNIX操作系統誕生之初是直接用匯編語言編寫的。
(2)隨著UNIX的發展,匯編語言的開發效率成為一個瓶頸。如何提高UNIX系統的開發效率?
(3)1971年,Ken Thompson 和 Dennis Richie 對B語言進行了改良,使其能夠直接產生機器碼,C語言誕生。
(4)UNIX開始用C語言重寫,同時C語言在實踐的過程中得到發展。
3. C語言的特點
C語言就是為了編寫UNIX操作系統而發明的,並且在實踐中得到了發展,C語言有以下兩個主要特點。
(1)C語言的目標是高效。
— 最終程序的執行效率很高
(2)C語言是在實踐的過程中逐步完善起來的。
— 沒有深思熟慮的設計過程
— 殘留過多低級語言的特征
4. 軟件方法論的發展
- 面向過程程序設計:數據結構 + 算法
— 主要解決科學計算問題,用戶需求簡單而固定。
— 特點:
-
-
- 分析解決問題所需要的步驟
-
-
-
- 利用函數實現各個步驟
-
-
-
- 依次調用函數解決問題
-
— 問題:
-
-
- 軟件可重用性差
-
-
-
- 軟件可維護性差
-
- 面向對象程序設計:由現實世界建立軟件模型
— 將現實中的事物直接映射到程序中,可直接滿足用戶需求。
— 特點:
-
-
- 直接分析用戶需求中涉及的各個實體
-
-
-
- 在代碼中描述現實世界中的實體
-
-
-
- 在代碼中關聯各個實體協同工作解決問題
-
— 優勢:
-
-
- 構建的軟件能夠適應用戶需求的不斷變化
-
-
-
- 直接利用面向過程方法的優勢而避開其劣勢
-
5. C語言的加強
學習C++並不會影響原有的C語言的知識,相反,學習C++可以讓我們學到更多的軟件設計方法。
(1)當面向過程方法論暴露出越來越多的缺陷時,業界開始考慮在工程項目中引入面向對象的設計方法,而第一個需要解決的問題就是:
高效的面向對象語言,並且能夠兼容已經存在的代碼。
(2)C語言和C++並不是對立的競爭關系
(3)C++是C語言的加強,是一種更好的C語言
(4)C++是以C語言為基礎的,並且完全兼容C語言的特性
6. 學習C++的優勢
C++是Java/C#/D等現代開發語言的基礎,學習C++後能夠快速掌握這些語言。
7. 現代軟件的產品架構及特性
— 現代軟件產品的架構圖
— 現代軟件產品的特性
-
- 系統一般是由多種語言寫成的
-
- 系統架構的目標是擁抱用戶需求的變化
-
- 系統擁有較好的移植性
-
- 系統能夠方便的部署和更新
-
- 操作系統的修改和驅動程序的開發在現代軟件產品中占據的比重越來越小
— 商場收銀系統架構圖
8. 學習C++的意義
(1)C++是一種更為強大的C,通過學習C++能夠掌握更多的軟件設計方法
(2)C++是Java/C#/D等現代開發語言的基礎,學習C++後能夠快速掌握這些語言
(3)C++是各大知名軟件企業挑選人才的標準之一
第1課 - 學習C++的意義