• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            思勤無邪

            上學時,因我年齡最小,個頭也最小,上課時,就像大猩猩堆里的猴一般。如今,這猴偶爾也把最近的一些情況寫在這里。

               :: 首頁 :: 聯系 :: 聚合  :: 管理
              132 Posts :: 1 Stories :: 178 Comments :: 0 Trackbacks

            公告

                 吾日常三省吾身,曰思、曰勤、曰無邪。

            積分與排名

            • 積分 - 183710
            • 排名 - 141

            最新隨筆

            最新評論

            閱讀排行榜

            評論排行榜

            這個問題很奇怪嗎?大概是。不過,當我又看到有人發表諸如“Windows/Office是VC編寫的”或者“VC是無所不能的”這種高論,我就禁不住這樣問自己。

            Visual C++究竟是什么?你平常在其中工作的那個標記著“Microsoft Visual C++”的窗口,真的就代表Visual C++嗎?

            按照我的理解,Visual C++是一個開發工具包,它大概可以分成三個主要的部分:

            1. Developer Studio,這是一個集成開發環境,我們日常工作的99%都是在它上面完成的,再加上它的標題赫然寫著“Microsoft Visual C++”,所以很多人理所當然的認為,那就是Visual C++了。其實不然,雖然Developer Studio提供了一個很好的編輯器和很多Wizard,但實際上它沒有任何編譯和鏈接程序的功能,真正完成這些工作的幕后英雄后面會介紹。我們也知道,Developer Studio并不是專門用于VC的,它也同樣用于VB,VJ,VID等Visual Studio家族的其他同胞兄弟。所以不要把Developer Studio當成Visual C++, 它充其量只是Visual C++的一個殼子而已。這一點請切記!

            2. MFC。從理論上來講,MFC也不是專用于Visual C++,Borland C++,C++Builder和Symantec C++同樣可以處理MFC。同時,用Visual C++編寫代碼也并不意味著一定要用MFC,只要愿意,用Visual C++來編寫SDK程序,或者使用STL,ATL,一樣沒有限制。不過,Visual C++本來就是為MFC打造的,Visual C++中的許多特征和語言擴展也是為MFC而設計的,所以用Visual C++而不用MFC就等于拋棄了Visual C++中很大的一部分功能。但是,Visual C++也不等于MFC。

            3. Platform SDK。這才是Visual C++和整個Visual Studio的精華和靈魂,雖然我們很少能直接接觸到它。大致說來,Platform SDK是以Microsoft C/C++編譯器為核心(不是Visual C++,看清楚了),配合MASM,輔以其他一些工具和文檔資料。上面說到Developer Studio沒有編譯程序的功能,那么這項工作是由誰來完成的呢?是CL,是NMAKE,和其他許許多多命令行程序,這些我們看不到的程序才是構成Visual Studio的基石。

            為什么我會覺得“Windows是用VC開發的”這種說法很奇怪?因為它太含糊了。用VC,可以編寫MFC應用,也可以編寫純SDK程序,不論哪一種方式,都不一定是非VC不可。只要樂意,我完全可以用UltraEdit來寫出一個MFC程序,再用CL編譯之,沒有必要一定動用VC這個大家伙。而且有許多黑客和買不起Visual Studio的人就是這么干的!用SDK編程就更不需要VC了,Down一個Borlan C++ Compiler下來,或者用lcc之類的編譯器,同樣可以達到目的。再說了,Windows可不是一個單純的產品。用VC來編寫Windows外圍程序是完全不成問題的,可是操作系統的核心部分呢?就算可以用VC來編寫代碼,調試怎么辦?VC自身的調試器對一般的應用功能是夠強大的,可是對于系統級的調試根本無能為力,因為這個調試器本身就是依賴于操作系統的。只有系統級的調試程序如debug,SoftIce和Wdebug這些工具才能完成如此重大的任務。

            從歷史上來看,Visual C++ 1.0的出現晚于Windows 3.0,而且那時候的MFC只有一個雛形而已,用來開發操作系統根本是不可能的事情。在Visual C++ 1.0的前面倒是有一個Microsoft C/C++ 7.0,但是它整體水平不如Borland C++ 3.1,在擴展內存管理方面的功能又不如Watcom C++ ,所以一直沒有占據很大的市場。它現在已經不作為單獨的產品,但仍然作為Platform SDK的主要組成部分而存在于Visual Studio產品中,而且其功能比過去也不可同日而語了。到Windows 95問世的時候,MFC仍然在盡力追趕操作系統的功能。應該說Visual C++ 5.0是一個轉折點,一方面MFC已經發展比較完善,另一方面,操作系統的基本結構也已經穩定,后面就主要著眼于系統整合與完善作為商務平臺的功能。已經穩定的系統不可能再進行翻天覆地的修改,所以,我比較能夠接受“Windows系統是用Microsoft C++和MASM作為編譯器完成的”這種說法。研究Windows的系統文件可以看出,很多文件顯示出來的Linker Version明顯是Microsoft C++編譯器。至于代碼是用什么編寫的?我不知道,也不想知道,除了Developer Studio的編輯器之外,任何好的文本編輯器都能夠做到這一點。

            Visual C++是無所不能的嗎?唔,最好也是分開來說。Developer Studio肯定不是—它只是個外殼而已。MFC呢?也不是。一方面它是對API的封裝,離開了API它就什么也干不了;另一方面,MFC對API的封裝也不夠全面,有些時候還是要直接調用API函數才能夠“為所欲為”。至于Platform SDK,倒真的可以說它幾乎是無所不能的。不過,過分強調這一點并沒有太大意義。只要有一套完整的編譯器,和必須的支持文件,其他開發工具也可以說是“無所不能”的,比如Borland C++ Compiler或者lcc都可。

            老實說,我并不喜歡“無所不能”這類字眼。關鍵在于各人的理解不同。如果我較起真來,說能不能寫個VC程序讓電腦拿起鼠標砸向我不喜歡的老板,你說它能辦得到嗎?所謂的“無所不能”究竟有何意義?讓我用VC寫一個Server,能在普通工作站上支持每秒幾千萬的訪問量,殺了我也辦不到,不管VC的優化手段是多么有效。在具體的平臺上,在特定的操作系統中,不論多么強大的工具,最終還是要受到平臺和系統本身的限制。大家應該知道這個悖論吧:上帝能否制造出一塊他自己也舉不起來的石頭?

            我也常??吹?#8220;MFC永遠不會過時”或者“C++是不會滅亡的”這種發言。我理解發言人的心情,不過這種說法絕不客觀。一種語言也好,一個Application Framework也罷,它們之所以有今天的地位,并不是純粹自然形成的,有許多復雜因素的作用,也有時勢造英雄的理由在內,所謂“居高聲自遠,非是籍秋風”是也。歷史的舞臺從來不是為某人專設,即使真有所謂萬古長青的怪胎,恐怕也正應了那句老話:“眾人都死了,只剩咱們兩個老妖精,有什么意思!”我們現在使用的語言,不論Basic,Pascal還是C++,甚至如日中天的Java和C#,終究都會有功成身退的一天。這并不是我們的損失,相反,薪盡火傳,一種語言中好的,合理的因素,肯定會被后續者所繼承和發揚,自然界的新陳代謝本該如此。

            天空沒有飛翔的痕跡,而飛鳥已經飛過。一種語言只要曾經在歷史上留下濃墨重彩的一筆,完成它“為先賢繼圣學,為萬世開太平”的歷史使命(有點夸張),這就夠了,何必纏綿不舍作兒女之態!不知道我有生之年會不會看到C++的消亡,如果真有這么一天,我會拍手歡呼,因為這說明已經有了另外一種更新更好的語言來代替它(或許是幾種)。不過照我猜想,像C++這種轟動武林驚萬教的語言,其滅亡恐怕也不會是悄無聲息,而多半屬于“始皇既沒,余威震于殊俗”那種情況。

            最后請允許我發表一點感慨。語言的優劣其實是一個無需討論的問題,個人的經歷和所處環境在很大程度上就決定了你對某種語言的看法,這是很個人的東西。好比碰到一位法國朋友,他多半會自豪的告訴你:法語是世界上最好最優美的語言。對這種說法我會微笑表示贊同,并且欣賞他的民族自豪感,而不會覺得這是對漢語或者英語的貶低—雖然我心底里一直深信,漢語才是世界上最好的語言。當然,如果他對我說“你們那些破爛中文是些什么玩意”,那我可能就是另外一種反應了。

            說了這么多,意思無非是想少些無謂的爭論罷了。常在論壇上看到“XXX是最好的語言(編譯器),XX是什么東西”之類發言。我不想和他們爭論,一個人對一樣東西既然完全失去了接觸和了解的興趣,那么說什么大概都沒有用了。只是覺得遺憾而已。人世間的隔膜與誤會,大多是由于彼此不了解而引起,而多少悲劇正是由此而發生呵。在編程的世界里大概不會這么嚴重,不過言為心聲,多少也可看出個人的品行。如果某個人A常在我面前說B的壞話,那么我對B不會有惡感,相反我對A的印象分要減去20。自己不了解的人或者事,不管,不說,也就是了。何至于惡言相加呢。

            我參加工作的時間不長,各種各樣的軟件工程師倒是見過不少。就我看到的情況,程序員實在是很沉默寡言的一類人,平時總是表現的溫文爾雅,有時候卻難得的能見到他們大發脾氣,扔鼠標,砸鍵盤,捶顯示器,干什么的都有(這種情況多半是遇到沒有辦法除掉的Bug了)。面對親人和朋友的時候他們有時候會選擇長久的沉默,只有坐到機器前面時才會發現他們的癡迷和狂熱。雖然普遍的不善言談,但是他們似乎總能在游戲或者網絡中找到發泄的方式。所以我在各種各樣的論壇上看到語法錯誤不忍卒讀的文字,看到互相指責乃至于人身攻擊的情況,甚至看到許多不雅的詞匯,雖然心情無論如何愉快不起來,但是我想我能理解。只是,我仍然感到擔心,畢竟程序員這一行干幾年就了不起了,而人生還有很長的路要走呢。沒有一個健全的心態,沒有足夠為人處世的技巧,30歲以后的人生該如何把握呢?

            posted on 2006-05-31 17:24 思勤無邪 閱讀(264) 評論(0)  編輯 收藏 引用 所屬分類: C++ 、其他與技術相關
            久久AV高清无码| 久久精品国产清自在天天线| …久久精品99久久香蕉国产| 精品国产VA久久久久久久冰| 97久久精品人人做人人爽| 一级a性色生活片久久无少妇一级婬片免费放 | 国产一区二区精品久久凹凸| 色99久久久久高潮综合影院| 久久婷婷五月综合97色一本一本| 2020最新久久久视精品爱| 国产69精品久久久久久人妻精品| 亚洲一区二区三区日本久久九| 亚洲精品NV久久久久久久久久| 狠狠狠色丁香婷婷综合久久五月 | 午夜视频久久久久一区 | 国产精品一久久香蕉产线看| 日日狠狠久久偷偷色综合免费 | 国产亚洲色婷婷久久99精品91| 伊人久久精品无码二区麻豆| 久久精品嫩草影院| 欧美va久久久噜噜噜久久| 综合久久一区二区三区| 久久精品国产精品亚洲下载| 国产精品天天影视久久综合网| 狠狠色综合网站久久久久久久高清| 国产三级观看久久| 久久亚洲国产欧洲精品一| 国产成人久久精品区一区二区| 久久人人爽人人人人爽AV| 久久精品三级视频| 久久精品无码专区免费| 久久亚洲精品视频| 日本精品久久久久中文字幕8| 久久Av无码精品人妻系列| 亚洲日本va中文字幕久久| 久久精品一区二区三区AV| 中文成人久久久久影院免费观看| 亚洲国产精品无码久久九九| 人妻丰满?V无码久久不卡| 日韩欧美亚洲综合久久影院Ds| 久久精品国产一区二区电影|