C++ How to Program 7/E 筆記
第一章 電腦、網際網路與全球資訊網簡介
學習目標
|
|
*結構化程式設計(structured programming)
*物件導向程式設計
電腦的架構
實際上分為六個邏輯單元(logical units)或區域(section):
- 輸入單元:接收資訊用
- 輸出單元:用來「輸出資訊」的區域會接受經電腦處理過的資訊
- 記憶單元:存取快速、容量相對低的「倉庫」區域,將資訊暫存在此,直到可輸出。資訊是具「揮發性(volatile)」——電腦關機資料就被刪除。
- 算術和邏輯單元:(arthmetic and logic unit, ALU)負責「生產製造」,計算加減乘除。
- 中央處理單元:電腦的「執行管理」區域,負責協調監督其他區域的作業。多核心處理器(multi-cor processor) 是將多個處理器放在一個積體電路晶片中。
- 輔助儲存單元:電腦長期、高容量的「倉庫」區域。儲存於此的資料為「永續性的(persistant)」,電腦關機仍會儲存,CD,DVD仍屬此類。
個人式、分散式及用戶端/伺服器的計算環境
個人電腦起初都是獨立的個體,人們是使用磁碟片來分享資訊(稱作「私密網路(sneakernet)」。當機器漸漸以電話線或是透過企業組織的區域網路(local area networks, LAN)進行連結,則產生了分散式計算(distributed computing)的概念,此時組織內部的計算就可以分散到網路上分別執行細項。如今資訊可以透過網路共享伺服器提供共用資料儲存空間,提供分散在網路上用戶端電腦使用——用戶/伺服端計算環境(client/server computing)。
Web 3.0:目前網際網路是一個巨大的混合體,由許多不相連的單一網站所組成,Web 3.0將藉由語意網(Semantic Web,有意義的網路)來解決這個問題,讓電腦進行有意義的搜尋。
機器語言
程式語言主要分為三大類:
- 機器語言(又稱目的碼(object code))是電腦的母語,通常由一連串數字組成,麻煩難懂易出錯。
- 組合語言(assembly languages):因應難懂的機器語言而生,可以用類似英文縮寫字表達基本操作,利用組譯器(assemblers)的轉譯程式(translator program)將組合語言轉換成機器語言。
- 高階語言:但因為組合語言作一簡單的工作仍要下達數條命令,因此轉發展出高階語言,可使用近日常英文的用語+一些數學符號來撰寫指令,並使用編譯器(compilers)來進行語言轉換和任務執行。
*高階語言包含:C, C++, Microsoft .NET語言, Java等。
C 與 C++
C是標準化、與硬體無關且被廣泛使用的程式語言,所以用C寫的應用程式只需稍加修改,甚至不需修改,就可在許多不同的電腦系統上執行。
C++是C的延伸版本,提供「物件導向程式設計(object-oriented programming)」的能力
**OOP : 物件是模擬真實世界項目的可重複使用軟體元件。軟體開法者發現,模組化、物件導向的設計與實作方式,可以使程式設計技術更具生產力,也使程式更容易理解與修正。
C++ 語言是由類別(class)和函式(function)組成。
關鍵的軟體工程趨勢——物件技術:
物件技術是一種保裝的方法,讓任何名詞都可以表示成一個物件,過往的程式設計語言,都將注意力集中在「動作」fortran, cobol, pascal, basic, C,因此在開發程式元件時,常無法有效對應到真實事務,而在每個計畫都需要撰寫新的語法;但是物件導向是程式語言的流行(C++, Java, C#)讓程式設計更自然且更具生產力。物件技術中軟體元件(稱為類別,class)設計正確,則可以在所有計劃中重複使用該元素。
軟體技術
介紹軟體發展社群的專門術語
敏捷軟體開發(Agile Software Development):軟體已較少資源更快完成實作的一組軟體開發。參考網站:www.agilealliance.org
重構(Refactoring):在不改變軟體的情形下,重構程式碼,以提高清晰性。有很多重構工具軟體,可以自動進行改寫。
設計模式(Design patterns):經過驗證的架構,可用來建構具彈性且容易維護的物件導向軟體。
遊戲編程(Game Programming)
開放原始碼軟體(Open source software):在開放原始碼中,這人與公司都可以為某一個軟體做出貢獻,不管是維修、開發、改善。
- Linux:是開放原始碼作業系統的成功典範之一。
- MySQL:開放原始碼的資料庫管理系統。
- PHP最受歡迎的色福氣端網際網路「腳本」語言(scripting language)
- LAMP:Linux, Apache, MySQL, PHP(or Perl or Python)這幾個著名的開源技術縮寫,許多開法者用它們來建立網路應用程式。
Ruby on Rails:結合Ruby 腳本與Rails 網路應用框架的一個網路應用程式開發環境。
軟體即服務(Software as Service, SaaS):軟體可以在網路上其他地方的伺服器執行,而當伺服器更新時,世界各地的用戶皆可見到新功能,而無需在本地的電腦上執行安裝。
C++的未來:開放原始碼Boost函式庫、TR1、C++0x
Boost C++函式庫是由C++社群成員所建立的免費開源函式庫。
正規表示式(Regular expression)用來比對文字中的特殊字元樣式。
Technical Report 1列出對C++標準函式庫的變更建議,在函式庫中加入實用功能。目前正在進行C++新標準的建立,稱為 C++ 0x。
Unified Modeling Language (UML)是一種以圖形表示的語言,可讓設計物件導向軟體系統的設計者以業界標準符號呈現這些系統。
留言
張貼留言