什么是計(jì)算機(jī)程序計(jì)算機(jī)程序的數(shù)據(jù)
計(jì)算機(jī)程序或者軟件程序是指一組指示計(jì)算機(jī)每一步動(dòng)作的指令,通常用某種程序設(shè)計(jì)語言編寫,運(yùn)行于某種目標(biāo)體系結(jié)構(gòu)上。那么你對(duì)計(jì)算機(jī)程序了解多少呢?以下是由學(xué)習(xí)啦小編整理關(guān)于什么是計(jì)算機(jī)程序的內(nèi)容,希望大家喜歡!
計(jì)算機(jī)程序的簡介
計(jì)算機(jī)程序(英語:Computer program),也稱為軟件(英語:software),簡稱程序(英語:Program)是指一組指示計(jì)算機(jī)或其他具有信息處理能力裝置每一步動(dòng)作的指令,通常用某種程序設(shè)計(jì)語言編寫,運(yùn)行于某種目標(biāo)體系結(jié)構(gòu)上。打個(gè)比方,一個(gè)程序就像一個(gè)用漢語(程序設(shè)計(jì)語言)寫下的紅燒肉菜譜(程序),用于指導(dǎo)懂漢語和烹飪手法的人(體系結(jié)構(gòu))來做這個(gè)菜。
腳本程序
通常,計(jì)算機(jī)程序要經(jīng)過編譯和鏈接而成為一種人們不易理解而計(jì)算機(jī)理解的格式,然后運(yùn)行。未經(jīng)編譯就可運(yùn)行的程序通常稱之為腳本程序。
程序運(yùn)行
為了一個(gè)程序運(yùn)行,計(jì)算機(jī)加載程序代碼,可能還要加載數(shù)據(jù),從而初始化成一個(gè)開始狀態(tài),然后調(diào)用某種啟動(dòng)機(jī)制。在最低層上,這些是由一個(gè)引導(dǎo)序列開始的。
在大多數(shù)計(jì)算機(jī)中,操作系統(tǒng)例如Windows等,加載并且執(zhí)行很多程序。在這種情況下,一個(gè)計(jì)算機(jī)程序是指一個(gè)單獨(dú)的可執(zhí)行的映射,而不是當(dāng)前在這個(gè)計(jì)算機(jī)上運(yùn)行的全部程序。
體系結(jié)構(gòu)
在一臺(tái)基于最常見的馮諾依曼體系結(jié)構(gòu)(又稱Harvard Architecture)的計(jì)算機(jī)上,程序從某種外部設(shè)備,通常是硬盤,被加載到計(jì)算機(jī)里。 如果計(jì)算機(jī)選擇馮諾依曼體系結(jié)構(gòu),那么程序就被加載入內(nèi)存。 指令序列順序執(zhí)行,直到一條跳轉(zhuǎn)或轉(zhuǎn)移指令被執(zhí)行,或者一個(gè)中斷出現(xiàn)。所有這些指令都會(huì)改變指令寄存器的內(nèi)容。
基于這種體系計(jì)算機(jī)如果沒有程序的支持將無法工作。一個(gè)計(jì)算機(jī)程序是一系列指令的集合。
程序里的指令都是基于機(jī)器語言;程序通常首先用一種計(jì)算機(jī)程序設(shè)計(jì)語言編寫,然后用編譯程序或者解釋執(zhí)行程序翻譯成機(jī)器語言。 有時(shí),程序也可以用匯編語言編寫,匯編語言實(shí)質(zhì)就是表示機(jī)器語言的一組記號(hào)-在這種情況下,用于翻譯的程序叫做匯編程序(Assembler)。
計(jì)算機(jī)程序的數(shù)據(jù)
程序已經(jīng)被定義了。如何定義數(shù)據(jù)呢?數(shù)據(jù)可以被定義為被程序處理的信息。當(dāng)我們考慮到整個(gè)計(jì)算機(jī)系統(tǒng)時(shí),有時(shí)程序和數(shù)據(jù)的區(qū)別就不是那么明顯了。中央處理器有時(shí)有一組微指令控制硬件,數(shù)據(jù)可以是一個(gè)有待執(zhí)行的程序(參見腳本編程語言),程序可以編寫成去編寫其它的程序;所有這些例子都使程序和數(shù)據(jù)的比較成為一種視角的選擇。有人甚至斷言程序和數(shù)據(jù)沒有區(qū)別。
編寫一個(gè)程序去生成另外一個(gè)程序的過程被稱之為原編程(Metaprogramming)。它可以被應(yīng)用于讓程序根據(jù)給定數(shù)據(jù)生成代碼。單一一個(gè)程序可能不足以表示給定數(shù)據(jù)的所有方面。讓一個(gè)程序去分析這個(gè)數(shù)據(jù)并生成新的程序去處理數(shù)據(jù)所有的方面可能會(huì)容易一些。Lisp就是一例支持這種編程模式的程序語言。
在神經(jīng)網(wǎng)絡(luò)里儲(chǔ)存的權(quán)重是一種數(shù)據(jù)。正是這些權(quán)重?cái)?shù)據(jù),跟網(wǎng)路的拓?fù)浣Y(jié)構(gòu)一起,定義了網(wǎng)絡(luò)的行為。人們通常很難界定這些數(shù)據(jù)到底表示什么或者它們是否可以由程序來代替。這個(gè)例子以及跟人工智能相關(guān)的其它一些問題進(jìn)一步考驗(yàn)程序和數(shù)據(jù)的區(qū)別。
算法
算法指解決某個(gè)問題的嚴(yán)格方法,通常還需輔以某種程度上的運(yùn)行性能分析。算法可以是純理論的,也可以由一個(gè)計(jì)算機(jī)程序?qū)崿F(xiàn)。理論算法通常根據(jù)復(fù)雜性分為不同類別;實(shí)現(xiàn)的算法通常經(jīng)過頗析(Profiling)以測(cè)試其性能。請(qǐng)注意雖然一個(gè)算法在理論上有效可行,但是一個(gè)糟糕的實(shí)現(xiàn)仍會(huì)浪費(fèi)寶貴的計(jì)算機(jī)資源。(更詳細(xì)信息,參見算法信息論,Algorithmic Information Theory)
開發(fā)
編寫程序是以下步驟的一個(gè)往復(fù)過程:編寫新的源代碼,測(cè)試、分析和提高新編寫的代碼以找出語法和語義錯(cuò)誤。從事這種工作的人叫做程序設(shè)計(jì)員??趨多樣,由此產(chǎn)生了不同種類的程序設(shè)計(jì)員,每一種都有更細(xì)致的分工和任務(wù)。軟件工程師和系統(tǒng)分析員就是兩個(gè)例子。編程的長時(shí)間過程被稱之為“軟件開發(fā)”或者軟件工程。后者也由于這一學(xué)科的日益成熟而逐漸流行。
因此,如今程序設(shè)計(jì)員可以指某一領(lǐng)域的編程專家,也可以泛指軟件公司里編寫一個(gè)復(fù)雜軟件系統(tǒng)里某一塊的一般程序員。一組為某一軟件公司工作的程序員有時(shí)會(huì)被指定一個(gè)程序組長或者項(xiàng)目經(jīng)理,用以監(jiān)督項(xiàng)目進(jìn)度和完成日期。大型軟件通常經(jīng)歷由系統(tǒng)設(shè)計(jì)師的掌握的一個(gè)長時(shí)間的設(shè)計(jì)階段,然后才交付給開發(fā)人員。牛仔式的編程(未經(jīng)詳細(xì)設(shè)計(jì))是不為人所齒的。
兩種當(dāng)今常見的程序開發(fā)方式之一是項(xiàng)目組開發(fā)方式。使用這種方式項(xiàng)目組里每一個(gè)成員都能對(duì)項(xiàng)目的進(jìn)行發(fā)表意見,而由其中的某一個(gè)人協(xié)調(diào)不同意見。這樣的項(xiàng)目組通常有10個(gè)左右的成員,這樣做是為了便于管理。第二種開發(fā)方式是結(jié)對(duì)開發(fā)。
看過“計(jì)算機(jī)程序的數(shù)據(jù)”的人還看了:
2.國際技術(shù)轉(zhuǎn)讓加設(shè)備進(jìn)口合同范本