1. 程式人生 > >c++學習筆記(一)--計算導論

c++學習筆記(一)--計算導論

計算導論

課程來源:coursera:程學設計與演算法(Peking University,北京大學)
課程連結:程式設計與演算法

本章簡介:這是系列課第一節的前半部分,與程式碼關係不大,主要涉及計算機原理、發展歷史與程式原理,瞭解一下即可。

一. 計算機原理

1.1 從數學危機到圖靈機

第一次數學危機:畢達哥拉斯與西帕索斯悖論,有理數與無理數之爭。
第二次數學危機:微積分與貝克萊悖論,關於無窮小的討論。
第三次數學危機:集合論與羅素悖論,數學完備性的爭議。
第三次數學危機引出了哥德爾不完備性定理,根據該定理可以定義可計算問題和不可計算問題。可計算問題指能找到解決該問題模型的問題。1936年,圖靈提出“圖靈機”概念,用於界定可計算問題和不可計算問題。

1.2 圖靈機的基本組成和執行原理

圖片來源於百度百科在這裡插入圖片描述
圖靈機的組成:
在這裡插入圖片描述
圖靈機的工作步驟
在這裡插入圖片描述
圖靈機的執行原理:
圖靈機用於可計算性的判定。如果能找到一個圖靈機,使輸入的問題A能得到符號序列B,則該問題可計算,否則不可計算。

1.3 數的二進位制表示

計算機中數的表示:符號太多會增加程式量並增加確定指令時間。最佳數量是尤拉常數取整=3,但三個狀態的電子元件製造困難,故最終選擇二進位制。
十進位制轉二進位制:除以2餘數自下而上彙集。
二進位制轉八進位制:從右向左,每三位進行一次轉換。

1.4 二進位制數的布林運算

誕生於1854年的布林代數,包含基本邏輯運算-與、或、非,以及複合邏輯運算-同或、異或、與非
加法:每位各自相加,逢2進1。
半加器:本位異或、進位與,不考慮進位。
全加器:多個半加器串聯,可以帶進位。
運算數轉換為二進位制數,二進位制數運算可以由基本的“布林運算”實現,基本的布林運算可以由電路實現。

二. 計算機的發展與分類

2.1 歷史上的計算裝置

早期計算裝置:算盤、Napier乘除器、Oughtred計算尺。無法記錄計演算法則,無法設定計算步驟,僅用於標記計算過程和記錄計算結果,是輔助工具。
機械計算器:帕斯卡加法器、W.Schickard計算器、萊布尼茨計算器(二進位制,能進行四則運算)、巴貝奇差分機、奧古斯塔為差分機第一次程式設計、Hollerith製表機應對人口普查並隨後成立IBM、K.Zuse完成了可程式設計的電子計算機Z3。
計算機原型:第一臺計算機ENIAC,1946.2.14正式啟動。1973年,被認為ENIAC由ABC研究推匯出來的,故Atanasoff被稱為“電子計算機之父”。缺點在於並非儲存程式式計算機、程式設計是用手工接插線進行的。馮.諾伊曼與1952年發明儲存程式式計算機,是所有現存計算機的藍本,稱為EDVAC。
第一代計算機:真空管儲存資料,體積大、耗能高、易燒壞
第二代計算機:貝爾實驗室1947年發明電晶體,產生了高階程式語言Fortran,Cobol
第三代計算機:德州儀器公司1958發明積體電路,c語言產生
第四代計算機:超大規模積體電路,第一塊微處理器Intel4004
摩爾定律:電晶體數量18月翻一番,價效比18個月提升一倍
計算機分類:微型計算機(PC、工作站),伺服器(小型機、中型機),大型計算機,巨型計算機。

2.2 未來的計算-從摩爾定律到量子計算機

摩爾定律下的挑戰:電晶體大小限制、電洩露、散熱
量子計算機基本原理:1982年,費曼提出利用量子體系實現通用計算。經典計算,一個位元某一時刻只能保持一種狀態;量子計算中,一個量子位元可以同時保持多種狀態。經典計算,一個輸入一次計算一個結果;量子計算,多個輸入,同時完成運算並輸出多個結果。
量子計算的難點:與外界環境隔離才能保持良好的相干性,但與外界環境良好耦合,才能控制演化並讀出結果,這是矛盾的。目前的嘗試有基於核磁共振、光量子位元、腔量子電動力學、離子阱的系統。首臺可程式設計通用量子計算機於2009年11月研製。
量子計算機潛在應用:需要巨量運算的場合。

三. 程式執行的基本原理

3.1 儲存式計算機

也稱為馮·諾依曼式計算機,擁有控制器、運算器、輸入輸出儲存器五大部分。工作過程如下:
在這裡插入圖片描述
目前的計算機中,運算器、控制器以及部分儲存器(快取記憶體)集中在cpu中,其餘儲存器,記憶體處於記憶體條,外存處於光碟機或者硬碟,鍵盤滑鼠屬於輸入,印表機顯示器屬於輸出。

3.2 儲存器

儲存器的種類與特點:1B(Byte)=8b(bit),一位元組=八位,位元組是能控制的最小單位。暫存器放於cpu內部,存放待運算元和結果;快取記憶體放於cpu內部,用作資料緩衝區;記憶體放於cpu裡想放但放不下的部分。從內向外,速度越來越慢,價格越來越低。
儲存器的原理與型別:
RAM:可隨機存取。DRAM必須週期重新整理來保持儲存內容(記憶體常用),SRAM不需要週期性重新整理
ROM:只能讀。ROM生產時寫入,使用者不可更改;PROM生產時空白,使用者可寫入但不能修改;EPROM,可擦除重寫但需要專用裝置;EEPROM,有電即可擦除重寫;Flash EPROM快速可擦除儲存器,即U盤。

3.3 指令與程式的執行

cpu只能執行指令集中的指令,指令集是cpu設計時預先定義好的,是體現cpu效能的重要標誌。
程式的執行:程式編譯成為彙編程式碼,彙編轉換為機器碼給cpu執行。在記憶體中,開闢程式碼區和資料區兩個區域,讀取程式碼區的指令,對相應的區域進行處理。

總結
計算導論的內容主要是介紹計算機的發展歷史與相關概念,大致對應大學裡面的計算機基礎知識課程以及程式設計語言的第一二章,有相關學習經歷的完全可以跳過。