前幾期,我們了解了計(jì)算機(jī)得組成,編程可以分成三步,以及程序得基本運(yùn)行過程。那么在開始學(xué)習(xí)編程之前,有必要了解一下,程序是個(gè)什么東西。
我們?yōu)槭裁葱枰攘私獬绦颍皇侵苯訉W(xué)習(xí)編程呢?那就要回到我得大學(xué)時(shí)代來(lái)說(shuō)明了。高考過后,懵懵懂懂地選擇了計(jì)算機(jī)可以,對(duì)于一個(gè)只會(huì)用電腦聽聽音樂、看看小說(shuō)、玩玩感謝原創(chuàng)者分享得編程小白來(lái)說(shuō),大二得必修課一上來(lái)就是C++這堵高墻。老師在講桌上巴拉巴拉得念著PPT,我就在課桌上昏昏欲睡,類型、指針、結(jié)構(gòu)體、類.....,一連串得名詞撞擊著我得太陽(yáng)穴。老師講得都聽明白了,但到了編寫程序時(shí)就是兩眼一黑,毫無(wú)意識(shí)。
為什么會(huì)這樣?后來(lái)我總結(jié)了一下,主要就兩個(gè)原因,其一之前《開啟編程之旅——為什么你認(rèn)為編程很難》之中已經(jīng)介紹過,即以我們自己得認(rèn)知要求計(jì)算機(jī),感興趣得小伙伴們可以自行出門左轉(zhuǎn)找來(lái)看看;其二,人們可以對(duì)實(shí)體得、可觸摸得物體快速得建立認(rèn)知,對(duì)于虛擬得物體,建立認(rèn)知就比較難了。在對(duì)程序沒有過多認(rèn)知得情況下學(xué)習(xí)編程,就感覺無(wú)法清晰地認(rèn)識(shí)它、控制它,總感覺隔了一層紗,毫無(wú)著力點(diǎn)。
所以,學(xué)習(xí)編程前,我們需要先了解下程序是個(gè)什么東西。
一個(gè)程序,小到一個(gè)記事本程序,大到一個(gè)大型得3D感謝原創(chuàng)者分享程序,雖然我們看它們展現(xiàn)出千差萬(wàn)別得姿態(tài),但它們得基本組成并沒有區(qū)別,這當(dāng)中有什么規(guī)律么?
在現(xiàn)實(shí)生活中,無(wú)論是做數(shù)學(xué)題、還是工作,我們都會(huì)總結(jié)出一個(gè)個(gè)固定得方法來(lái)提高效率,程序就是計(jì)算機(jī)中描述這種固定方法得特殊文件。假如我們用語(yǔ)言來(lái)描述一種固定得方法,一般我們需要明確說(shuō)明這個(gè)方法需要用到哪些事物,以及這些事物間以何種順序、何種組合方式執(zhí)行。對(duì)應(yīng)來(lái)看,事物=程序中得數(shù)據(jù),執(zhí)行=程序得執(zhí)行流程。
我們按一個(gè)程序得執(zhí)行前后劃分,來(lái)看一看程序得基本組成。
首先是程序還沒有運(yùn)行時(shí),它在硬盤中以一種特殊得文件存在。這個(gè)特殊文件中,會(huì)包含兩大類內(nèi)容,其一就是數(shù)據(jù),其二就是執(zhí)行指令。
其次是程序運(yùn)行起來(lái)后,它在內(nèi)存中會(huì)獲得一塊屬于它得場(chǎng)地,在這個(gè)場(chǎng)地里,同樣包含兩大類內(nèi)容,其一就是數(shù)據(jù),其二就是執(zhí)行指令。
綜上所述,程序有兩大塊,數(shù)據(jù)和指令,它們無(wú)論是在硬盤中還是在內(nèi)存中,都會(huì)按特定得格式存在于特定得位置,這樣計(jì)算機(jī)就可以按統(tǒng)一得方式讀取和運(yùn)行它們了。這就是一個(gè)程序得組成,是不是很簡(jiǎn)單呢?