欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
C 編程雜談之一:編譯器
VCKBASE Online Help Journal No.12  

C++編程雜談之一:編譯器
作者/xulion
    網(wǎng)上有很多各種編譯器的優(yōu)劣比較的東西,我寫(xiě)這些東西并不是想支持或否定某些東西,因為我始終認為在編程的領(lǐng)域中,我只是一個(gè)初學(xué)者,并沒(méi)有資格來(lái)評判什么(況且我也不想去評判),我只是想講述一下個(gè)人學(xué)習道路上的感受。
    學(xué)編程的一個(gè)必備的條件是你要有一個(gè)實(shí)踐的平臺--一個(gè)相應的編譯器,沒(méi)有這個(gè)條件,一切都是空談。選擇編譯器之前,首先選擇的是語(yǔ)言(這個(gè)我想不必更多的解釋了),這里我假設你選擇了C或C++。
    現在最流行的編譯器恐怕應該是微軟的VC了,在繼續之前,我想再提一下一個(gè)重點(diǎn):VC是一個(gè)編譯器,只是一個(gè)用來(lái)把C++的代碼生成為可執行文件的工具而已(當然我說(shuō)的有一些簡(jiǎn)化,但是認識這一點(diǎn)很重要,雖然你可以在很多地方看到類(lèi)似的話(huà),但我還是要提,我希望每一個(gè)學(xué)習編程的人最好從一開(kāi)始就知道它,而不是走了很多彎路以后再來(lái)醒悟)。另外一種強大的編譯器就是Borland C++ Builder(后面我都將以BCB來(lái)代替)。
    如果你在使用VC,我想問(wèn)一下,你為什么用它?我想很多人根本無(wú)法回答這個(gè)問(wèn)題,大多無(wú)法回答的原因很明顯:1)聽(tīng)說(shuō)的,VC是最好的;2)微軟的產(chǎn)品;3)只知道這個(gè)。當然更有甚者是一開(kāi)始就把VC作為一門(mén)語(yǔ)言來(lái)學(xué),呵呵,我相信一定有這樣的人的!每當談及這些問(wèn)題的時(shí)候,我會(huì )覺(jué)得很多時(shí)候,軟件行業(yè)中技術(shù)并不是優(yōu)秀軟件的全部,VC一定是最好的么?VC為什么會(huì )這么成功?我不得不佩服微軟的商業(yè)策略。關(guān)于VC是如何成功的,我強烈推薦一篇文章--《C/C++圣戰》,作者李維,《程序員》雜志2001.10月。
    一個(gè)編譯器究竟帶給我們什么?在早期,編譯器其實(shí)就是一個(gè)簡(jiǎn)單的文本編輯器+庫(頭)文件+編譯程序,很多早期的程序員會(huì )使用一些其他的編輯器來(lái)書(shū)寫(xiě)自己的程序,然后再使用編譯器來(lái)編譯?,F在我們使用的編譯器通常稱(chēng)為集成開(kāi)發(fā)環(huán)境(IDE),這一類(lèi)型的開(kāi)發(fā)環(huán)境為我們提供了很多東西:方便的開(kāi)發(fā)方式、完善的幫助系統、豐富的庫和一些特有的特性。
在某個(gè)特定的平臺下編程你需要關(guān)心的主要有兩件事情:1.是否支持你所使用的語(yǔ)言;2.平臺特性(WINDOWS下platform sdk為我們提供了一切)。在WINDOWS平臺下,我們可以使用C++來(lái)編程,剩下的就是平臺特性了。WINDOWS為我們提供了一系列豐富的API函數,而且這些函數在不同的WINDOWS版本上會(huì )略有不同。早期的WIDNOWS編譯器就是在單純的C/C++編譯器中對平臺特性提供支持,并沒(méi)有提供更多的東西,如果你只打算使用WINDOWS API的話(huà),編譯器的選擇可能只是編譯優(yōu)化程度的選擇而已(也許你該選擇BCB,據說(shuō)要比VC優(yōu)化的好一些,我沒(méi)有真實(shí)的數據來(lái)對比,但BORLAND公司的編譯器優(yōu)化一向被認為是優(yōu)秀的)。真正產(chǎn)生變化的是類(lèi)庫封裝的開(kāi)始。微軟提供了MFC類(lèi)庫,BORLAND提供了OWL類(lèi)庫。所謂類(lèi)庫就是提供了對WINDOWS API的一種封裝,相信每個(gè)寫(xiě)過(guò)WINDOWS API程序的人都有一個(gè)體會(huì ),一個(gè)最簡(jiǎn)單的WINDOWS窗口程序都需要幾十行代碼,這足以令初學(xué)者望而卻步,相比之下DOS下的經(jīng)典例程"hello world"卻只需要短短的一行代碼(所以DOS時(shí)代才令我懷念--簡(jiǎn)單,明了。呵呵)。類(lèi)庫的出現正是為了解決這個(gè)問(wèn)題,WINDOWS類(lèi)庫主要是對WINDOWS下的API函數進(jìn)行封裝,來(lái)達到這樣的目的:1)簡(jiǎn)化我們編程過(guò)程中的重復的簡(jiǎn)單工作(只創(chuàng )建窗口、建立消息環(huán)這樣的單調工作);2)使我們的工作更符合面向對象的風(fēng)格。如一個(gè)MFC中的窗口:
CWnd MyWindow;
MyWindow.Create(…);//這里省略了參數
    我們只需要創(chuàng )建一個(gè)窗口對象,通過(guò)對象的Create方法來(lái)創(chuàng )建窗口就可以了,完全不必再去關(guān)心底層的一些東西,整個(gè)過(guò)程就象工廠(chǎng)的一個(gè)生產(chǎn)過(guò)程--這也正是面向對象的精神所在(如果你現在不能體會(huì )這一點(diǎn),不用著(zhù)急,以后慢慢的自然會(huì )明白的)。
    VC和BCB采用了各自不同的方式(MFC和OWL)來(lái)封裝,大家采用的手段各有所長(cháng),很難說(shuō)哪個(gè)更好,唯一讓MFC占優(yōu)的應該是操作系統的優(yōu)勢了。相比之下,我個(gè)人認為起碼在程序生成的環(huán)節上,BCB要好一些(其實(shí)BCB我個(gè)人也是瀏覽過(guò)一下,總共時(shí)間不過(guò)2-3天,只是做一次了解而已),在VC中,如果你為一個(gè)通用控件如CListCtrl關(guān)聯(lián)一個(gè)變量,寫(xiě)過(guò)程序的人應該知道,編譯器會(huì )作為一個(gè)類(lèi)成員變量生成,而在BCB中,這個(gè)變量是以類(lèi)成員指針的方式存在的,有什么區別呢?大量的局部變量會(huì )造成堆棧的溢出,這也是為什么你無(wú)法創(chuàng )建一個(gè)char largestr[100000000]的原因了。如果你在VC的程序中使用了很多這樣的變量的話(huà),天知道會(huì )怎么樣(雖然堆棧中的變量存取更有效率)。
    在一段時(shí)間以前,我也具有很多非常糟糕而幼稚的想法,直到某一天,我明白了很多。其實(shí)許多學(xué)計算機的人都會(huì )有相同的感受,以下的一段摘自候捷先生的散文:
南宗與北宗,頓悟與漸悟
   佛法有頓悟,學(xué)問(wèn)可沒(méi)有。如果有人說(shuō),我突然在某一天對Java開(kāi)悟了,對OO開(kāi)悟了,對MFC開(kāi)悟了...,我想那是他刻意(為了炫耀)或非刻意(因為遺忘)地忽略了他所謂的「悟」那一天之前的所有努力。是的,那叫漸悟,不是頓悟。
Inside OLE 一書(shū)作者 Kraig Brockschmidt 在他的序里面有這段話(huà):
1993年一月的某個(gè)周日下午,當我正做著(zhù)與OLE全然無(wú)關(guān)的事情時(shí),我突然獲得了所謂的 OLE 涅磐狀態(tài)。所有關(guān)於OLE的支支節節突然全都歸定位。在六個(gè)月的模糊心智之後,我突然看清楚了OLE。
    Essential COM一書(shū)作者Don Box在他的序里面亦有一段類(lèi)似的話(huà):
幸運的是有一天(1998年八月八日),突然像神跡一般,COM對我變得再明白不過(guò),我終於了解了COM的動(dòng)機。如何把這個(gè)programming model應用在每天遇到的程式設計問(wèn)題中,也因此顯得再明白不過(guò)。
    聽(tīng)起來(lái)都是頓悟的例子。難道學(xué)習COM/OLE特別需要宗教信仰嗎?我想是因為這些技術(shù)特別需要高度抽象思考,使得霍然開(kāi)朗後的喜悅巨大到令人覺(jué)得是一種「突然的神跡降臨」。其實(shí)你我都明白不過(guò),知識點(diǎn)的突破,是靠知識面的累積。
    很多時(shí)候,當你回頭去想以前的不明白問(wèn)題的時(shí)候,你是否有這樣的感覺(jué)?我相信答案是肯定的。我想問(wèn)題的關(guān)鍵就在上面一段話(huà)的結尾:知識點(diǎn)的突破,是靠知識面的累積 對我來(lái)講,當我接觸了BCB之后的一段時(shí)間,我突然就明白了,它和VC僅僅是提供了一個(gè)封裝了不同類(lèi)庫的編譯器而已,真正關(guān)鍵的問(wèn)題是C++呀!也正是在這以后,我才真正開(kāi)始入門(mén),而這都是我學(xué)習編程一年多以后的事情了。如果沒(méi)有那個(gè)偶然的機會(huì ),我接觸過(guò)一次BCB,也許到現在我還無(wú)法分清楚那些是VC提供的、那些是標準C++提供的。與C++相比,MFC和OWL變得微不足道了(我沒(méi)有小看它們的意思)。
    我希望所有的人都不要重復我走過(guò)的學(xué)習之路,我的路是曲折的,至少在學(xué)習的過(guò)程中我浪費了很多時(shí)間(我曾經(jīng)幼稚的認為現在的編程只是進(jìn)行功能的擴充而已,如WINDOWS SDK等,完全忽略了面向對象的思想存在)。我一直認為VC是一個(gè)優(yōu)秀的編譯器,但是當你構建一個(gè)MFC程序的時(shí)候,很多書(shū)籍介紹的入門(mén)方式顯得相對松散,給你的感覺(jué)是在使用一個(gè)龐大的WINDOWS函數庫而不是一個(gè)類(lèi)庫,許多教科書(shū)忽略了MFC中面向對象概念的加強,而僅僅是一些功能上的實(shí)現,而在BCB中,面向對象的思想相對要強化一些。
    我寫(xiě)這些并不是想說(shuō)明什么樣的編譯器好和什么樣的編譯器不好,最終的選擇權可能不在你我的手中,很多時(shí)候是平臺或其他因素的限制而導致你必須使用某種編譯器。我只是想說(shuō)明一些思想,因為我無(wú)法把我想說(shuō)明的這些問(wèn)題提煉出來(lái),所以松散的寫(xiě)了很多,最終我想說(shuō)的就是不要因為一些不必要的原因去拒絕--Never!
以上內容僅代表個(gè)人觀(guān)點(diǎn),如有不當,歡迎討論。









1997-2000 VCKBASE.COM All Rights Reserved.
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
C、C++、API、SDK、IDE、VC++、MSDN、MFC、OWL、VCL、ATL 、BCB
SDK與MFC有什么區別
C++、VC++、MFC的區別和聯(lián)系
VS2010/MFC編程入門(mén)之前言
7款易上手C語(yǔ)言編程軟件推薦
使用Code::Blocks編譯VC程序(一)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久