久久久国产精品秘人口麻豆|永久免费AV无语国产|人成电影免费中文字幕|久久AV嫩草影院2
網(wǎng)站首頁
分類導(dǎo)航
試題中心
下載中心
英語學(xué)習(xí)
繽紛校園
考試論壇
網(wǎng)站留言
客服中心
計(jì)算機(jī)
:
等級考試
水平考試
微軟認(rèn)證
思科認(rèn)證
Oracle認(rèn)證
Linux認(rèn)證
外語類:
四 六 級
商務(wù)英語
公共英語
GRE
GMAT
托 福
雅 思
資格類:
公 務(wù) 員
報(bào) 關(guān) 員
司法考試
導(dǎo)游考試
會(huì)計(jì)職稱
注冊會(huì)計(jì)師
學(xué)歷類:
考研入學(xué)
自學(xué)考試
成人高考
法律碩士
MBA/MPA
網(wǎng)絡(luò)課堂
等級考試
水平考試
微軟認(rèn)證
思科認(rèn)證
Oracle認(rèn)證
Linux認(rèn)證
考試動(dòng)態(tài)
|
報(bào)考指南
|
考試大綱
|
歷年真題
|
模擬試題
|
復(fù)習(xí)資料
|
心得技巧
|
考試論壇
您現(xiàn)在的位置:
考試吧(eeeigo.com)
>>
計(jì)算機(jī)等級考試
>>
復(fù)習(xí)資料
>> 文章正文
登錄
|
注冊
|
升級VIP
馬上加入考試吧VIP
博客個(gè)性域名免費(fèi)搶注
特別推薦
最新熱點(diǎn)
·
2006年9月23日計(jì)算機(jī)等級
·
2006年9月計(jì)算等級考試上
·
2006年9月23日全國計(jì)算機(jī)
·
2006年9月全國計(jì)算機(jī)等級
·
考試吧:2006年9月全國計(jì)
·
06年9月計(jì)算機(jī)二級公共基
·
2006年4月計(jì)算機(jī)等級考試
·
2006年全國計(jì)算機(jī)等級考
·
2006年全國計(jì)算機(jī)等級考
·
2006年4月計(jì)算機(jī)等級考試
·
2005年NCRE考試各級別的
·
2004年版南開C語言100題
·
2004年版南開C語言上機(jī)1
·
閱卷教師談等級考試
更多>>
最新推薦
·
2004年版南開C語言100題
·
閱卷教師談等級考試
·
2006年9月計(jì)算機(jī)等級考試
·
2006年計(jì)算機(jī)等級考試二
·
2006年下半年計(jì)算機(jī)等級
·
2006年4月計(jì)算機(jī)等級考試
·
全國計(jì)算機(jī)等級考試承辦
·
05年9月計(jì)算機(jī)等級考試成
·
05年9月等級考試二級C語
·
9月各地計(jì)算機(jī)等級考試報(bào)
·
2005年4月全國計(jì)算機(jī)等級
·
2005年4月計(jì)算機(jī)等級考試
·
2005年4月計(jì)算機(jī)等級考試
·
2005年4月2日二級VFP標(biāo)準(zhǔn)
更多>>
2006年精品輔導(dǎo)課程
C++程序設(shè)計(jì)從零開始之何謂
【字體:
大
小
】
C++程序設(shè)計(jì)從零開始之何謂
http://www.eeeigo.com
來源:中國考試論壇 點(diǎn)擊: 更新:2005-4-18
何謂程序
程序,即過程的順序,準(zhǔn)確地說應(yīng)該是順序排列的多個(gè)過程,其是方法的描述。比如吃菜,先用筷子夾起菜,再用筷子將菜送入嘴中,最后咀嚼并吞下。其中的夾、送、咀嚼和吞下就被稱作命令,而菜則是資源,其狀態(tài)(如形狀、位置等)隨著命令的執(zhí)行而不斷發(fā)生變化。上面就是吃菜這個(gè)方法的描述,也就是吃菜的程序。
任何方法都是為了改變某些資源的狀態(tài)而存在,因此任何方法的描述,也就是程序,也都一定有命令這個(gè)東西以及其所作用的資源。命令是由程序的執(zhí)行者來實(shí)現(xiàn)的,比如上面的吃菜,其中的夾、送等都是由吃菜的人來實(shí)現(xiàn)的,而資源則一定是執(zhí)行者可以改變的東西,而命令只是告訴執(zhí)行者如何改變而已。
電腦程序和上面一樣,是方法的描述,而這些方法就是人期望電腦能做的事(注意不是電腦要做的事,這經(jīng)常一直混淆著許多人),當(dāng)人需要做這些事時(shí),人再給出某些資源以期電腦能對其做正確的改變。如計(jì)算圓周率的程序,其只是方法的描述,本身是不能發(fā)生任何效用的,直到它被執(zhí)行,人為給定它一塊內(nèi)存(關(guān)于內(nèi)存,請參考《C++從零開始(三)》),告訴它計(jì)算結(jié)果的精度及計(jì)算結(jié)果的存放位置后,其才改變?nèi)藶榻o定的這塊內(nèi)存的狀態(tài)以表現(xiàn)出計(jì)算結(jié)果。
因此,對于電腦程序,命令就是CPU的指令,而執(zhí)行者也就由于是CPU的指令而必須是CPU了,而最后的資源則就是CPU可以改變其狀態(tài)的內(nèi)存(當(dāng)然不止,如端口等,不過一般應(yīng)用程序都大量使用內(nèi)存罷了)。所以,電腦程序就是電腦如何改變給定資源(一般是內(nèi)存,也可以是其他硬件資源)的描述,注意是描述,本身沒有任何意義,除非被執(zhí)行。
何謂編程
編程就是編寫程序,即制訂方法。為什么要有方法?方法是為了說明。而之所以要有說明就有很多原因了,但電腦編程的根本原因是因?yàn)檎Z言不同,且不僅不同,連概念都不相通。
人類的語言五花八門,但都可以通過翻譯得到正解,因?yàn)槿祟惿嬖谕粋(gè)四維物理空間中,具有相同或類似的感知。而電腦程序執(zhí)行時(shí)的CPU所能感受到的空間和物理空間嚴(yán)重不同,所以是不可能將電腦程序翻譯成人類語言的描述的。這很重要,其導(dǎo)致了大部分程序員編寫出的拙劣代碼,因?yàn)槿讼氲暮碗娔X想的沒有共性,所以他們在編寫程序時(shí)就隨機(jī)地?zé)o目的地編寫,進(jìn)而導(dǎo)致了拙劣卻可以執(zhí)行的代碼。
電腦的語言就是CPU的指令,因?yàn)镃PU就這一個(gè)感知途徑(準(zhǔn)確地說還有內(nèi)存定位、中斷響應(yīng)等感知途徑),不像人類還能有肢體語言,所以電腦編程就是將人類語言書寫的方法翻譯成相應(yīng)的電腦語言,是一個(gè)翻譯過程。這完全不同于一般的翻譯,由于前面的紅字,所以是不可能翻譯的。
既然不可能翻譯,那電腦編程到底是干甚?考慮一個(gè)木匠,我是客人。我對木匠說我要一把搖椅,躺著很舒服的那種。然后木匠開始刨木頭,按照一個(gè)特殊的曲線制作搖椅下面的曲木以保證我搖的時(shí)候重心始終不變以感覺很舒服。這里我編了個(gè)簡單的程序,只有一條指令——做一把搖著很舒服的搖椅。而木匠則將我的程序翻譯成了刨木頭、設(shè)計(jì)特定的曲木等一系列我看不懂的程序。之所以會(huì)這樣,在這里就是因?yàn)槲疑畹目臻g和木工(是木工工藝,不是木匠)沒有共性。這里木匠就相當(dāng)于電腦程序員兼CPU(因?yàn)樽詈笥赡窘硜碇谱鲹u椅),而木匠的手藝就是CPU的指令定義,而木匠就將我的程序翻譯成了木工的一些規(guī)程,由木匠通過其手藝來實(shí)現(xiàn)這些規(guī)程,也就是執(zhí)行程序。
上面由于我生活的空間和木工(指木工工藝,不是工人)沒有共性,所以是不可能翻譯的,但上面翻譯成功了,實(shí)際是沒有翻譯的。在木工眼中,那個(gè)搖椅只是一些直木和曲木的拼接而已,因?yàn)槟竟た臻g中根本沒有搖椅的概念,只是我要把那堆木頭當(dāng)作搖椅,進(jìn)而使用。如果我把那堆木頭當(dāng)作兇器,則它就是兇器,不是什么搖椅了。
“廢話加荒謬加放屁!”,也許你會(huì)這么大叫,但電腦編程就是這么一回事。CPU只能感知指令和改變內(nèi)存的狀態(tài)(不考慮其他的硬件資源及響應(yīng)),如果我們編寫了一個(gè)計(jì)算圓周率的程序,給出了一塊內(nèi)存,并執(zhí)行,完成后就看見電腦的屏幕顯示正確的結(jié)果。但一定注意,這里電腦實(shí)際只是將一些內(nèi)存的數(shù)值復(fù)制、加減、乘除而已,電腦并不知道那是圓周率,而如果執(zhí)行程序的人不把它說成是圓周率那么那個(gè)結(jié)果也就不是圓周率了,可能是一個(gè)隨機(jī)數(shù)或其他什么的,只是運(yùn)氣極好地和圓周率驚人地相似。
上面的東西我將其稱為語義,即語言的意義,其不僅僅可應(yīng)用在電腦編程方面,實(shí)際上許多技術(shù),如機(jī)械、電子、數(shù)學(xué)等都有自己的語言,而那些設(shè)計(jì)師則負(fù)責(zé)將客戶的簡單程序翻譯成相應(yīng)語言描述的程序。作為一個(gè)程序員是極其有必要了解到語義的重要性的(我在我的另一篇文章《語義的需要》中對代碼級的語義做過較詳細(xì)的闡述,有興趣可以參考之),在后續(xù)的文章中我還將提到語義以及其對編程的影響,如果你還沒有理解編程是什么意思,隨著后續(xù)文章的閱讀應(yīng)該能夠越來越明了。
電腦編程的基礎(chǔ)知識——編譯器和連接器
我從沒見過(不過應(yīng)該有)任何一本C++教材有講過何謂編譯器(Compiler)及連接器(Linker)(倒是在很老的C教材中見過),現(xiàn)在都通過一個(gè)類似VC這樣的編程環(huán)境隱藏了大量東西,將這些封裝起來。在此,對它們的理解是非常重要的,本系列后面將大量運(yùn)用到這兩個(gè)詞匯,其決定了能否理解如聲明、定義、外部變量、頭文件等非常重要的關(guān)鍵。
前面已經(jīng)說明了電腦編程就是一個(gè)“翻譯”過程,要把用戶的程序翻譯成CPU指令,其實(shí)也就是機(jī)器代碼。所謂的機(jī)器代碼就是用CPU指令書寫的程序,被稱作低級語言。而程序員的工作就是編寫出機(jī)器代碼。由于機(jī)器代碼完全是一些數(shù)字組成(CPU感知的一切都是數(shù)字,即使是指令,也只是1代表加法、2代表減法這一類的數(shù)字和工作的映射),人要記住1是代表加法、2是代表減法將比較困難,并且還要記住第3塊內(nèi)存中放的是圓周率,而第4塊內(nèi)存中放的是有效位數(shù)。所以發(fā)明了匯編語言,用一些符號表示加法而不再用1了,如用ADD表示加法等。
由于使用了匯編語言,人更容易記住了,但是電腦無法理解(其只知道1是加法,不知道ADD是加法,因?yàn)殡娔X只能看見數(shù)字),所以必須有個(gè)東西將匯編代碼翻譯成機(jī)器代碼,也就是所謂的編譯器。即編譯器是將一種語言翻譯成另一種語言的程序。
即使使用了匯編語言,但由于其幾乎只是將CPU指令中的數(shù)字映射成符號以幫助記憶而已,還是使用的電腦的思考方式進(jìn)行思考的,不夠接近人類的思考習(xí)慣,故而出現(xiàn)了紛繁復(fù)雜的各種電腦編程語言,如:PASCAL、BASIC、C等,其被稱作高級語言,因?yàn)楸容^接近人的思考模式(尤其C++的類的概念的推出),而匯編語言則被稱作低級語言(C曾被稱作高級的低級語言),因?yàn)樗鼈儾皇呛芊先祟惖乃伎寄J,人類書寫起來比較困難。由于CPU同樣不認(rèn)識這些PASCAL、BASIC等語言定義的符號,所以也同樣必須有一個(gè)編譯器把這些語言編寫的代碼轉(zhuǎn)成機(jī)器代碼。對于這里將要講到的C++語言,則是C++語言編譯器(以后的編譯器均指C++語言編譯器)。
因此,這里所謂的編譯器就是將我們書寫的C++源代碼轉(zhuǎn)換成機(jī)器代碼。由于編譯器執(zhí)行一個(gè)轉(zhuǎn)換過程,所以其可以對我們編寫的代碼進(jìn)行一些優(yōu)化,也就是說其相當(dāng)于是一個(gè)CPU指令程序員,將我們提供的程序翻譯成機(jī)器代碼,不過它的工作要簡單一些了,因?yàn)閺娜祟惖乃伎挤绞睫D(zhuǎn)成電腦的思考方式這一過程已經(jīng)由程序員完成了,而編譯器只是進(jìn)行翻譯罷了(最多進(jìn)行一些優(yōu)化)。
還有一種編譯器被稱作翻譯器(Translator),其和編譯器的區(qū)別就是其是動(dòng)態(tài)的而編譯器是靜態(tài)的。如前面的BASIC的編譯器在早期版本就被稱為翻譯器,因?yàn)槠涫窃谶\(yùn)行時(shí)期即時(shí)進(jìn)行翻譯工作的,而不像編譯器一次性將所有代碼翻成機(jī)器代碼。對于這里的“動(dòng)態(tài)”、“靜態(tài)”和“運(yùn)行時(shí)期”等名詞,不用刻意去理解它,隨著后續(xù)文章的閱讀就會(huì)了解了。
編譯器把編譯后(即翻譯好的)的代碼以一定格式(對于VC,就是COFF通用對象文件格式,擴(kuò)展名為.obj)存放在文件中,然后再由連接器將編譯好的機(jī)器代碼按一定格式(在Windows操作系統(tǒng)下就是Portable Executable File Format——PE文件格式)存儲(chǔ)在文件中,以便以后操作系統(tǒng)執(zhí)行程序時(shí)能按照那個(gè)格式找到應(yīng)該執(zhí)行的第一條指令或其他東西,如資源等。至于為什么中間還要加一個(gè)連接器以及其它細(xì)節(jié),在后續(xù)文章中將會(huì)進(jìn)一步說明。
也許你還不能了解到上面兩個(gè)概念的重要性,但在后續(xù)的文章中,你將會(huì)發(fā)現(xiàn)它們是如此的重要以至于完全有必要在這嘮叨一番。
文章錄入:xihuyu2000 責(zé)任編輯:xihuyu2000
上一篇文章:
計(jì)算機(jī)三級PC技術(shù)上機(jī)編程題10道
下一篇文章:
常用算法設(shè)計(jì)方法
【
發(fā)表評論
】【
加入收藏
】【
告訴好友
】【
打印此文
】【
關(guān)閉窗口
】
相關(guān)文章
網(wǎng)絡(luò)安全技術(shù)的局限與未來發(fā)展趨勢
思科CCSP認(rèn)證考試變動(dòng)詳情
截止至2005年8月1日全球CCIE人數(shù)統(tǒng)計(jì)
感悟日記:我男人的CCNA歷程(不斷更新)
我男人的CCNA歷程,我的感悟日記(29)
我男人的CCNA歷程,我的感悟日記(28)
我男人的CCNA歷程,我的感悟日記(27)
我男人的CCNA歷程,我的感悟日記(26)
我男人的CCNA歷程,我的感悟日記(25)
我男人的CCNA歷程,我的感悟日記(24)
我男人的CCNA歷程,我的感悟日記(23)
我男人的CCNA歷程,我的感悟日記(22)
版權(quán)聲明
如果本網(wǎng)站所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系
,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本網(wǎng)內(nèi)容,請注明出處。
發(fā)表評論
關(guān)于本站
網(wǎng)站聲明
廣告服務(wù)
聯(lián)系方式
付款方式
站內(nèi)導(dǎo)航
客服中心
友情鏈接
Copyright © 2004-2006
考試吧
(
eeeigo.com
) All Rights Reserved
中國科學(xué)院研究生院中關(guān)村園區(qū)(北京市海淀區(qū))