版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
從一個(gè)程序談起計(jì)算機(jī)編程的基本概念計(jì)算機(jī)核心知識(shí)——算法什么是計(jì)算機(jī)計(jì)算機(jī)前沿知識(shí)——大數(shù)據(jù)計(jì)算機(jī)科學(xué)之美
1/TP
第一章計(jì)算機(jī)學(xué)什么引言
2每一個(gè)人都應(yīng)該學(xué)習(xí)計(jì)算機(jī),然而這要分成兩個(gè)層面來說。對(duì)一般人而言,由于計(jì)算機(jī)的應(yīng)用已經(jīng)滲透到社會(huì)的各個(gè)領(lǐng)域,改變著人們的工作、學(xué)習(xí)和生活方式,推動(dòng)著社會(huì)的發(fā)展。學(xué)會(huì)如何有效地使用計(jì)算機(jī)基本技術(shù),是生活于現(xiàn)代信息時(shí)代中的基本要求。對(duì)信息(InformationTechnology,IT)專業(yè)的我們而言,所要學(xué)習(xí)的知識(shí)和需要掌握的技術(shù)遠(yuǎn)遠(yuǎn)多于一般人對(duì)計(jì)算機(jī)科學(xué)的知識(shí)要求。我們要學(xué)習(xí)如何設(shè)計(jì)軟件和硬件系統(tǒng)、如何分析數(shù)據(jù)及做出決斷,進(jìn)而學(xué)習(xí)如何優(yōu)化我們的設(shè)計(jì)、如何確保我們的設(shè)計(jì)是正確、有效、安全并且是符合設(shè)計(jì)要求的。涉及到一系列計(jì)算機(jī)專業(yè)的學(xué)科內(nèi)容,就需要我們從學(xué)習(xí)計(jì)算機(jī)軟件、硬件、操作系統(tǒng)、網(wǎng)絡(luò)、算法、信息安全等的知識(shí)開始。引言(續(xù))
3現(xiàn)代IT科技產(chǎn)業(yè),是推動(dòng)世界經(jīng)濟(jì)的主動(dòng)力,是主要的創(chuàng)新泉源。中國(guó)和世界的IT產(chǎn)業(yè)急需高水平的計(jì)算機(jī)人才。學(xué)習(xí)這些知識(shí),是需要有形成組織體系的知識(shí)積累和持續(xù)不斷的動(dòng)手實(shí)踐。很多學(xué)生在畢業(yè)時(shí)仍然對(duì)計(jì)算機(jī)科學(xué)沒有整體而連貫性的理解,也就是對(duì)計(jì)算機(jī)的學(xué)習(xí)沒有“通”,歸根溯源,從第一門課——《計(jì)算機(jī)導(dǎo)論》開始,學(xué)生就對(duì)該門課程的學(xué)習(xí)迷迷糊糊、一知半解。本課程將會(huì)帶領(lǐng)大家走進(jìn)計(jì)算機(jī)科學(xué)絢爛的殿堂,進(jìn)而領(lǐng)略計(jì)算機(jī)的美。沙老師:殿堂給你造好了,歸根結(jié)底,你還是得要自己打開門,自己走進(jìn)去。第一節(jié)從一個(gè)程序談起
4探索黑匣子之計(jì)算機(jī)硬件探索黑匣子之計(jì)算機(jī)軟件探索黑匣子之操作系統(tǒng)計(jì)算機(jī)系統(tǒng)的層次引言:什么是程序?
5對(duì)于普通的計(jì)算機(jī)使用者,程序就像是一個(gè)黑匣子。當(dāng)程序的黑匣子獲得一個(gè)輸入,它就按照事先定義好的變換規(guī)則,對(duì)輸入進(jìn)行變換以得到結(jié)果并輸出。所以,普通用戶只需要了解黑匣子的輸入格式,就能使用黑匣子所提供的功能。程序:黑匣子功能:對(duì)輸入實(shí)數(shù)進(jìn)行平方根運(yùn)算輸入:一個(gè)實(shí)數(shù)C例如:9輸出:例如:3引言:什么是程序?(續(xù))
6作為普通用戶,不需要了解黑匣子內(nèi)部?jī)?nèi)容,只需要知道怎么使用這個(gè)黑匣子。而對(duì)于計(jì)算機(jī)專業(yè)學(xué)生,僅僅知道黑匣子的功能和使用方法是遠(yuǎn)遠(yuǎn)不夠的。這就需要同學(xué)們一步一步打開這個(gè)黑匣子,探索和了解其內(nèi)部的構(gòu)造,從而設(shè)計(jì)具有個(gè)性功能的、屬于自己的黑匣子。本小節(jié)將逐步為同學(xué)們揭開黑匣子的神秘面紗。1.1探索黑匣子之計(jì)算機(jī)硬件
7問:怎么給定輸入值,輸入值又將存放在黑匣子的什么位置?黑匣子的整個(gè)運(yùn)算過程是誰在控制?黑匣子運(yùn)算的結(jié)果又將輸出或者存儲(chǔ)到什么位置?答:硬件所有的操作都離不開計(jì)算機(jī)硬件。硬件多種多樣,根據(jù)不同功能,又可以劃分為:輸入設(shè)備,如鍵盤、鼠標(biāo);存儲(chǔ)設(shè)備,如內(nèi)存,硬盤;運(yùn)算控制設(shè)備,如中央處理器CPU;輸出設(shè)備,如顯示器。程序:黑匣子
功能:對(duì)輸入實(shí)數(shù)進(jìn)行平方根運(yùn)算1.1探索黑匣子之計(jì)算機(jī)硬件
8輸入數(shù)據(jù)在硬件上的邏輯流動(dòng)過程為:首先,用戶從鍵盤上輸入實(shí)數(shù)C,操作系統(tǒng)將實(shí)數(shù)C傳送到內(nèi)存。接下來,黑匣子內(nèi)部的中央處理器CPU對(duì)輸入數(shù)據(jù)進(jìn)行運(yùn)算并得到結(jié)果。最后,運(yùn)算結(jié)果輸出并通過顯示器顯示。在這個(gè)過程中涉及到的數(shù)據(jù)傳輸都是通過總線完成的。輸入:一個(gè)實(shí)數(shù)C例如:9輸出:例如:3中央處理器CPU存儲(chǔ)器內(nèi)存鍵盤硬件1.1探索黑匣子之計(jì)算機(jī)硬件
9了解黑匣子中硬件的部署之后,就能清楚地認(rèn)識(shí)到數(shù)據(jù)在程序運(yùn)算過程中的傳輸與計(jì)算流程。但是,僅有這些硬件,計(jì)算機(jī)仍然不能對(duì)輸入實(shí)數(shù)C進(jìn)行開平方根。因?yàn)橛布o法自我完成和實(shí)現(xiàn)用戶的需求,硬件本身并不知道黑匣子要完成的功能,并不能讀懂自然語言“對(duì)輸入實(shí)數(shù)開平方根”所表示的意思。那么,程序這個(gè)黑匣子中就需要有一個(gè)部分,專門將用戶需求轉(zhuǎn)換為硬件能夠看懂的語言,同時(shí)也控制著硬件的操作步驟和順序。1.2探索黑匣子之計(jì)算機(jī)軟件
10對(duì)于一個(gè)高中生,告訴他求解實(shí)數(shù)9的算術(shù)平方根,通過已學(xué)過的知識(shí),在他頭腦中進(jìn)行一系列的運(yùn)算過程,告訴你答案是3。對(duì)于計(jì)算機(jī)而言,CPU是計(jì)算機(jī)的大腦,而計(jì)算機(jī)語言,將控制CPU按步驟執(zhí)行任務(wù)。指示CPU進(jìn)行操作的語言稱為程序語言,每一個(gè)步驟稱為一條指令,一個(gè)程序(或稱為軟件)由若干條指令組成。1.2探索黑匣子之計(jì)算機(jī)軟件
11要讓計(jì)算機(jī)實(shí)現(xiàn)開算術(shù)平方根運(yùn)算,計(jì)算機(jī)語言需要告訴計(jì)算機(jī):首先從輸入設(shè)備讀入一個(gè)實(shí)數(shù),存儲(chǔ)在存儲(chǔ)器的1000號(hào)單元。接著,做開平方根的運(yùn)算,在此運(yùn)算函數(shù)簡(jiǎn)記為do_sqrt。最后,將運(yùn)算結(jié)果打印到顯示器。輸入:一個(gè)實(shí)數(shù)C例如:9輸出:例如:3中央處理器CPU存儲(chǔ)器內(nèi)存鍵盤硬件對(duì)輸入實(shí)數(shù)進(jìn)行平方根運(yùn)算軟件C=input()B=do_sqrt(C)print(B)1.2探索黑匣子之計(jì)算機(jī)軟件
12在程序執(zhí)行的這個(gè)黑匣子中,軟件描述了用戶的需求,硬件則實(shí)現(xiàn)了用戶的需求。但是,軟件與硬件之間的銜接和相互工作的實(shí)現(xiàn),不是獨(dú)立完成的。程序?qū)懞煤筮€需要被加載到存儲(chǔ)器中,在程序的執(zhí)行過程中,軟件并不能獨(dú)立的控制硬件進(jìn)行工作。因此,計(jì)算機(jī)結(jié)構(gòu)中,還需要一個(gè)層次來銜接軟件與硬件、控制硬件工作、為軟件提供服務(wù)等。這個(gè)特殊的層次就是操作系統(tǒng)。1.3探索黑匣子之操作系統(tǒng)
13有了存儲(chǔ)器、中央處理器等硬件,結(jié)合控制這些硬件的程序語言,計(jì)算機(jī)就能夠工作了?,F(xiàn)今的計(jì)算機(jī),可以附加多種多樣的硬件。操作系統(tǒng)為用戶提供了一個(gè)較為方便和安全的平臺(tái),就是由操作系統(tǒng)來充當(dāng)這些硬件的管理者,實(shí)現(xiàn)對(duì)多種不同的硬件的管理和使用,為各種不同類型的應(yīng)用軟件提供支持。操作系統(tǒng)其實(shí)也是一組程序,這組程序非常巨大,并且很復(fù)雜。操作系統(tǒng)這組程序的主要功能在于管理計(jì)算機(jī)的各種資源及周邊設(shè)備的硬件。有了操作系統(tǒng)后,應(yīng)用程序編寫者不用再去參考硬件手冊(cè),而只需要了解所使用操作系統(tǒng)提供的統(tǒng)一的命令標(biāo)準(zhǔn)就可以了。1.3探索黑匣子之操作系統(tǒng)
14輸入:一個(gè)實(shí)數(shù)C例如:9輸出:例如:3中央處理器CPU存儲(chǔ)器內(nèi)存鍵盤硬件對(duì)輸入實(shí)數(shù)進(jìn)行平方根運(yùn)算軟件C=input()B=do_sqrt(C)print(B)操作系統(tǒng)(OS)到此,整個(gè)黑匣子就揭開了,它是由軟件、操作系統(tǒng)和硬件共同構(gòu)成的。1.4計(jì)算機(jī)系統(tǒng)的層次
15現(xiàn)代計(jì)算機(jī)不僅僅是一種電子設(shè)備,而是一個(gè)十分復(fù)雜的硬、軟件結(jié)合而成的整體。沒有硬件作為支撐,軟件只能是空中樓閣,而沒有軟件的控制,硬件則只是一堆廢鐵。通過對(duì)程序黑匣子的探索,可以將計(jì)算機(jī)系統(tǒng)分為三個(gè)層次:硬件層,操作系統(tǒng)層,軟件層。1.4計(jì)算機(jī)系統(tǒng)的層次
16硬件層包括計(jì)算機(jī)的各個(gè)部件,控制器、運(yùn)算器、存儲(chǔ)器、輸入設(shè)備和輸出設(shè)備。這個(gè)存儲(chǔ)程序計(jì)算機(jī)架構(gòu)早在1964年,由美籍匈牙利科學(xué)家馮·諾依曼提出。上述中央處理器CPU包含了控制器與運(yùn)算器兩個(gè)功能部件。馮·諾依曼體系結(jié)構(gòu)(VonNeumannarchitecture)是現(xiàn)代計(jì)算機(jī)的基礎(chǔ),現(xiàn)在大多計(jì)算機(jī)只是在馮·諾依曼體系結(jié)構(gòu)上作了一些改進(jìn)而已。馮·諾依曼也因此被人們稱為“計(jì)算機(jī)之父”。在這以前,程序也是硬件,不易于更改。而在馮·諾依曼體系結(jié)構(gòu)中,程序和數(shù)據(jù)都放在存儲(chǔ)器里,馮·諾依曼結(jié)構(gòu)將程序變成了用戶可以自定義的“軟件”,也就是說程序變得易于定義和修改。從此,便有了軟件“編程”的概念和相關(guān)學(xué)科的開展。1.4計(jì)算機(jī)系統(tǒng)的層次
17軟件層包括由匯編以及高級(jí)語言(C/C++,Java,Python等)等開發(fā)出的應(yīng)用程序。對(duì)通用型計(jì)算機(jī)而言,功能的實(shí)現(xiàn)需要軟硬件的無縫配合。要使硬件CPU發(fā)揮計(jì)算功能,需要控制指令來完成。每一條指令指示了某一些硬件進(jìn)行運(yùn)作,比如“將3加上5存入主存儲(chǔ)器的1000號(hào)地址單元”,該指令將讓運(yùn)算器做3加5的計(jì)算,并存入到主存儲(chǔ)器的1000號(hào)地址中。然而,對(duì)于計(jì)算機(jī)而言,它不能識(shí)別中文指令,計(jì)算機(jī)僅能識(shí)別由二進(jìn)制數(shù)字0與1構(gòu)成的語言(這部分內(nèi)容將在第二章詳細(xì)講解)。這時(shí)候,就需要操作系統(tǒng)提供一個(gè)語言轉(zhuǎn)換的功能,將高級(jí)語言轉(zhuǎn)換成計(jì)算機(jī)能夠識(shí)別的機(jī)器語言。1.4計(jì)算機(jī)系統(tǒng)的層次
18操作系統(tǒng)層是連接硬件和軟件的中間橋梁,它是由機(jī)器指令和廣義指令組成。機(jī)器指令,指的是CPU能夠直接識(shí)別并執(zhí)行的指令,通常表現(xiàn)為二進(jìn)制編碼。廣義指令指的是系統(tǒng)定義和解釋的軟件指令。操作系統(tǒng)的種類繁多,根據(jù)不同的應(yīng)用要求,有不同的操作系統(tǒng)。生活中最常見的操作系統(tǒng)有微軟的Windows系列產(chǎn)品、Ubuntu、Fedora等Linux系統(tǒng),蘋果MacOS系列產(chǎn)品,以及智能手機(jī)中所使用的Android、IOS系統(tǒng)等等。但在某些情況下,用上述的操作系統(tǒng)是不行的。如雷達(dá)對(duì)獲取到的信號(hào)進(jìn)行處理所需的操作系統(tǒng);汽車中用于快速地分配展開安全氣囊的任務(wù)所需的操作系統(tǒng),這一類的系統(tǒng)都是生活中常見的實(shí)時(shí)操作系統(tǒng),諸如WinCE,VxWorks等。操作系統(tǒng)在計(jì)算機(jī)學(xué)習(xí)中是非常重要的部分,同學(xué)們一定要清楚地掌握好操作系統(tǒng)的知識(shí)!1.4計(jì)算機(jī)系統(tǒng)的層次
19操作系統(tǒng)的主要職能可以簡(jiǎn)要概括為以下幾點(diǎn):管理文件系統(tǒng),管理各種硬件資源,例如U盤、網(wǎng)絡(luò)、鍵盤等管理程序共享的資源,例如CPU、主存等(一個(gè)計(jì)算系統(tǒng)會(huì)有多個(gè)程序同時(shí)在執(zhí)行或等待執(zhí)行)管理和調(diào)度多個(gè)程序的執(zhí)行提供程序和硬件的銜接,提供各種系統(tǒng)的服務(wù)和接口設(shè)法維護(hù)系統(tǒng)的安全,盡量防止病毒(惡意軟件)有意或無意的侵入有關(guān)操作系統(tǒng)各個(gè)部分的詳細(xì)內(nèi)容將在本書接下來的章節(jié)中依次介紹。同學(xué)一定要理解操作系統(tǒng)的內(nèi)部機(jī)制,這樣將來才有能力實(shí)現(xiàn)出一個(gè)“計(jì)算機(jī)系統(tǒng)”——無論是嵌入式系統(tǒng)、數(shù)據(jù)庫(kù)系統(tǒng)、網(wǎng)站系統(tǒng)還是云計(jì)算系統(tǒng)等。第二節(jié)計(jì)算機(jī)編程的基本概念
20初窺高級(jí)語言從Python語言進(jìn)入計(jì)算機(jī)語言的世界引言:
21計(jì)算機(jī)的程序并不是一個(gè)神秘難懂的東西。程序就是計(jì)算機(jī)能夠看得懂的語言,編程就是與計(jì)算機(jī)的對(duì)話。計(jì)算機(jī)程序就是利用計(jì)算機(jī)語言,讓計(jì)算機(jī)理解編程者所要實(shí)現(xiàn)的任務(wù),從而完成各種功能。2.1初窺高級(jí)語言
22軟件層的實(shí)現(xiàn)主要包括匯編語言以及高級(jí)語言。在進(jìn)一步學(xué)習(xí)之前,我們先來補(bǔ)充一些高級(jí)語言的基礎(chǔ)知識(shí)。常見的高級(jí)語言有:C語言、C++、VB、JAVA、C#等等。計(jì)算機(jī)順序地執(zhí)行程序,不同的高級(jí)語言有不同的編寫格式和語句分割符號(hào),按照語句分割符號(hào),計(jì)算機(jī)每次執(zhí)行的代碼稱之為語句。按照順序,函數(shù)的第一條語句首先執(zhí)行,接著是第二條,依次執(zhí)行直到結(jié)束語句或者滿足結(jié)束條件。2.1初窺高級(jí)語言——表達(dá)式語句
23表達(dá)式語句由表達(dá)式組成。表達(dá)式是由數(shù)字、運(yùn)算符、數(shù)字分組符號(hào)(括號(hào))、變量等組成,并且是能夠求得數(shù)值的、有意義的排列方法的組合。執(zhí)行表達(dá)式語句就是計(jì)算表達(dá)式的值。例如:y+z為加法運(yùn)算語句,但計(jì)算結(jié)果不能保留,無實(shí)際意義x=3為賦值語句,將字面值為3的常數(shù)賦值給變量x,執(zhí)行該賦值語句后x的內(nèi)容即為3x=y+z為上述兩個(gè)表達(dá)式的組合,意思是將y+z的值賦給x2.1初窺高級(jí)語言——函數(shù)調(diào)用語句
24函數(shù)調(diào)用語句由函數(shù)名、實(shí)際參數(shù)組成。其一般形式為:函數(shù)名(實(shí)際參數(shù)表)。如果該函數(shù)有返回值,則調(diào)用函數(shù)后返回該值。如:x=add(y,z),add函數(shù)的作用是將兩個(gè)參數(shù)y、z的值相加并將和返回給x,則該語句表達(dá)的意思是將y+z的值賦給x。2.1初窺高級(jí)語言——控制結(jié)構(gòu)語句
25高級(jí)程序語言提供了多種控制結(jié)構(gòu)支持更為復(fù)雜的執(zhí)行路徑。for語句for語句的一般形式為:for(iinrange(N)){循環(huán)部分}。for語句的語義是:for循環(huán)會(huì)執(zhí)行{循環(huán)部分}N次,其中用索引i來表示某時(shí)刻執(zhí)行的次數(shù)。一般而言,i=0,…,N-1。索引i的起始和最終值可根據(jù)不同的需求在for()里面設(shè)定。至于如何設(shè)定i的起始和最終值,不同的編程語言有不同的設(shè)置方法。while語句while語句的一般形式為:while(表達(dá)式){循環(huán)部分}。其中表達(dá)式是循環(huán)條件,語句為循環(huán)體。表達(dá)式所表示的循環(huán)條件就限制了程序只能在滿足這個(gè)條件的情況下才能執(zhí)行{循環(huán)部分}。while語句的語義是:每次循環(huán)都計(jì)算表達(dá)式的值,當(dāng)值為真(非0)時(shí),執(zhí)行{循環(huán)部分}。if語句if語句的一般形式為:if(表達(dá)式){語句}。if語句的語義是:如果表達(dá)式的值為真,則執(zhí)行{語句}部分,否則不執(zhí)行該語句。2.1初窺高級(jí)語言——控制結(jié)構(gòu)語句(續(xù))
26例如:現(xiàn)在有一棟教學(xué)樓,每層有一個(gè)班,共六層。小明今天是值日生,在大家放學(xué)后小明需要到每一層樓檢查各班是否都關(guān)好了燈。如果發(fā)現(xiàn)某班教室未關(guān)燈,則關(guān)燈,并扣該班1分;如果關(guān)了燈,則上一層樓繼續(xù)檢查其他班級(jí),直到檢查完最后一個(gè)班級(jí)。用for與whle語句實(shí)現(xiàn)如下:#<程序:for循環(huán)>for小明所在樓層i
從1到6:
if樓層i的燈是亮的:關(guān)燈
print該班扣1分#<程序:while循環(huán)>小明所在樓層i=1while小明所在樓層i<=6:if樓層i的燈是亮的:
關(guān)燈
print該班扣1分上一層樓(i的值變成i+1)for語句和while語句實(shí)際上都是一種循環(huán)語句,可以用來處理同一個(gè)問題,一般可以相互替代。2.2從Python語言進(jìn)入計(jì)算機(jī)語言的世界
27什么是python?如何寫python?漢語、英語都有各自的語法,那python的語法是什么呢?我們會(huì)在第四章更詳細(xì)的講述Python,這一節(jié)只是簡(jiǎn)單的描述一些最基本的概念。Python(/?pa?θ?n/),是一種面向?qū)ο?、解釋型?jì)算機(jī)程序設(shè)計(jì)語言,由GuidovanRossum于1989年底發(fā)明,第一個(gè)公開發(fā)行版發(fā)行于1991年。Python語法簡(jiǎn)潔而清晰,具有豐富和強(qiáng)大的類庫(kù)。由于Python語言的簡(jiǎn)潔、易讀以及可擴(kuò)展性,在國(guó)外用Python做科學(xué)計(jì)算的研究機(jī)構(gòu)日益增多,一些知名大學(xué)已經(jīng)采用Python教授程序設(shè)計(jì)課程。本課程也將使用該語言作為入門計(jì)算機(jī)的語言工具。2.2從Python語言進(jìn)入計(jì)算機(jī)語言的世界
——在windows中使用Python
28在windows中,同其他應(yīng)用程序,例如QQ一樣,要使用該軟件,必須首先進(jìn)行程序運(yùn)行環(huán)境的搭建。因此,要使用Python進(jìn)行開發(fā),必須先安裝Python的運(yùn)行環(huán)境。安裝包下載地址為/downloads/。(本課程使用Python3.3版本,注:3.x與2.x有較大差別)進(jìn)入“LatestPython3Release”,找到“downloadpage”進(jìn)去,然后下載適合自己計(jì)算機(jī)的下載包。下載安裝包,并成功安裝。這時(shí),Python就安裝好,可以使用了。為了方便編輯,Python自動(dòng)安裝了一個(gè)Python編輯器——IDLE。在安裝好Python的計(jì)算機(jī)的windows系統(tǒng)中,點(diǎn)擊開始->所有程序->Python->IDLE(PythonGUI),并將其打開找到,這時(shí)候一個(gè)Pythonshell就建立好了。Python的shell好像是一個(gè)計(jì)算器,能夠方便的完成一次性的運(yùn)算,但是如果寫程序或函數(shù)這類具有復(fù)雜邏輯和結(jié)構(gòu)的語句,可以借助其他的Python編輯器來完成。2.2從Python語言進(jìn)入計(jì)算機(jī)語言的世界
——HelloWorld!
29打開IDEL,F(xiàn)ile->NewFile,創(chuàng)建一個(gè)新文件并保存為任何名字的.py格式。在該文件中輸入print("Helloworld!"),點(diǎn)擊run選擇runModule(或快捷鍵F5)運(yùn)行。第一次執(zhí)行該程序時(shí),Python會(huì)先詢問函數(shù)所在的文件的名稱,將此程序存起來。然后可以看到,PythonShell窗口中打印出了Helloworld!字樣,表示程序成功執(zhí)行。在print中包含在兩個(gè)雙引號(hào)”(或兩個(gè)單引號(hào)’)中間的字符叫做字串。另外,為了增加程序的可讀性,為程序添寫注釋是一個(gè)良好的習(xí)慣,Python中的注釋是以‘#’開始的行,即‘#’后面的內(nèi)容Python是不會(huì)執(zhí)行的,只是為了閱讀程序的方便而書寫的。在進(jìn)行程序編寫的過程中可以試試以下的程序,產(chǎn)生一個(gè)新文件,每次都用F5保存和執(zhí)行。2.2從Python語言進(jìn)入計(jì)算機(jī)語言的世界
——變量與表達(dá)式
30本節(jié)前開始之前,我們先來看一個(gè)程序表達(dá)式:y=x+1,這個(gè)式子幾乎包含了本小節(jié)的所有知識(shí)點(diǎn)。其中x、y為變量,1為常量,+為算術(shù)操作符,=為賦值操作符,x+1為公式,y=x+1為表達(dá)式。等號(hào)右邊的公式將計(jì)算值賦值給等號(hào)左邊的變量y。等號(hào)左邊的變量就相當(dāng)是一個(gè)盒子的標(biāo)簽,y就是這個(gè)盒子的標(biāo)簽,代表著這個(gè)盒子;等號(hào)右邊的變量名x代表這個(gè)變量x所存的值,可以想成是盒子x內(nèi)的值,x+1就是把盒子x的內(nèi)容拿出來加上1后,再放進(jìn)盒子y里。變量出現(xiàn)在等號(hào)左邊和右邊時(shí)所代表的意思是不一樣的,等號(hào)左邊代表了“盒子”,等號(hào)右邊代表了盒子里的值。所以x=x+1的意思就很清楚了。將x存的值拿出來加1后,再將計(jì)算后的值存回到變量x中。例如x=1,經(jīng)過x=x+1后,變量x就變成2了。在Python的shell中寫:x=1;x=x+1;print(x)#
輸出:22.3活學(xué)活用——運(yùn)用python的基本功能解決數(shù)學(xué)問題
31
問題一:給定一個(gè)常數(shù)n(n>0),求n的階乘,即n!=1*2*…*(n-1)*n。例如4!=24,5!=120。
32要求n的階乘,一種方法是利用循環(huán)來訪問1到n的所有數(shù)。在程序最開始時(shí),創(chuàng)建一個(gè)初值為1的中間變量res,循環(huán)中每訪問一個(gè)數(shù)i,就將數(shù)i與中間變量相乘,這樣中間變量存放的值就為i!。當(dāng)i=n時(shí),res內(nèi)的值就是最終要求的n!。求解問題一的Python程序段如下所示。輸出結(jié)果為:1307674368000。這個(gè)程序首先給n賦值15,即要求15的階乘。首先,我們利用if語句判斷n的值是否為0,如果n為0,根據(jù)階乘的定義,0!=1,程序直接打印1。否則,進(jìn)入else分支。在else分支中,我們首先給一個(gè)名為res的變量賦初值1,如上所述,該變量將存儲(chǔ)計(jì)算的中間結(jié)果i!。我們利用for循環(huán)依次訪問1到n的所有數(shù)。注意,因?yàn)樽詈笠粋€(gè)要訪問的數(shù)為n,所以range的上邊界為n+1。最后,程序?qū)⑤敵鏊蟮玫?5!的結(jié)果。接下來,我們來考慮一個(gè)組合(combination)問題,即要在n個(gè)有編號(hào)的小球中任意選取k個(gè)小球,試問所有的可能。
33
34
輸出結(jié)果為:14641。有了自定義函數(shù),該問題的Python實(shí)現(xiàn)就變得十分簡(jiǎn)潔了。同學(xué)們可以嘗試一下,如果不定義函數(shù)combination,我們?cè)撊绾尉帉慞ython代碼求解該問題呢?#<程序:(x+1)的n次方的展開式系數(shù)>n=4foriinrange(0,n+1):combination(n,i)第三節(jié)計(jì)算機(jī)核心知識(shí)——算法
35算法的重要性解平方根算法一解平方根算法二解平方根算法三3.1算法的重要性——計(jì)算機(jī)的核心
36算法是計(jì)算機(jī)的核心。算法獨(dú)立于編程語言,但是好的算法能夠優(yōu)化程序和計(jì)算的過程,減少資源的開銷。算法,作為軟件的核心,決定著計(jì)算機(jī)系統(tǒng)的運(yùn)算效率和軟件的運(yùn)行效率。算法具有以下的五個(gè)重要特征:有限的運(yùn)行步驟;具有確定的執(zhí)行步驟;具有輸入項(xiàng);具有輸出項(xiàng);對(duì)于計(jì)算機(jī)系統(tǒng)是可行的;3.2算法問題——解平方根
37要設(shè)計(jì)一個(gè)算法來解決問題,首先要定義問題,并確定問題的輸入和輸出。求解平方根問題的輸入是一個(gè)任意的實(shí)數(shù)c,問題的定義是求c的算數(shù)平方根,輸出是c的算術(shù)平方根的值。輸入:一個(gè)任意實(shí)數(shù)c;輸出:c的算術(shù)平方根g。實(shí)數(shù)C輸入算法輸出3.2.1解平方根的算法一——趨近
38這個(gè)問題有多種解決的途徑。根據(jù)我們以往所學(xué)的知識(shí),可能最先想到的是采用趨近的方法來求解。這個(gè)算法的描述如下:輸入:一個(gè)任意實(shí)數(shù)c;輸出:c的算術(shù)平方根g。(1)從0到c的區(qū)域里選取一個(gè)整數(shù)g’,滿足g’2<c且(g’+1)2>c的條件;(2)如果g’2-c足夠接近于0,g’即為所求算術(shù)平方根的解g=c1/2;(3)否則,以步長(zhǎng)h增加g’:g’=g’+h,其中,h為設(shè)定精度(可設(shè)為0.0001)下的步長(zhǎng)(可設(shè)為0.00001),即每次對(duì)g’作調(diào)整的值;(4)重復(fù)步驟(2)直到滿足條件,此時(shí)輸出g’,并終止計(jì)算。
39#<程序:平方根運(yùn)算1>defsquare_root_1():#函數(shù)定義,函數(shù)名為square_root_1c=10 #所求平方根的輸入,即該段程序求根號(hào)10i=0 #記錄執(zhí)行循環(huán)次數(shù)g=0forjinrange(0,c+1):#for循環(huán)開始if(j*j>candg==0):#if判斷,使得g2<c,(g+1)2>cg=j-1#for循環(huán)結(jié)束while(abs(g*g-c)>0.0001):#判斷g2-c是否在精度范圍內(nèi) g+=0.00001 #g每次加步長(zhǎng),以逼近所求解i=i+1print("%d:g=%.5f"%(i,g))
#函數(shù)外,執(zhí)行下面的語句square_root_1()3.2.1解平方根的算法一——趨近
40該段程序包括兩個(gè)循環(huán)部分和一個(gè)判斷部分。執(zhí)行結(jié)果如下:1:g=3.000012:g=3.00002…………16226:g=3.1622616227:g=3.16227實(shí)際運(yùn)行該程序會(huì)發(fā)現(xiàn),程序運(yùn)行的時(shí)間較長(zhǎng)。如果把解的精度和步長(zhǎng)縮小,那么運(yùn)行時(shí)間會(huì)明顯延長(zhǎng)。這意味著該算法的時(shí)間性能還不理想。要提高程序運(yùn)行的效率,就需要改進(jìn)算法。3.2.1解平方根的算法二——二分法
41觀察算法一的輸出結(jié)果,可以發(fā)現(xiàn),雖然能夠得到正確的算術(shù)平方根求解結(jié)果,但是當(dāng)實(shí)驗(yàn)對(duì)解的精度要求提高時(shí),該算法的效率明顯降低。因?yàn)檩敵鼋Y(jié)果精度增加時(shí),算法不得不減小步長(zhǎng)h,以避免g+h跳過可接受的解范圍。觀察程序后可以發(fā)現(xiàn),隨著精度的提高,h的值減小,算法所需要進(jìn)行循環(huán)的次數(shù)大大增加了。算法一例子中,精度要求0.0001,算法的循環(huán)次數(shù)已達(dá)到16227次。如果提高精確度,循環(huán)的次數(shù)會(huì)成倍增長(zhǎng)。這是算法一運(yùn)行效率低的原因。因此,算法二使用“二分法”,有效減少逼近最終解的步驟,加快逼近過程。3.2.1解平方根的算法二——二分法
42“二分法”的基本思想:每次將求解值域的區(qū)間減少一半,因此可以快速縮小搜索的范圍。所謂求解值域區(qū)間就是精確值可能存在的范圍。我們不妨假設(shè)c的平方根為x,令f(x)=x2-c,求c的平方根x即是求f(x)=0的解。如圖所示:當(dāng)c>=1時(shí),解的范圍是0<x<c。假設(shè)min=0,max=c。x的值肯定是介于min和max之間,取中間值(min+max)/2,令該值為g。比較g2-c與0,如果|g2-c|在求解精度范圍內(nèi),該值即為所求解;否則,如果g2-c>0,表示g的值偏大,因此從g到max的區(qū)間不可能包含要找的最終解。于是,在算法中將新的max設(shè)定為當(dāng)前g的值,繼續(xù)搜索。同理,如果g2-c<0,表示g的值偏小,此時(shí)將新的min就設(shè)定為當(dāng)前g的值。3.2.1解平方根的算法二——二分法
43設(shè)初始值設(shè)定max=10,min=0,中點(diǎn)值g=5。測(cè)試g=5,5×5=25>10,表示正確的平方根值x不在5到10的區(qū)域內(nèi),所以不再考慮5到10的區(qū)域。于是將max設(shè)定為5。此時(shí),求解空間變?yōu)榱嗽瓉淼囊话搿=酉聛韽?到5的區(qū)間中,以同樣的方式用二分法縮小解空間。以此類推,經(jīng)過n次循環(huán)后,得到的范圍就減到10/2n數(shù)量級(jí)。求解過程以指數(shù)級(jí)速度逼近精確解。設(shè)定精度為0.00000000001,改進(jìn)后求平方根的具體算法描述如下:輸入:一個(gè)任意實(shí)數(shù)c;輸出:c的算術(shù)平方根g。(1)令min=0,max=c;(2)令g’=(min+max)/2;(3)如果g’2-c足夠接近于0,g’即為所求解g,否則:(4)如果g’2<c,min=g’,否則max=g’;(5)重復(fù)步驟(2),直到滿足條件,輸出g’,終止程序
44#<程序:平方根運(yùn)算2-二分法>defsquare_root_2():i=0c=10m_max=cm_min=0g=(m_min+m_max)/2while(abs(g*g-c)>0.00000000001):#while循環(huán)開始 if(g*g<c):m_min=g else:m_max=gg=(m_min+m_max)/2i=i+1 print("%d:%.13f"%(i,g))#while循環(huán)結(jié)束square_root_2()3.2.1解平方根的算法二——二分法
45程序包括一個(gè)while循環(huán)部分以及一個(gè)if語句。循環(huán)部分判斷g2與c的大小,然后針對(duì)不同的情況,改變相應(yīng)m_min或m_max的值,快速縮小求解空間。運(yùn)行該程序的輸出如下:1:2.50000000000002:3.75000000000003:3.1250000000000…………38:3.162277660176239:3.1622776601671結(jié)果表明該算法僅僅用了39次循環(huán)迭代實(shí)現(xiàn)了平方根的計(jì)算,并且精度由0.0001提高到了0.00000000001。相比于算法1的16227次循環(huán),算法效率得到了非常大的提升。3.2.1解平方根的算法三——牛頓迭代法
46我們還可以進(jìn)一步修改算法,獲得更少的循環(huán)次數(shù),加快g的求解過程,而且可以得到同樣精度甚至是更高精度的解。在計(jì)算機(jī)科學(xué)里,要養(yǎng)成良好的思維習(xí)慣,持續(xù)不斷的對(duì)設(shè)計(jì)進(jìn)行優(yōu)化,尋找更高效的求解方法,這也是計(jì)算機(jī)科學(xué)美的重要體現(xiàn)。為了獲得更少的循環(huán)次數(shù),算法三利用牛頓迭代方式逼近近似解。首先構(gòu)建一個(gè)函數(shù)f(x),使得f(x)=0時(shí)對(duì)應(yīng)的x的解就是c的平方根。令f(x)=x2-c,這樣求c的平方根的問題就轉(zhuǎn)化為求解f(x)=0的問題。設(shè)x0是f(x)=0的根,選取g0作為x0的初始近似值,算法的核心在于如何推導(dǎo)下一點(diǎn)g1,使得g1更趨近于正確的x0值。以此類推,直到找到精確范圍內(nèi)的正確解為止。3.2.1解平方根的算法三——牛頓迭代法
47牛頓迭代法的基本思想:當(dāng)x=g0時(shí),過點(diǎn)f(x)做一條切線。這條切線與x軸相交于一點(diǎn),這個(gè)交點(diǎn)就是g1。從圖1.13可以清楚地看到g1比g0更趨近于正確的平方根值。然后,再經(jīng)過f(x=g1)做一條切線,同樣,該切線與x軸的交點(diǎn)成為下一個(gè)更趨近于精確值x0的近似值g2。以此類推,直到gn的平方和c的差值達(dá)到所設(shè)定的精度為止。通過數(shù)學(xué)計(jì)算,可以得出g1和g0的關(guān)系是g1=(g0+c/g0)/2。具體推導(dǎo)如下,過點(diǎn)(g0,f(g0))做f(x)的切線L,可以算出切線的斜率:f(x)=x2-c的導(dǎo)數(shù)(對(duì)x微分),就是2x。切線L的斜率就是f’(g0)=2g0。L的方程為y=f(g0)+f’(g0)(x-g0),設(shè)L與x軸的交點(diǎn)坐標(biāo)為(g?1,0),則0=f(g0)+f’(g0)(g?1-g0)。因?yàn)閒(g0)=g02-c和f’(g0)=2g0,代入計(jì)算,可以得到:g02-c+2g0(g?1-g0)=0,所以2g0g?1=c-g02+2g02=c+g02,化簡(jiǎn)得到g1=(g0+c/g0)/2。3.2.1解平方根的算法三——牛頓迭代法
48以此類推,每次循環(huán)將近似值gi更新為(gi-1+c/gi-1)/2,新的g更加接近最終解x0。在n次循環(huán)迭代后,近似值gn+1=(gn+c/gn)/2,這就是牛頓迭代公式。牛頓迭代算法求任意正數(shù)c的平方根的具體算法描述如下:(1)先設(shè)g=c/2;(2)如果g2-c足夠接近于0,g即為所求,否則:(3)g=(g+c/g)/2;(4)重復(fù)2。3.2.1解平方根的算法三——牛頓迭代法
49#<程序:平方根運(yùn)算3-牛頓法>defsquare_root_3(): c=10 g=c/2 i=0 whileabs(g*g-c)>0.00000000001: g=(g+c/g)/2i=i+1 print("%d:%.13f"%(i,g))square_root_3()3.2.1解平方根的算法三——牛頓迭代法
50該程序僅用7行代碼就實(shí)現(xiàn)了解平方根的功能,運(yùn)行結(jié)果如下:1:3.50000000000002:3.17857142857143:3.16231942215094:3.16227766044415:3.1622776601684[Finishedin0.1s]觀察發(fā)現(xiàn),算法三僅僅用了5次循環(huán)迭代便實(shí)現(xiàn)了一個(gè)求解平方根的計(jì)算。相比于算法2的39次迭代,又得到了很大的改進(jìn)。上面的實(shí)際運(yùn)行結(jié)果顯示實(shí)際時(shí)間縮短到0.1秒之內(nèi)。計(jì)算機(jī)科學(xué)的最神妙有趣之處,就是它對(duì)于“算法”的研究。解決同一個(gè)問題可以設(shè)計(jì)出各種不同的算法。不是獲得解就結(jié)束了,而且要分析不同算法之間對(duì)程序執(zhí)行效率的影響,不同的算法會(huì)有很顯著的性能優(yōu)劣差異。第四節(jié)什么是計(jì)算機(jī)
51歷史上的計(jì)算機(jī)嵌入式系統(tǒng)未來的計(jì)算機(jī)什么是計(jì)算機(jī)
52什么是計(jì)算機(jī)?在不同的年代,人們對(duì)該問題的回答是不一樣的一般來說,計(jì)算機(jī)可以分成兩種:通用型計(jì)算機(jī)(generalpurposecomputers)和專用型計(jì)算機(jī)(specialpurposecomputers)。通用型計(jì)算機(jī)包括常用的臺(tái)式計(jì)算機(jī)(desktopcomputers)、筆記本電腦(laptopcomputers)、平板電腦(tablet)等,或者是服務(wù)器(servers)、超級(jí)電腦(supercomputers)等。專用型計(jì)算機(jī)是為特定應(yīng)用量身打造的計(jì)算機(jī),計(jì)算機(jī)內(nèi)部的程序一般不能被改動(dòng)。比如控制智能家電的電腦、工業(yè)用電腦和機(jī)器人,汽車內(nèi)部的數(shù)十個(gè)用于控制電腦,所有船艦、飛機(jī)、航天上的控制電腦,安檢偵測(cè)設(shè)備、智能卡、網(wǎng)絡(luò)路由器、照相機(jī)、印表機(jī)、游戲機(jī)等,數(shù)不勝數(shù)。專業(yè)型電腦常被稱為“嵌入式系統(tǒng)”(embeddedsystems),就是將“智能”嵌入到應(yīng)用中的意思。4.1歷史上的計(jì)算機(jī)
531946年2月14日,世界上第一臺(tái)電子數(shù)字計(jì)算機(jī)(ENIAC)在美國(guó)誕生,并于次日正式對(duì)外公布。共用了18000多個(gè)電子管組成,占地170m2,總重量為30噸,耗電150kw。運(yùn)算速度較快,能達(dá)到每秒能進(jìn)行5000次加法、300次乘法,比當(dāng)時(shí)最快的繼電器計(jì)算機(jī)的運(yùn)算速度快1000多倍。4.1歷史上的計(jì)算機(jī)
54電子計(jì)算機(jī)從誕生起,短短的50多年里經(jīng)過了電子管、晶體管、集成電路(IC)和超大規(guī)模集成電路(VLSI)四個(gè)階段的發(fā)展。在這個(gè)過程中,計(jì)算機(jī)的體積越來越小,功能越來越強(qiáng),價(jià)格越來越低,應(yīng)用越來越廣泛。中國(guó)的計(jì)算機(jī)也有了飛速的發(fā)展。2014年初,中國(guó)造的天河2號(hào)電腦成為了世界上最快的電腦。天河2號(hào)擁有百萬個(gè)核,運(yùn)算速度達(dá)到5億億次的浮點(diǎn)運(yùn)算。4.1歷史上的計(jì)算機(jī)——四代計(jì)算機(jī)
55第一代計(jì)算機(jī)所經(jīng)歷的時(shí)間為1946年至1958年。處于這一時(shí)代的計(jì)算機(jī)的共同特點(diǎn)是:體積較大;運(yùn)算速度較低;存儲(chǔ)容量不大;而且價(jià)格昂貴;使用也不方便。解決一個(gè)簡(jiǎn)單問題所編寫的程序的復(fù)雜程度也難以表述。這一代計(jì)算機(jī)只在重要機(jī)構(gòu)或科學(xué)研究部門使用,主要用于科學(xué)計(jì)算。第二代計(jì)算機(jī)所經(jīng)歷的時(shí)間為1958年至1965年。這一時(shí)代的計(jì)算機(jī)全部采用晶體管作為電子器件,其運(yùn)算速度比第一代計(jì)算機(jī)的提高了近百倍,體積為原來的幾十分之一。在軟件方面,開始使用計(jì)算機(jī)算法語言。這一代計(jì)算機(jī)不僅用于科學(xué)計(jì)算,還用于數(shù)據(jù)處理和事務(wù)處理及工業(yè)控制。4.1歷史上的計(jì)算機(jī)——四代計(jì)算機(jī)
56第三代計(jì)算機(jī)所經(jīng)歷的時(shí)間為1965年至1970年。這一時(shí)期的計(jì)算機(jī)的主要特征是以中、小規(guī)模集成電路為電子器件。一個(gè)重大的突破是計(jì)算機(jī)出現(xiàn)了操作系統(tǒng),計(jì)算機(jī)的功能越來越強(qiáng),應(yīng)用范圍越來越廣。它們不僅用于科學(xué)計(jì)算,還用于文字處理、企業(yè)管理、自動(dòng)控制等事務(wù)。與此同時(shí),還出現(xiàn)了計(jì)算機(jī)技術(shù)與通信技術(shù)相結(jié)合的信息管理系統(tǒng),可用在生產(chǎn)管理、交通管理、情報(bào)檢索等領(lǐng)域。第四代計(jì)算機(jī)是指從1970年以后采用大規(guī)模集成電路(LSI)和超大規(guī)模集成電路(VLSI)為主要電子器件制成的計(jì)算機(jī)。例如80386微處理器,在面積約為10mm*l0mm的單個(gè)芯片上,可以集成大約32萬個(gè)晶體管。第四代計(jì)算機(jī)的另一個(gè)重要分支是以大規(guī)模、超大規(guī)模集成電路為基礎(chǔ)發(fā)展起來的微處理器和微型計(jì)算機(jī)。4.2嵌入式系統(tǒng)
57在汽車上能看到各式各樣的智能化功能,如無鑰匙啟動(dòng)、自動(dòng)頭燈、倒車影像等,都是由計(jì)算機(jī)完成的。只不過這樣的計(jì)算機(jī)是嵌入在汽車內(nèi)部的,稱為嵌入式系統(tǒng)。一輛汽車內(nèi)部有多達(dá)50個(gè)這樣的“計(jì)算機(jī)”。EnglishName中文名EnglishName中文名Anti-lockbrakes防抱死剎車Electronicinstruments電子儀器Automatictellermachines自動(dòng)取款機(jī)Electronictoys/games電子玩具/游戲Automatictollsystems自動(dòng)收費(fèi)系統(tǒng)Factorycontrol工業(yè)控制Automatictransmission自動(dòng)換檔Faxmachines傳真機(jī)Avionicsystems航空系統(tǒng)Fingerprintidentifiers指紋識(shí)別器Batterychargers充電器Homesecuritysystems家庭安全系統(tǒng)Camcorders數(shù)碼攝像機(jī)Printers打印機(jī)Cellphones手機(jī)Satellitephones衛(wèi)星電話Cell-phonebasestations手機(jī)基站Scanners掃描儀Cordlessphones無線電話Televisions電視機(jī)Cruisecontrol定速巡航Temperaturecontrollers溫度控制器Digitalcameras數(shù)碼相機(jī)Thefttrackingsystems盜竊跟蹤系統(tǒng)Diskdrives磁碟機(jī)TVset-topboxes機(jī)頂盒Electroniccardreaders讀卡器Washersanddryers洗衣機(jī)干洗機(jī)4.2嵌入式系統(tǒng)
58計(jì)算機(jī)的應(yīng)用已深入到生活的各個(gè)方面,從家用設(shè)備到工業(yè)設(shè)備,從民用設(shè)備到軍用設(shè)備。所以,當(dāng)現(xiàn)在談?wù)摰绞裁词怯?jì)算機(jī)的時(shí)候,我們應(yīng)該知道,身邊的一切電子控制、自動(dòng)化系統(tǒng)等都是計(jì)算機(jī)的應(yīng)用。它們有一個(gè)共同的特點(diǎn):具有運(yùn)算能力并且經(jīng)過編程后可以解決特定的問題。這個(gè)編程可以是用軟件,在CPU的平臺(tái)上運(yùn)行,或者是直接做成硬件來執(zhí)行。近年來,由于計(jì)算機(jī)輔助設(shè)計(jì)軟件的進(jìn)步,使得硬件的開發(fā)也較為容易。尤其是FPGA(FieldProgrammableGateArray)的發(fā)展,硬件原型機(jī)的制作也變得相對(duì)容易許多。設(shè)計(jì)FPGA就好像是編寫軟件程序,設(shè)計(jì)好的程序(用特殊的語言),進(jìn)過編譯后,下載到FPGA的開發(fā)板上,就完成了硬件的設(shè)計(jì)。無論如何,軟件程序是需要硬件來執(zhí)行,那硬件需要軟件嗎?通用型的CPU肯定是需要軟件來完成計(jì)算,然而專用型(ApplicationSpecific)的硬件,就不需要軟件了,因?yàn)檎麄€(gè)“軟件”算法已經(jīng)嵌入在硬件設(shè)計(jì)里了。4.3未來的計(jì)算機(jī)——計(jì)算機(jī)科學(xué)未來發(fā)展趨勢(shì)
59(1)隨著互聯(lián)網(wǎng)的發(fā)展,信息安全(InformationSecurity)逐漸成為人們不可忽視的學(xué)科。如何確保信息系統(tǒng)的安全,已成為全社會(huì)關(guān)注的問題。(2)隨著互聯(lián)網(wǎng)的發(fā)展,云計(jì)算(CloudComputing)將成為主流的計(jì)算方式。云計(jì)算是分布式計(jì)算(DistributedComputing)、并行計(jì)算(ParallelComputing)、效用計(jì)算(UtilityComputing)、網(wǎng)絡(luò)存儲(chǔ)技術(shù)(NetworkStorageTechnologies)、虛擬化技術(shù)(Virtualization)、負(fù)載均衡技術(shù)(LoadBalance)等計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)發(fā)展融合的產(chǎn)物。(3)隨著互聯(lián)網(wǎng)的發(fā)展,大數(shù)據(jù)(BigData)將影響互聯(lián)網(wǎng)和云計(jì)算等大規(guī)模數(shù)據(jù)的操作。大數(shù)據(jù)技術(shù)的戰(zhàn)略意義不在于擁有龐大的數(shù)據(jù)量,而在于如何對(duì)這些含有意義的數(shù)據(jù)進(jìn)行快速、實(shí)時(shí)的分析處理。4.3未來的計(jì)算機(jī)——計(jì)算機(jī)系統(tǒng)的發(fā)展趨勢(shì)
60當(dāng)今計(jì)算機(jī)系統(tǒng)的發(fā)展趨勢(shì)是:系統(tǒng)越來越大,核數(shù)越來越多;終端越來越小,越來越便攜;越來越高效能。多核時(shí)代已經(jīng)到來。2005年4月,英特爾倉(cāng)促推出簡(jiǎn)單封裝雙核的奔騰D和奔騰四至尊版840。AMD在之后也發(fā)布了雙核皓龍(Opteron)和速龍(Athlon)64X2處理器。但真正的“雙核元年”,則被認(rèn)為是2006年。這一年的7月23日,英特爾基于酷睿(Core)架構(gòu)的處理器正式發(fā)布。2006年11月,又推出面向服務(wù)器、工作站和高端個(gè)人電腦的至強(qiáng)(Xeon)5300和酷睿雙核、四核至尊版系列處理器。而如今,智能手機(jī)已經(jīng)出現(xiàn)了四核以及八核。不久的將來,個(gè)人電腦會(huì)有32核,64核,128核及以上。時(shí)代的進(jìn)步飛速,現(xiàn)在的超級(jí)電腦已經(jīng)有一百萬核以上了!在多核的時(shí)代,如何設(shè)計(jì)軟件使其有效地在多核上運(yùn)行、操作系統(tǒng)要如何有效管理這么多的核,等等,這些都是計(jì)算機(jī)科學(xué)所面臨的諸多挑戰(zhàn),需要大量計(jì)算機(jī)專業(yè)人才來解決并行、調(diào)度、資源管理、節(jié)能省電等等的問題。計(jì)算機(jī)科學(xué)的研究發(fā)展方興未艾、生機(jī)蓬勃。第五節(jié)計(jì)算機(jī)前沿知識(shí)——大數(shù)據(jù)
61數(shù)據(jù)大數(shù)據(jù)大數(shù)據(jù)的應(yīng)用5.1數(shù)據(jù)——什么是數(shù)據(jù)?
62什么是數(shù)據(jù)?在計(jì)算機(jī)科學(xué)中,數(shù)據(jù)是指所有能輸入到計(jì)算機(jī)并被計(jì)算機(jī)程序處理的,具有一定意義的數(shù)字、字母、符號(hào)和模擬量等的通稱。計(jì)算機(jī)的世界里只有兩個(gè)數(shù):0,1。而正是這簡(jiǎn)單而又神奇的兩個(gè)數(shù)字,卻能表示現(xiàn)實(shí)生活中各式各樣的數(shù)據(jù)。計(jì)算機(jī)利用模數(shù)轉(zhuǎn)換器(ADC,AnalogtoDigitalConverter),將模擬信號(hào)(即真實(shí)世界的連續(xù)的信號(hào))轉(zhuǎn)換為數(shù)字信號(hào)(即用數(shù)值表示的離散信號(hào)),即0,1進(jìn)行傳輸。5.1數(shù)據(jù)——數(shù)據(jù)數(shù)據(jù)處理操作
63正如數(shù)據(jù)在計(jì)算機(jī)中的定義:輸入到計(jì)算機(jī)并進(jìn)行處理的內(nèi)容。將照片,音頻等信息轉(zhuǎn)化為二進(jìn)制的過程,是計(jì)算機(jī)對(duì)數(shù)據(jù)的采集工作;將這些數(shù)據(jù)以二進(jìn)制的方式存入到計(jì)算機(jī),計(jì)算機(jī)完成了對(duì)數(shù)據(jù)的存儲(chǔ)操作;在存入計(jì)算機(jī)的信息中提取我們感興趣的部分,是計(jì)算機(jī)對(duì)數(shù)據(jù)的檢索操作;對(duì)數(shù)據(jù)進(jìn)行加工,比如噪聲去除,圖像增強(qiáng),是計(jì)算機(jī)對(duì)數(shù)據(jù)的加工操作;將關(guān)鍵數(shù)據(jù)進(jìn)行加密等操作,是計(jì)算機(jī)對(duì)數(shù)據(jù)的變換操作;最后,將這些數(shù)據(jù)傳輸給其他計(jì)算機(jī),計(jì)算機(jī)完成了對(duì)數(shù)據(jù)的傳輸操作。以上各種操作,均是數(shù)據(jù)處理的部分內(nèi)容。數(shù)據(jù)處理指的就是對(duì)數(shù)據(jù)的采集、存儲(chǔ)、檢索、加工、變換和傳輸。5.2大數(shù)據(jù)
64國(guó)際數(shù)據(jù)公司(IDC)從下面這四個(gè)特征來定義大數(shù)據(jù),即海量的數(shù)據(jù)規(guī)模(Volume)、快速的數(shù)據(jù)流轉(zhuǎn)和動(dòng)態(tài)的數(shù)據(jù)體系(Velocity)、多樣的數(shù)據(jù)類型(Variety)、巨大的數(shù)據(jù)價(jià)值(Value)。亞馬遜(全球最大的電子商務(wù)公司)的大數(shù)據(jù)科學(xué)家JohnRauser給出了一個(gè)簡(jiǎn)單的定義:大數(shù)據(jù)是任何超過了一臺(tái)計(jì)算機(jī)處理能力的數(shù)據(jù)量。維基百科解釋道:“大數(shù)據(jù)(bigdata),指的是所涉及的資料量規(guī)模巨大到無法通過目前主流軟件工具,在合理時(shí)間內(nèi)達(dá)到擷取、管理、處理并整理成為幫助企業(yè)經(jīng)營(yíng)決策更積極目的的資訊”大數(shù)據(jù)是一個(gè)寬泛的概念。誠(chéng)然“大”是大數(shù)據(jù)的一個(gè)重要特征,但遠(yuǎn)遠(yuǎn)不是全部。大數(shù)據(jù)是“在多樣的大量的數(shù)據(jù)中,迅速獲取信息的能力”。這個(gè)定義凸顯了大數(shù)據(jù)的功用,而其重心是“能力”。大數(shù)據(jù)的核心能力,是發(fā)現(xiàn)規(guī)律和預(yù)測(cè)未來。5.3大數(shù)據(jù)的應(yīng)用
65有了大數(shù)據(jù)的概念,本節(jié)將列舉生活中大數(shù)據(jù)的應(yīng)用。大數(shù)據(jù)的應(yīng)用包括了射頻識(shí)別(RFID)、傳感設(shè)備網(wǎng)絡(luò)、天文學(xué)、大氣學(xué)、基因組學(xué)、生物學(xué)、大社會(huì)數(shù)據(jù)分析、互聯(lián)網(wǎng)文件處理、制作互聯(lián)網(wǎng)搜索引擎索引、通信記錄明細(xì)、軍事偵查、社交網(wǎng)絡(luò)、通勤時(shí)間預(yù)測(cè)、醫(yī)療記錄、照片圖像和圖像封存、大規(guī)模的電子商務(wù),等等不同領(lǐng)域的應(yīng)用5.3.1大數(shù)據(jù)的應(yīng)用——商業(yè)中的大數(shù)據(jù)
66沃爾瑪是最早利用大數(shù)據(jù)而受益的企業(yè)之一,曾擁有世界上最大的數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)。公司在對(duì)消費(fèi)者購(gòu)物行為進(jìn)行分析時(shí)發(fā)現(xiàn),男性顧客在購(gòu)買嬰兒尿片時(shí),常常會(huì)順便搭配幾瓶啤酒來犒勞自己,于是推出了將啤酒和尿布捆綁銷售的促銷手段。如今,這一“啤酒+尿布”的美國(guó)第二大的超市塔吉特(Target)百貨公司,為了吸引孕婦這一含金量很高的群體,也求助數(shù)據(jù)分析手段。他們希望在孕婦懷孕較初期時(shí)就把她們識(shí)別出來,這樣就可以在別的競(jìng)爭(zhēng)對(duì)手之前吸引她們的采購(gòu)。數(shù)據(jù)分析成果也成了大數(shù)據(jù)技術(shù)應(yīng)用的經(jīng)典案例。TescoPLC(特易購(gòu))這家超市連鎖在其數(shù)據(jù)倉(cāng)庫(kù)中收集了700萬部冰箱的數(shù)據(jù)。通過對(duì)這些數(shù)據(jù)的分析,進(jìn)行更全面的監(jiān)控并進(jìn)行主動(dòng)的維修以降低整體能耗。梅西百貨(Macy's)的實(shí)時(shí)定價(jià)機(jī)制可以根據(jù)需求和庫(kù)存的情況進(jìn)行實(shí)時(shí)調(diào)價(jià)。該公司基于SAS的系統(tǒng)可以對(duì)多達(dá)7300萬種貨品進(jìn)行實(shí)時(shí)調(diào)價(jià)。5.3.1大數(shù)據(jù)的應(yīng)用——體育競(jìng)技中的大數(shù)據(jù)
67隨著互聯(lián)網(wǎng)的發(fā)展,大數(shù)據(jù)已經(jīng)悄然進(jìn)入了這項(xiàng)體育競(jìng)技項(xiàng)目的賽場(chǎng)。F1賽車場(chǎng)可能是大數(shù)據(jù)最經(jīng)典的應(yīng)用場(chǎng)景之一,一輛輛風(fēng)馳電掣的造價(jià)高達(dá)200萬美元的F1賽車的設(shè)計(jì)、模擬、測(cè)試和建造完全在電腦中完成,這個(gè)流程的每個(gè)環(huán)節(jié)都將產(chǎn)生大量數(shù)據(jù)。雖然F1的模擬測(cè)試需要昂貴的計(jì)算機(jī)軟硬件環(huán)境,但這依然比在賽道上實(shí)測(cè)的成本要低,據(jù)悉,一輛F1賽車在賽道上實(shí)測(cè)的花費(fèi)每天高達(dá)40-60因此,各大F1車隊(duì)紛紛大量借助高級(jí)流體動(dòng)力計(jì)算(CFD)和CAD/CAM進(jìn)行賽車的設(shè)計(jì)、測(cè)試和制造。尤其在測(cè)試環(huán)節(jié),每輛F1賽車都是大數(shù)據(jù)發(fā)生器,對(duì)計(jì)算和存儲(chǔ)環(huán)境提出了極高的要求。5.3.1大數(shù)據(jù)的應(yīng)用——日常生活中的大數(shù)據(jù)
68美國(guó)電業(yè)公司TXUEnergy,發(fā)明了一種智能電表技術(shù)。有了智能電表,公司能每隔15分鐘就讀一次用電數(shù)據(jù),而不是過去的一月一次,從而大大節(jié)省了抄表的人且由于能高頻率快速采集分析用電數(shù)據(jù)(產(chǎn)生大數(shù)據(jù)),供電公司能根據(jù)用電高峰和低谷時(shí)段制定不同的電價(jià)。PRADA試衣間的大數(shù)據(jù)。在紐約旗艦店里,每件衣服上都有RFID碼。每當(dāng)顧客拿起衣服進(jìn)試衣間時(shí),這件衣服上的RFID會(huì)被自動(dòng)識(shí)別,試衣間里的屏幕會(huì)自動(dòng)播放模特穿著這件衣服走臺(tái)步的視頻。這也需要大數(shù)據(jù)相關(guān)技術(shù)對(duì)顧客信息和服裝信息的處理。第六節(jié)計(jì)算機(jī)科學(xué)之美
69無處不在的計(jì)算機(jī)計(jì)算機(jī)學(xué)科本身包含的知識(shí)面之廣6.1無處不在的計(jì)算機(jī)
70現(xiàn)今社會(huì)大量地使用計(jì)算機(jī),已經(jīng)找不到?jīng)]有使用計(jì)算機(jī)的領(lǐng)域了。大家都知道,假如沒有電,世界將一片黑暗??墒羌偃鐩]有計(jì)算機(jī),世界會(huì)怎樣?交通運(yùn)輸癱瘓,制造業(yè)無法發(fā)展,農(nóng)業(yè)遭受損失,通訊將中斷,商業(yè)和金融活動(dòng)將無法進(jìn)行。6.1.1無處不在的計(jì)算機(jī)——交通運(yùn)輸
71隨著科學(xué)技術(shù)的發(fā)展,計(jì)算機(jī)在交通運(yùn)輸中起著舉足輕重的作用。從空運(yùn)系統(tǒng),到陸運(yùn)系統(tǒng),計(jì)算機(jī)無處不在。如下圖所示,左圖為航拍原圖像,右圖為經(jīng)過去霧處理后的圖像,可以看出,去霧后的圖像能夠恢復(fù)出清晰的地面場(chǎng)景,有助于高空視覺系統(tǒng)的分辨和識(shí)別,減少了霧對(duì)飛機(jī)降落的影響。計(jì)算機(jī)在空運(yùn)中不僅僅進(jìn)行圖像處理。澳門機(jī)場(chǎng)和深圳機(jī)場(chǎng)曾發(fā)生過這樣一件事。當(dāng)一場(chǎng)臺(tái)風(fēng)來臨時(shí),由于澳門機(jī)場(chǎng)的計(jì)算機(jī)比較先進(jìn),算出飛機(jī)不必停飛;而深圳機(jī)場(chǎng)因?yàn)樗悴磺宄?,只好關(guān)閉機(jī)場(chǎng),損失以億計(jì)。6.1.1無處不在的計(jì)算機(jī)——交通運(yùn)輸
72陸運(yùn)系統(tǒng)中,現(xiàn)在城市里的地鐵,城市間鐵路運(yùn)輸、動(dòng)車、高鐵,都是計(jì)算機(jī)全程和全局來控制。假如系統(tǒng)沒有設(shè)計(jì)好,沒有測(cè)試全,沒有考慮各種可能的情況,慘劇就可能會(huì)發(fā)生。除了計(jì)算機(jī)設(shè)計(jì)的功能正確和安全可靠以外,計(jì)算機(jī)的性能也是十分重要的。氣象預(yù)測(cè)牽扯到大規(guī)模的計(jì)算,需要高性能的計(jì)算機(jī)和軟件。2001年12月7日,一場(chǎng)沒有預(yù)報(bào)的落雪使北京的交通大癱瘓,很多人只能步行幾小時(shí)回家,不少人指責(zé)氣象部門失職。再看道路上的紅綠燈控制系統(tǒng)。離開了計(jì)算機(jī),沒有了交通信號(hào)控制系統(tǒng),沒有了道路監(jiān)控系統(tǒng),十字路口將會(huì)產(chǎn)生死鎖,封鎖交通,致使交通癱瘓。如圖1.3所示。6.1.1無處不在的計(jì)算機(jī)——制造產(chǎn)業(yè)
73以日本和韓國(guó)的造船業(yè)為例,由于采用先進(jìn)的計(jì)算機(jī)技術(shù),這兩個(gè)國(guó)家的造船工人人數(shù)從十幾萬下降到2萬多,年造船排水量近千萬噸;我國(guó)有30萬造船工人,年造船300萬噸排水量,效率相差數(shù)十倍。建設(shè)高速公路用的鋪瀝青設(shè)備,西氣東輸以后需要的燃?xì)廨啓C(jī),地鐵建設(shè)需要的大型挖掘機(jī)等等許多關(guān)鍵性設(shè)備我國(guó)都不能制造,只能花巨額外匯進(jìn)口。因?yàn)橹圃爝@些設(shè)備都需要性能先進(jìn)的計(jì)算機(jī)的幫助。在當(dāng)今時(shí)代,制造業(yè)僅僅靠拼人力是不行的,一定要靠計(jì)算機(jī)技術(shù)提高產(chǎn)業(yè)水平。6.1.1無處不在的計(jì)算機(jī)——農(nóng)業(yè)生產(chǎn)
74計(jì)算機(jī)在美國(guó)農(nóng)業(yè)領(lǐng)域內(nèi)的應(yīng)用,最早可追溯至20世紀(jì)50年代初。迄今,計(jì)算機(jī)的應(yīng)用,給美國(guó)帶來了高質(zhì)量、高效率和高效益的農(nóng)場(chǎng)管理、科研和生產(chǎn);同時(shí)也使作物生產(chǎn)管理自動(dòng)化,農(nóng)田灌溉調(diào)控自動(dòng)化,畜禽生產(chǎn)管理自動(dòng)化,農(nóng)機(jī)管理與產(chǎn)品加工自動(dòng)化,以及農(nóng)業(yè)科研與服務(wù)系統(tǒng)信息化。農(nóng)業(yè)生產(chǎn)控制需要物聯(lián)網(wǎng)技術(shù),其中包含利用傳感器和網(wǎng)絡(luò)對(duì)信息的采集、分析和控制。如果沒有計(jì)算機(jī),這所有的工作都將由人力來完成,不僅效率低下,而且會(huì)影響農(nóng)作物的品質(zhì)。同時(shí),沒有計(jì)算機(jī)預(yù)報(bào)的臺(tái)風(fēng)、冰雹、洪水可能給農(nóng)業(yè)帶來災(zāi)難性的損失。6.1.1無處不在的計(jì)算機(jī)——日常生活
75現(xiàn)代生活的各行各業(yè)都離不開計(jì)算機(jī):在生物工程中,新興的生物信息工程,DNA基因工程,蛋白質(zhì)結(jié)構(gòu)分析,需要計(jì)算機(jī)的支撐;在土木建筑,機(jī)械設(shè)計(jì),電子開發(fā)設(shè)計(jì)中,計(jì)算機(jī)輔助設(shè)計(jì)(ComputerAidedDesignCAD)利用計(jì)算機(jī)硬軟件系統(tǒng)輔助人們對(duì)產(chǎn)品或工程進(jìn)行設(shè)計(jì),諸如AutoCAD等軟件在工程制圖中被廣泛使用;在行政管理,經(jīng)濟(jì)分析中,諸如SPSS(StatisticalProduct
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025會(huì)計(jì)基礎(chǔ)知識(shí)借款合同的訴訟時(shí)效
- 2025班組施工的合同范本
- 展覽展示租賃合同
- 工程資料合同
- 護(hù)膚品代理合同簡(jiǎn)易范本
- 藝術(shù)品市場(chǎng)監(jiān)管-洞察分析
- 個(gè)人購(gòu)房合同范本標(biāo)準(zhǔn)版
- 2025年度新能源汽車車貸借款合同示范文本4篇
- 2024美容院美容師勞動(dòng)合同范本含知識(shí)產(chǎn)權(quán)歸屬條款3篇
- 2024葡萄酒空運(yùn)及關(guān)稅代理合同3篇
- 2024版?zhèn)€人私有房屋購(gòu)買合同
- 2025年山東光明電力服務(wù)公司招聘筆試參考題庫(kù)含答案解析
- 2024爆炸物運(yùn)輸安全保障協(xié)議版B版
- 《神經(jīng)發(fā)展障礙 兒童社交溝通障礙康復(fù)規(guī)范》
- 2025年中建六局二級(jí)子企業(yè)總經(jīng)理崗位公開招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024年5月江蘇省事業(yè)單位招聘考試【綜合知識(shí)與能力素質(zhì)】真題及答案解析(管理類和其他類)
- 注漿工安全技術(shù)措施
- 《食品與食品》課件
- 2024年世界職業(yè)院校技能大賽“食品安全與質(zhì)量檢測(cè)組”參考試題庫(kù)(含答案)
- 讀書分享會(huì)《白夜行》
- 2023上海高考英語詞匯手冊(cè)單詞背誦默寫表格(復(fù)習(xí)必背)
評(píng)論
0/150
提交評(píng)論