好課推薦-以計算機的思維看世界。
讀史使人明智,讀詩使人靈秀,數學使人周密,科學使人深刻,倫理學使人莊重,邏輯修辭之學使人善辯:凡有所學,皆成性格.——培根
又是一年開學季,可愛的小侄女已經要面臨升學的壓力了,老哥讓我幫忙做疏導,索性在這里聊聊專業對個人的影響好了。開篇之前,先給大家安利一本書《果殼教你選專業》里面收錄了師兄師姐們讀專業的切身感受,也繼承了果殼以往的幽默詼諧外帶點小毒舌卻不失專業和嚴謹的風格,對學校等相關信息的收集也都比較全面,打算轉專業或者報考學校的朋友看看應該是不錯的參考。言歸正傳,今天就先聊聊計算機專業的重要思維及其對個人思考模式的影響吧。
一、個人應當具備的三種思維:
1、以化學學科為代表的實驗思維(觀察與歸納):實驗-->觀察-->發現、推斷與總結
2、以數學學科為代表的理論思維(推理和演繹):假設、預設-->定義、性質、定理-->證明
3、以計算學科為代表的計算思維(設計與構造):設計、構造與計算——計算思維也是一種遞歸的思維
二、計算思維的本質:
計算機思維:計算機是如何工作的?
利用計算機思維:現實世界的各種事物能如何利用計算機來進行控制和處理?
計算思維:本質是抽象和自動化。即運用計算機科學的基礎概念去求解問題、設計系統和理解人類行為。即計算思維的學習,不僅僅是會不會用計算機的問題,而是會不會利用計算思維來解決身邊的或者社會、自然問題的問題。
數學學科和計算學科的區別
數學學科研究:如何用數學方法(函數)表達一種現象,并研究出來一種計算規則將這些函數的值計算出來。主要還是人來利用規則
計算學科:利用簡單計算規則求解復雜計算,主要是機器利用規則解放人。
三、計算技術的奠基性思維及對個人的影響。
0和1思維 本質:符號化--> 計算化--> 自動化
1、語義符號化(現實生活可以用0和1來表示)--> 2、符號運算化(用0和1表示后,這些符號可以進行算數與邏輯運算)-->3、運算0、1化 -->4、 0、1自動化(0和1的計算可以用電子技術如基本門電路實現)-->5、分層構造化(變簡單的門電路為組合邏輯電路以完成一系列復雜操作)-->6、構造集成化
what易經:是研究自然現象及其變化規律的,從自然現象推導出人事現象及其他現象是否有規律的
how:將現象抽象為符號,進行符號組合,利用符號組合表達自然現象。
符號化的關鍵:區分與命名——其術語體系。
符號化的目的:基于符號的演算——符號組合
由“易經”看“符號化及符號計算”:自然、社會現象-->(通過符號化后)-->0、1及其組合-->(通過計算化后)-->0、1組合變化;基于0、1的計算-->(通過再語義化后)-->自然、社會現象變化規律
2.3、計算0、1化
轉為二進制+編碼,原碼、反碼、補碼。
使用補碼可以使減法變成加法,讓符號也參與計算。機器可以采用移位都方法進行乘法除法運算,左移為乘。
2.5、分層構造化
低層電路已驗證正確,可被封裝起來,用已封裝的驗證的低層電路可構造更為復雜的高層電路;如此一層一層構造
3 程序思維 與遞歸思維
注意:程序是構造出來的!而不是編寫出來的!程序構造的手段包括組合、抽象與遞歸
計算系統與程序——程序的作用和本質
指令:對可執行基本動作的抽象,即控制基本動作執行的命令,(外界可以通過指令來調用封裝了的基本動作)
程序:由基本動作指令構造的,若干指令的一個組合或一個執行序列,用以實現復雜動作。
程序執行機構:自動解釋程序中的各種組合,并按次序調用指令(基本動作)予以執行。
計算系統=基本動作+指令+程序執行機構
組合:對基本動作通過一些基本的運算,進行各種各樣的構造
抽象:將經常使用的、可由低層次系統實現的一些復雜動作,進行命名,以作為高層次系統共的指令被使用。
程序的本質:組合、 抽象、構造
遞歸(這里有點不熟需要再加強下):不斷重復的執行一些相似性表達。用遞歸定義,用遞歸構造,用遞歸計算或執行——算法設計分析的關鍵
遞歸計算:由后向前帶入,再由前向后計算。
迭代(遞推):可以自遞歸基礎開始,由前向后依次計算或直接計算
遞歸:可以自遞歸基礎開始,由前向后依次計算或直接計算;但有些,只能由后向前帶入,直到遞歸基礎,尋找一條路徑,然后再由前向后計算
遞歸是計算技術的典型特征,是以有限的表達方式來表達無限對象實例或無限計算步驟的一種經典的計算思維
遞歸函數是可計算函數的精確的數學描述---計算理論的重 計算理論的重要研究內容;
圖靈機本質上也是遞歸:圖靈可計算函數 圖靈機本質上也是遞歸:圖靈可計算函數與遞歸函數等價,凡可計算的函數都是一般遞歸函數 與遞歸函數等價,凡可計算的函數都是一般遞歸函數--- 丘奇-圖靈命題 圖靈命題---計算理論的重要研究內容;
小結:計算學科的一個重要任務就是構造計算系統(包括軟件系統和硬件系統),而構造計算系統的關鍵就是程序,程序是體現計算系統千變萬化的重要手段。因此我們可以說計算系統就是執行程序的系統。程序就是對控制系統基本動作的指令,進行組合、抽象與構造 ,以便使系統完成一些列的功能。而組合是將一些列動作帶入到另一個動作中進而構造出復雜的動作。eg一個復雜的表達式是由一系列簡單的表達式組合起來構成的。函數之間的調用關系,體現的就是一種組合。抽象就是對已經構造好的組合進行命名,然后用這個名字參與新的構造。抽象是簡化構造的一種手段。
幾點結論 : (1) 圖靈機是一種思想模型,它由一個控制 器(有限狀態轉換器),一條可無限延伸的帶 子和一個在帶子上左右移動的讀寫頭構成。 (2) 程序是五元組 形式的指令集。其定義了機器在一個特定 狀態 q下從方格中讀入一個特定字符 X時所采 取的動作為在該方格中寫入符號Y, 然后向右 移一格R (或向左移一格 L或不移動N), 同時 將機器狀態設為 p供下一條指令使用(3)圖靈機模型被認為是計算機的基本理論模型 ----計算機是使用相應的程序來完成任何設定好的任務。圖靈機是一種離散的、有 窮的、構造性的問題求解思路,一個問題的求解可以通過構造其圖靈機(即程 序)來解決。 ?(4)圖靈認為:凡是能用算法方法解決的問題也一定能用圖靈機解決; 凡是 圖靈機解決不了的問題任何算法也解決不了----圖靈可計算性問題。
4.1 馮.諾伊曼機的基本思想 :
? 運算 和 存儲 分離:解決了程序裝載在內存,如何被cpu執行的問題
? 存儲程序 : 指令和數據以同等地位事先 存于存儲器, 可按地址尋訪, ?連續自動執行。指令和數據用 二進制 表示,指令由操作碼(執行什么樣的運算)和地址碼(操作中的數據來源)組成
?五大部件構成: 運算器 、 控制器 、 存儲器 、 輸入設備 和 輸出設備
以運算器為中心,控制器負責解釋指令,運算器負責執行指令?以運算器為中心,控制器負責解釋指令,運算器負責執行指令
運算器=(數據)寄存器+算術邏輯部件
控制器=程序計數器PC(用于存儲下一條要執行的指令的地址)+指令寄存器IR(用于唇齒當前指令的內容)+信號控制器+時鐘與信號發生器
4.2 自動存取——存儲容量與地址空間和字長有關。
5 現代計算機系統(個人計算機的本質:也是馮諾依曼計算機,解決的了程序裝在外存如何被載入內存)
5.1 構成:硬件、軟件、數據、網絡
工作思維:存儲體系-->磁盤存取-->操作系統-->作業與進程->程序執行的管理與控制;資源組合利用體系化、管理分工合作協同化、外存程序內存進程化、硬件不足功能軟件化
5.2 存儲體系(核心:不同性能資源的組合優化)
意義:解決存儲器的永久存儲問題,存儲容量問題,存儲速度問題及存儲器價格問題。
方式:內存+外存
5.3 分工合作與協同管理思想——化解復雜問題,進行復雜問題求解的重要思想
操作系統(Operating System:OS) 是控制和管理計算機系統各種資源( 硬件資源、軟件資源和信息資源) 、合理組織計算機系統工作流程、提供用戶與計算機之間接口以解釋用戶對機器的各種操作需求并完成這些操作的一組程序集合,是最基本、最重要的系統軟件。
操作系統的作用:
操作系統是用戶與計算機硬件之間的接口 。
操作系統為用戶提供了虛擬機(Virtual Machine)。 。
操作系統是計算機系統的資源管理者
操作系統是如何實現復雜性控制的?
1、分工:獨立管理復雜環境中的每個部件 eg:磁盤管理——管理磁盤信息的讀寫;內存空間館里——管理內存空間的分配與回收;cpu管理——調度cpu去執行哪一個程序
5.4 磁盤管理:化整為零,還零為整的思想——通過文件、磁盤塊、文件夾、文件分配表共同完成
文件分配表FAT:存儲文件在磁盤塊之間的鏈接信息
2、合作:以任務為驅動,中心任務:讓計算機(cpu)執行存儲在外存上的程序。(這么些獨立管理的目的),因此需要各部件合作完成任務,這就產生了任務、作業與進城管理——管理一個程序執行中的各項工作。
3、協同:當基本的合作解決以后,關鍵就是協同,協同體現了自動化和最優化
1、為什么需要計算機語言?
進行問題求解,首先要有解決問題的步驟(即算法),而計算機能夠理解的解決問題的步驟被稱為程序,而計算機語言就是算法與機器能夠理解的程序的橋梁 ,他是人和計算機都能理解的語言
2、機器語言發展史(計算機能夠理解并執行什么?)
指令系統(cpu中的微處理器<中央處理單元>)cpu用二進制和編碼提供了可以解釋并執行的命令集合
機器語言:(所有的程序都需要轉換成機器語言程序計算機才能執行)用二進制和編碼方式提供的指令系統所編寫程序的語言
3、怎樣解決機器語言編寫程序所存在的困難?——高級語言產生
匯編語言(核心:助記符);執行過程:用符號編寫程序(匯編語言源程序)-->翻譯程序(匯編程序)-->機器語言程序
高級語言:用類似自然語言的語句編寫程序(高級語言源程序)-->編譯程序-->匯編語言-->機器語言程序
高級語言和匯編語言的差別:與機器的相關性
用高級語言進行問題求解的過程:(本質還是體現了自動化)
7 算法(組合優化問題是計算學科需要求解的典型問題)
算法類問題求解的一般步驟
問題抽象及數學建模:將問題抽象為一個數學問題,并給出求解該數學問題的算法模型。
算法策略設計
算法的數據結構和控制結構設計:將數學模型轉換為可由計算機自動計算的算法。
數據結構設計(邏輯結構+存儲結構)——如何將數學模型中的數據轉為計算機可以存儲和處理的數據?
控制結構設計——如何構造和表達處理的規則,以便能夠按規則逐步計算出結果。
算法的實現:用程序設計語言編寫算法實現的程序。
算法的分析:分析算法的正確性和復雜性,判斷能行性!
基本算法——排序算法
結構化數據表的查找與統計:對數據集合需要多遍處理時,先排序,可以減小遍歷次數。
非結構化數據(文檔類)——倒排建立索引:一個詞匯包含在哪些文檔中
聲明:本文部分內容節選自《大學計算機—計算思維導論 》
課程名稱:《大學計算機—計算思維導論 》
授課方:哈爾濱工業大學 戰德臣、張麗杰、聶蘭順、靳玉萍
個人聽課感受:特別棒的一門課,不拘泥于細節,從系統和宏觀的角度來幫助理解計算機學科
課程大綱:
大學計算機課程應圍繞著大學計算思維教育空間-計算之樹,進行內容的組織和學習。
(I)計算與程序,主要講授計算與計算思維,符號化、計算化和自動化,計算系統與程序構造,程序構造方法:遞歸與迭代,這些是由社會/自然到計算的、最基本的抽象和自動化機制;
(II)計算系統,主要講授程序是如何被執行的,包括內存環境下程序的執行和復雜環境下借助于操作系統管理的程序的執行,以及如何編寫讓計算系統可以執行的程序;
(III)算法思維,主要講授算法類問題求解框架-問題與數學建模、算法策略設計、數據結構和控制結構以及算法復雜性與正確性,還將以案例形式介紹由問題到環境,再到受限資源約束下的問題求解算法,以及難解性問題、計算和算法之間的關系等;
(IV)數據化與網絡化思維。數據化思維即:數據獲取==>數據管理==>數據分析與運用;網絡化思維即:機器網絡==>信息網絡==>群體互動網絡==>網絡化社會。