重點整理

此處提供書中各章節的重點整理訊息,以供參考

Ch1.電腦簡介


• 電腦可以處理資料、產生資訊與傳遞資訊,是一台將資料變成資訊的設備
• 電腦由硬體與軟體所組成
• 計算機經歷機械、電機與電子三階段的發展
• 計算機分類比式與數位式兩種
• 電腦是一台多功能電子數位式計算機,內部只處理數字0與1
• 載入不同的儲存程式,電腦可以自動執行不同的工作
• 第一代電腦以真空管為主要電子元件
• 第二代電腦以電晶體為主要電子元件
• 第三代電腦以積體電路為主要電子元件
• 第四代電腦以超大型積體電路為主要電子元件
• 個人電腦於第四代電腦發展階段出現
• 電腦運作架構源自數學家范紐曼的構想
• 電腦軟體以程式的方式呈現,程式內部包含一系列電腦可以執行的指令
• 電腦軟體主要有兩大類:系統軟體與應用軟體
• 電腦最重要的系統軟體是作業系統
• 作業系統的操作方式有兩種:文字介面與圖形介面
• 輕薄短小的電腦裝置如筆電、平板電腦與智慧型手機陸續誕生
• 費林將計算架構區分SISD、SIMD、MISD與MIMD四種形式
• 除了傳統的電子式電腦,未來正朝使用量子、光、化學與生物的技術設計新型的電腦
• 全球資訊網(WWW)帶動資訊的爆發

Ch2.數字系統


• 位元是電腦儲存或傳遞資料的最小單位,在這個小單位裡,可以儲存0或1兩種狀態
• 在早期的電腦中,是以八個位元為一個存取單位,稱之為一個位元組(byte, 1 byte= 8 bits),是記憶體儲存單位中最常被使用的表示單位。
• 一個字組(word)可以是由2、4或8個位元組所組成。
• n個位元可以組合出2n種變化。
• 在電腦世界裡使用的數字系統是二進位制。
• 二進位制與十進位制的轉換可以利用乘法與除法完成。
• 並不是所有的十進位小數都可以用有限的位元完整的表達。
• 在十六進位制中,一般是用數字0到9與英文字母A~F表示(A~F代表10~15)。
• 不考慮正負數的整數,稱之為無正負符號的整數。
• 目前電腦儲存整數的標準方式是採用二的補數表示法。
• 在二的補數表示法中,0只有一種表示方式,且在加法或減法處理中,不需因為數字的正負而使用不同的計算方式。
• 最廣泛使用的浮點數運算標準:IEEE二進位浮點數算數標準IEEE 754。
• IEEE754標準將儲存的空間分成三個部分:符號位元、指數部分及尾數部分。
• IEEE 754規定了四種表示浮點數值的方式:單倍精確度、雙倍精確度、延伸單倍精確度(很少使用)與延伸雙倍精確度。
• 單倍精確度指數部分是以過剩127(Excess 127)的方式表現。

Ch1.資料的表示與處理


• 資料數位化後,電腦才能儲存與處理。
• 英文文字的編碼方式採用ASCII碼,繁體中文的編碼採用Big5。
• 萬國碼Unicode旨在涵蓋各國語言的文字,常見的實現方式是採用動態寬度的UTF-8編碼。
• 壓縮技術區分失真壓縮與不失真壓縮。
• 失真壓縮會丟棄部分資料,遭成資料的失真現象,對聲音與影像資料而言,部分的失真仍然可以接受。
• 不失真壓縮可以還原原始的資料,但壓縮率較失真壓縮低。
• 利用關鍵字編碼可以提供不失真的文件壓縮。
• 文件的儲存格式有三種:純文字、二進位與純文字格式化格式。
• 聲音資料透過取樣的方式,由類比形式轉成數位形式。
• 聲音取樣的振幅大小經過量化方式轉成數值大小。
• 取樣次數越高、量化等級越多,聲音失真現象越低。
• 霍夫曼編碼提供高效率的不失真壓縮,可處理文字與數字。
• 影像的儲存透過記錄每個像素的顏色資訊,全彩影像利用24位元記錄RGB的內含值。
• 影像的壓縮檔案以JPEG格式最常見。
• 區段長度編碼可以處理文字與數字,是一種簡單的不失真壓縮。
• 影片是由連續的畫面所組成,每張畫面均是靜止的影像。
• 串流格式的影片可方便網路上邊傳送邊播放。
• 影像的壓縮同時利用空間與時間的壓縮,MPEG是常見的影像壓縮技術。

Ch4.計算機組織與數位邏輯設計


• 現今電腦的通用架構是基於范紐曼模式(von Neumann Model)架構。
• 電腦架構大致可分為四個主要單元:中央處理單元、記憶單元、輸入單元以及輸出單元。
• 中央處理單元主要包含了算術邏輯單元、控制單元以及暫存器。
• 控制單元負責控制電腦執行程式的流程,並協調輸入、輸出、記憶以及算術邏輯等部門的運作。
• 在中央處理器中暫時存放指令或資料的地方稱之為暫存器。
• 記憶單元是用來存放資料與指令的單位。
• 在記憶體階層圖中,隨著階層往上走,記憶體的速度越快、單位價錢也越高,而越下層的記憶體則容量越大。
• 輔助記憶體都是屬於非揮發性的記憶體。
• 主記憶體的功能是儲存正在執行的程式與資料。
• 輔助記憶體是用來儲存在電源消失後仍需保留的資料。
• 輸入裝置泛指透過使用者的操作將資料輸入至電腦內部的設備。
• 輸出裝置是將電腦的處理結果與訊息呈現給使用者的設備。
• 中央處理器執行一個指令的過程稱為機器週期。
• 一個機器週期可分為讀取、解碼、執行與結果回存四個步驟。
• 指令讀取與指令解碼的總花費時間稱為指令時間。
• 指令執行與結果回存的總花費時間稱為執行時間。
• 數位邏輯設計的數學理論基礎是布林代數。
• 0(偽)與1(真)是布林代數裡的常數。
• 真值表是將運算式所有可能的輸入組合與對應結果皆列出來的表格。
• AND、OR與NOT是三種最基本的邏輯運算子。

Ch5.作業系統


• 作業系統是一種人機介面
• 作業系統是一個資源管理者
• 行程(process)是一個執行中的程式,也稱為工作元
• 允許多個行程同時待在記憶體裡等待分配執行的系統,就稱為多工系統(multitasking)
• 排班器(scheduler)的工作是自就緒佇列中選擇一個行程出來執行
• 具有優先權的可奪式排班法,通常會造成飢餓(starvation)的問題
• 所謂的饑餓狀態,就是等待一個不會發生的事件狀態
• 多工的等級(degree),就是允許同時執行工作的數量
• 回收釋放的記憶體,通常就叫做垃圾收集(garbage collection)
• 所謂外部碎片(external fragmentation)是指無法分配給任何行程的自由區塊
• 所謂內部碎片(internal fragmentation)是指已分配,但卻不能被使用的空間
• 在記憶體的分頁配置裡,記憶體被切成的區塊稱為頁框(page frame),行程被切成的區塊則稱為分頁(page)
• 將磁碟當作記憶體使用的技術稱為虛擬記憶體
• 磁碟含多個磁盤,每個磁盤劃分為多個同心圓,稱為磁軌,不同磁盤相同編號的磁軌形成磁柱,每個磁軌又劃分成多個磁區
• 磁區為磁碟存取的最小單位。磁簇為檔案系統存取磁碟的最小單位
• 讀寫臂伸縮移動到玉讀取磁區的磁軌(或磁柱)的時間成為搜尋時間(seek time)
• 磁碟透過旋轉將欲存取的磁區旋轉到讀寫頭下,這個時間稱為旋轉延遲(rotational latency)
• 當磁區在讀寫頭下方,進行讀寫資料,此時間稱為傳輸時間(transfer time)

Ch6.網際網路


• 電腦網路聯繫許多的電腦,讓彼此間可以交換資料。
• 電腦網路的技術源自最早的ARPANET計劃。
• 電腦網路由終端設備與網路設備所組成,主要的網路設備包含交換器與路由器。
• 電腦網路依據規模區分為區域網路、都會網路與廣域網路。
• 網際網路(Internet)是連結全球各個網路的廣域網路。
• 網路傳輸資料的快慢用頻寬表示,單位為每秒位元數。
• 居家上網可透過ADSL、有線電視纜線或光纖的方式。
• 辦公室上網可透過公司內部的乙太區域網路。
• 戶外上網可透過Wi-Fi無線區域網路或是手機的行動通訊網路。
• 網路的主機必須依循相同的網路協定才能正常運作。
• 網際網路使用的網路協定稱為TCP/IP協定堆疊,共分為五層:應用層、傳輸層、網路層、連結層與實體層。
• 應用層提供使用者各種網路應用服務。
• 傳輸層提供在兩台終端設備的應用程式間資料交換的服務。標示來源與目的地使用埠號碼。
• 網路層提供在兩台終端設備間資料交換的服務。標示來源與目的地使用IP位址。
• 連結層提供資料在通訊連結上傳遞的服務。標示來源與目的地使用MAC位址。
• 實體層利用網路介面卡將資料送至通訊連結上傳遞。
• 資料在網際網路傳遞的方式採用封包交換的技術。
• 常見應用層協定包括:HTTP、SMTP、FTP、Telnet與DNS。
• 傳輸層包含兩種常見的協定:TCP與UDP。
• IP位址可識別一台網路主機在網路的位置。
• 一台網路主機除了設定IP位址外,還可以用容易記憶的網域名稱表示。
• 網域名稱與IP位址可透過DNS伺服器找出對應關係。
• 利用子網路遮罩可取得某個IP位址所在的子網路位址。
• MAC位址可唯一識別一張網路介面卡。
• 通訊連結可採用的傳輸媒介有兩種形式:導引式與非導引式。
• 全球資訊網主要透過瀏覽器閱讀網站的網頁。
• 全球資訊網可存取的檔案資源用URL網址的方式表示。
• 網頁可利用HTML或XML標籤語言描述。
• 常見惡意軟體出現的三種形式:病毒、蠕蟲與特洛伊木馬。

Ch7.程式語言與軟體工程


• 程式語言是人與電腦溝通的語言。
• 寫程式是利用程式語言表達執行運作的程序。
• 程式語言依據人容易懂的程度區分四種階級:低階語言(機器語言)、組合語言、高階語言與自然語言。
• 不是用機器語言所撰寫的其他程式均需要透過轉譯的過程才能執行。
• 程式語言可應用於解決工程科學的問題、實現人工智慧、處理金融交易與系統的控制上。
• 程式語言的主要種類包括:命令式、函數式、邏輯式與物件導向式。
• 程式轉譯的兩種基本形式:編譯與直譯。
• 編譯器的處理包括三個階段:字彙分析、語法分析與執行碼產生。
• 直譯器會立即執行程式內容,編譯器則不會。
• 結合編譯與直譯的混合模式,可實現程式的可攜性。
• 程式語言的學習必須知道的基礎知識包括:支援的資料型別、運算子符號、運算式的表達、控制結構的表達與函數的使用。
• 程式的執行程序可以利用流程圖表示。
• 程式三種常見的執行次序:順序執行、條件執行與重複執行。這三種次序可相互組合建構出複雜的執行流程。
• 軟體工程視軟體的開發就像產品一樣需要嚴謹的製作過程。
• 最基本的軟體開發程序是採用瀑布式模型,共分五個階段:需求、設計、撰寫、測試與維護。
• 小專案的軟體開發可採用快速雛形模型。
• 物件導向式語言可充分發揮軟體的重複利用,主要包括兩個基本的機制:封裝與繼承。
• 類別是物件程式的樣板,物件才是執行的個體程式。
• 物件包含成員資料與成員函數。
• 繼承可以單一或多重。

Ch8.資料結構


• 陣列(array)和連結串列(linked list)是二個最基本的資料結構
• 連結串列的節點通常包含資料和指標
• 二元樹是最普遍的樹狀資料結構
• 樹的節點通常可以分為根節點(一個特殊的內部節點)、內部節點和外部節點(或稱為葉節點)
• 若一個二元樹的每個內部節點都有兩個兒子,則稱之為完滿二元樹(full binary tree)
• 若一個二元樹的所有葉子都在最下兩層,而且最後一層的葉子都集中在左邊,則稱之為完全二元樹(complete binary tree)
• 若一個完全二元樹的葉子都在最後一層,且每個葉子的父親都有兩個兒子,那麼這個完全二元樹又被稱為完美二元樹(perfect binary tree)
• 堆積(heap)是一個以陣列來實做的完全二元樹資料結構
• 堆疊(stack)是一個先進後出的資料結構
• 佇列(queue)是一個先進先出的資料結構

Ch9.演算法


• 演算法就是解決問題的方法
• 完整的演算法描述包含輸入、輸出和方法
• 流程圖也是演算法的一種表示方式
• 演算法的虛擬碼表示方式比較接近程式語言
• 演算法的時間複雜度,通常是指在最糟的情況下所需要花費的時間
• 演算法執行的時間通常都跟他的輸入量成一個函數關係
• 常見的時間複雜度函數有:O(1):常數、O(n):線性、O(nlogn),O(n^2):平方、O(n^3):立方、O(n^k):多項式、O(2^n):指數
• 暴力法又稱窮舉法,就是測試所有的可能組合
• 貪婪法在決策上都會有一些特殊的喜好偏向
• 動態規劃法可以說是查表法
• 分而治之法將問題分割成小問題,再各個擊破

Ch10.資料庫系統


• 資料庫系統是數位化資料的儲存系統。
• 一個資料庫系統由資料庫以及資料庫管理系統兩部分所組合而成。
• 資料庫是將一群相關的資料集合起來並儲存的地方。
• 資料模型用來將現實世界的資料特徵抽象化,用於描述一組資料的概念和定義。
• 關聯式資料庫是藉由分析欲儲存的實體彼此間的關係,進而建構儲存資料模型的方式。
• 在建構資料模型時,常常會利用實體關聯圖。
• 屬性用以描述實體特性。
• 主鍵是由一個或一個以上的屬性所組成,其值組具有唯一性。
• 實體彼此間的關係可為多對多、一對多、多對一以及一對一。
• 關聯表綱要可用來表示在資料庫中有那些關聯。
• SQL是標準的關聯式資料庫使用的查詢語言。
• SQL的查詢句子主要由select、from與where三部分組成。
• SELECT子句說明要顯示的屬性。
• FROM子句列出在查詢處理時會參考到的表格名稱。
• WHERE子句用來描述查詢的條件。

Ch11.計算理論


• 一般問題可以分成二類:最佳化(optimization)問題和決策(decision)問題
• 一個決策問題可以被決定(decidable),表示它可以在有限時間內回答是或否
• 停止(Halting)問題是一個不能被決定的問題
• 圖靈(Alan Mathison Turing)發明了圖靈機(Turing Machine),被稱為計算機之父
• 邱奇–圖靈論題(Church-Turing Thesis):演算法的能力和圖靈機的的能力相等
• NP-演算法(Nondeterministic Polynomial-time Algorithms)允許不確定的步驟(用猜的或隨機),但整體必須在多項式時間內完成
• P=NP?至今仍是未解之謎

Ch12.巨量資料與雲端計算


• 巨量資料的規模巨大到無法透過目前主流的軟體工具,在合理的時間內達到管理、搜尋、處理與分析等目的。
• 巨量資料三項主要特性:一為資料量非常大,二為資料增加的速度非常快,三為資料形式的多樣性。
• 能夠同時處理分散在各處的資料的運算,稱之為平行計算與分散式處理。
• 分散式系統是由一組電腦群或運算群所組成,彼此之間透過計算機網路相互連結與通訊後所形成的系統。
• 資料探勘為在大量的資料中發現知識的過程。
• 知識發現的過程可分為五大步驟。
• 在知識發現的過程中,牽涉了大量的前製準備與規劃工作。
• 資料關聯主要的目的是找出項目與項目間的關聯性。
• 資料分類是根據已知資料的相關屬性以及該資料所屬之類別,建立資料的分類模型,然後透過該模型來預測新進資料的類別歸屬。
• 資料分類也可稱為監督式的學習。
• 資料分群的主要目的是分析資料彼此間的相似度,並根據資料間的相似度將資料分成數個群集。
• 資料分群也稱為非監督式學習。
• 雲端運算是一種新的網路服務觀念。
• 雲端計算就是在網路上處理與提供資料的意思。
• 雲端計算的服務類型有三種:軟體即服務、平台即服務與基礎設施即服務。
• 佈建雲端計算服務的方式可區分私有雲與公眾雲。
• 穿戴式計算訴求隨身攜帶又可處理資料的設備。
• 智慧型手機可結合相機、感測器、衛星定位與無線通訊設備,提供多元化的用戶服務。
• 結合通訊能力與感測器所設計的智慧手錶與智慧手環,可做為雲端運動與健康管理的幫手。