跳到主要內容

第一章 電腦、網際網路與全球資訊網簡介

C++  How to Program 7/E 筆記
第一章 電腦、網際網路與全球資訊網簡介


學習目標
  • 基本軟硬體觀念
  • 物件技術觀念(類別、物件、屬性、行為、封裝、繼承)
  • 程式語言的種類
  • 典型的C++開發環境
  • 業界標準物件導向素模語言——UML 沿革
  • 網際網路、球球資訊網與Web 2.0現象的沿革
  • 在Linux 的GNU C++ 與在Microsoft Visual C++環境中測試C++ 應用程式


*結構化程式設計(structured programming)
*物件導向程式設計


電腦的架構

實際上分為六個邏輯單元(logical units)或區域(section):
  1. 輸入單元:接收資訊用
  2. 輸出單元:用來「輸出資訊」的區域會接受經電腦處理過的資訊
  3. 記憶單元:存取快速、容量相對低的「倉庫」區域,將資訊暫存在此,直到可輸出。資訊是具「揮發性(volatile)」——電腦關機資料就被刪除。
  4. 算術和邏輯單元:(arthmetic and logic unit, ALU)負責「生產製造」,計算加減乘除。
  5. 中央處理單元:電腦的「執行管理」區域,負責協調監督其他區域的作業。多核心處理器(multi-cor processor) 是將多個處理器放在一個積體電路晶片中。
  6. 輔助儲存單元:電腦長期、高容量的「倉庫」區域。儲存於此的資料為「永續性的(persistant)」,電腦關機仍會儲存,CD,DVD仍屬此類。

個人式、分散式及用戶端/伺服器的計算環境

個人電腦起初都是獨立的個體,人們是使用磁碟片來分享資訊(稱作「私密網路(sneakernet)」。當機器漸漸以電話線或是透過企業組織的區域網路(local area networks, LAN)進行連結,則產生了分散式計算(distributed computing)的概念,此時組織內部的計算就可以分散到網路上分別執行細項。如今資訊可以透過網路共享伺服器提供共用資料儲存空間,提供分散在網路上用戶端電腦使用——用戶/伺服端計算環境(client/server computing)。


Web 3.0:目前網際網路是一個巨大的混合體,由許多不相連的單一網站所組成,Web 3.0將藉由語意網(Semantic Web,有意義的網路)來解決這個問題,讓電腦進行有意義的搜尋。


機器語言

程式語言主要分為三大類:
  1. 機器語言(又稱目的碼(object code))是電腦的母語,通常由一連串數字組成,麻煩難懂易出錯。
  2. 組合語言(assembly languages):因應難懂的機器語言而生,可以用類似英文縮寫字表達基本操作,利用組譯器(assemblers)的轉譯程式(translator program)將組合語言轉換成機器語言。
  3. 高階語言:但因為組合語言作一簡單的工作仍要下達數條命令,因此轉發展出高階語言,可使用近日常英文的用語+一些數學符號來撰寫指令,並使用編譯器(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)是一種以圖形表示的語言,可讓設計物件導向軟體系統的設計者以業界標準符號呈現這些系統。

留言

這個網誌中的熱門文章

【Quora 翻譯&整理】對於程式初學者嘗試解決問題的好網站推薦

原文出處: What are some suggested websites to solve programming problems for beginners? (2016/5/15) 此篇文章強調的是去參加project的那種網站推薦

【 Intro to Java Programming 】Lesson 1 : Introduction-5 (Algorithms)

This Notes is according to the udacity free course : Intro to Java Programming Lesson 1 : Introduction-5(Algorithms) Key Word : pseudocode Algorithms just like a doing things protocol+condition. Without protocol+condition, you can not make choice or do the decision. So if you want to buy car, you know the car speed and you don't consider the car price or the car condition, so it is your thought, it is the algorithm you buy a car. For computer, we give them the program ===>for them to do algorithm, but now we try to write done in Pseudocode. Pseudocode write in "spoken language" which help us to understand the problem so we can translate them into computer language ==>JAVA Code.org maybe it could help you have fun from learning code