寫這篇文章的初衷,並不是帶領大家去體驗C++的古代史。如果想了解C++的歷史,以及早期發展中很多技術的演變,可以參考Bjarne的《C++的設計與演變》。當然,我並不打算給妳壹個包羅萬象的收藏(不是我不想:壹是因為水平有限,二是因為C++的博大精深),而只是壹些我們認為最重要的、觸手可及的開發和學習資源,供想學習C++的讀者參考。
本文對壹些編譯器、開發環境、庫、少量書籍和參考網站進行了介紹和分析,盡量給出使用這些資源的指南,希望對我們這樣的初學者有所裨益。
編譯程序
除了C++,編譯器從未在其他語言中受到如此關註。因為C++是壹種相當復雜的語言,所以很難構建編譯器。直到最近我們才能夠使用完全符合C++標準的編譯器(哦,妳可能會責怪那些編譯器廠商沒有盡快提供符合標準的編譯器,這只能怪他們自己有壹套別人不願意接受的標準)。什麽?妳說沒關系?哦,不,妳需要的是壹個與標準化C++高度兼容的編譯環境。從長遠來看,只有這樣的編譯器才是對C++開發者最有意義的工具,尤其是對編程語言的學習者。Unity使代碼可移植,並使壹種語言及其庫得到更廣泛的使用。嗯,是的,這裏只打算介紹壹些公認的優秀編譯器。
Borland C++
這是Borland C++ Builder和Borland C++Builder X的後臺編譯器,哦,妳應該明白我為什麽把它分成兩個開發環境了,就像從Delphi7到Delphi8的轉換,是兩代人的革命。)Borland C++由老牌開發工具廠商Borland打造。該公司的編譯器以其高速度和高空間效率而聞名。Borland C++系列編譯器繼承了這壹傳統,屬於非常優質的編譯器。就標準化而言,與標準化C++的兼容性早在5.5編譯器就達到了92.73%。目前最新版本是Borland C++ Builder X中的6.0版本,官方100%符合ANSI/ISO c++標準和C99標準。嗯……這正是我之前提到的“完全符合C++標準的編譯器”。
Visual C++
這是我們在Visual Studio和Visual Studio.net 2002、2003和2005 Whidbey中熟悉的C++編譯器。由微軟公司開發。在Visual Studio 6.0中,編譯器因為有太多不能符合後來的C++標準的地方而飽受詬病(想想妳用STL編譯時那些惡心的錯誤和警告)。VC++6.0與標準化C++的兼容性只有83.43%。但隨著C++編譯器的偉大設計者Stanley Lippman和C++社區眾多專家的加入,Visual C++編譯器在Visual Studio.NET 2003中已經成為非常成熟可靠的C++編譯器。Dobb博士期刊的評測顯示,Visual C++7.1對標準C++的兼容度高達98.22%,壹度是CBX之前兼容度最高的編譯器。結合強大的可視化Studio.NET開發環境,這是壹個非常好的選擇。至於Whidbey時代的Visual C++,似乎微軟最關心的是C++/CLI...我們不想評論微軟下壹代C++編譯器如何兼容標準化,但它越來越適合。NET(其實妳我可能都有同感,微軟不應該把標準c++這塊肥肉扔給Borland,但微軟可能不這麽想)。
/post/1/718
因為delphi和c++builder都是inprise的產品,* * *享受集成開發接口(ide),和
使用相同的vcl框架(這是最關鍵的壹點),並且它們由調試器和pvcs/teamsource團隊開發支持。
、數據庫引擎等企業版集成的高級功能都是壹樣的,所以本文將其與c++build進行對比。
Er屬於同壹戰線。我在網上遇到壹些delphi程序員,他們認為c++builder和vc比較接近。
這是壹個誤解。其實delphi和c++builder除了語言不同之外,幾乎是壹樣的。為
為了避免話題轉移到c++語言和object pascal語言(即delphi使用的語言)的比較上,下面主要
visual c++與c++builder的比較分析。
首先,從應用程序框架(有時稱為對象框架)對它們進行比較。
相對來說。visual c++采用的框架是mfc。Mfc不僅僅是人們通常理解的類庫。(還有,德爾
phi和c++builder使用的vcl的概念不僅僅是壹個控件庫。如果選擇mfc,也可以選擇MFC。
選擇壹個程序結構,壹種編程風格。Mfc早在windows 3.x時代就出現了,當時visu。
Al c++還在16的位置。經過多年的不斷補充和完善,mfc已經非常成熟。而是因為原型。
與vcl相比,mfc落後了壹個時代。雖然微軟壹直沒有停止更新mfc,但我還是經常看。
要抱著“只要windows過時,mfc就不會過時”之類的,但就像InEnterprise(原borl
以及)owl框架淡出,mfc遲早淡出。如果mfc永遠年輕,微軟的開發者
成員不會基於atl“私自”開發wtl。當然wtl的地位不能和mfc比,不是微。
軟官方支持的框架,封裝的功能也相當有限。但至少也反映了mfc的不足。
我認為最先進的應用框架是它的委托模式,也就是淘汰windows。
信息的封裝機制。(windows api的封裝就不用說了。大同小異,也沒什麽技術含量。
如果妳高興,妳也可以寫壹個類庫來封裝它。但是windows消息驅動機制的封裝卻不是這樣。
不容易。最自然的封裝方式是使用虛擬成員函數。如果要響應消息,請重載相應的。
虛函數。但令我驚訝的是,mfc采用了壹種“古老”的宏定義方法。使用宏定義方法的優點是
節省了虛函數vtable的系統開銷。(因為windows的消息種類很多,開銷不算小。)然而,
缺點是映射不直觀。幸運的是,vc新版本的classwizard可以自動生成消息映射。
碼,用起來相對方便。但是與vcl的委托模型相比,mfc的映射方式太落後了。
以後再說。c++builder擴展了c++語言,引入了組件、事件處理和屬性等新特性。
因為功夫是編譯器級別的,生成的源代碼非常簡潔。然而,由於擴展的非標準性質,
使用vcl的c++builder的源代碼不能被其他編譯器編譯。而mfc的功夫在源代碼層面,雖然
然而,消息映射代碼復雜且不直觀,但它非常兼容。只要妳有mfc庫的源代碼(用vc enterprise
理論上,妳的mfc程序可以被任何符合ansi標準的編譯器編譯。c+
+builder 3以上版本可以直接原封不動的編譯visual c++程序,很多人以為是c++build。
er的兼容性好,其實歸功於mfc的兼容性好。微軟已經努力用標準的方式寫M了。
Fc,卻給對手創造了便利。我想知道他們感覺如何?因為c++builder擴展了語言,所以vc
無法編譯c++builder的程序。看來vc在這方面會輸給c++builder。和vcl支持的組
組件、屬性等。都是mfc所缺乏的特性。雖然vc也可以支持組件,但是需要通過appwizard先生來集成。
“包裝”類不像vcl那樣簡潔。有很多人使用c++builder只是為了儀表板。
從那堆組件中,vc可以使用很多組件(可能不會比c++builder少),但是因為它沒有
方便,對rad程序員沒有吸引力。
c++builder的vcl比visual c++的mfc更高級的另壹個特性是異常處理。但這很荒謬
錯的是它的異常處理代碼有bug,有時候會無緣無故拋出異常。不知道是不是最新版本的。
已經改正了。而vc的框架mfc也不是壹無是處。經過這麽多年的發展和完善,mfc有了很多功能。
通常很全面,而且非常穩定,幾乎沒有bug。其中,妳遇到的bug可能更少。而且還有第三方專業人士。
幫妳避開這些bug。這種規模的類庫做到這壹點並不容易。不要低估這壹點
很多職業程序員都是為此選擇vc的。c++builder的VCL bug相對較多,而
它自己的壹些示例程序有錯誤。看來InEnterprise還有很長的路要走。
然後從可用性上比較。Vc有classwizard,sourcebrowser等壹系列工具,還附帶了。
有了visual sourcesafe、visual modeler等強大的工具,非常好用。(vc自帶建模器。
擁有visual modeler可能說明它是壹個工程級的開發平臺,和c++builder的定位不壹樣。
)msdn,它帶來的“開發者百科”,讓妳“沒有找不到的,只有想不到的”。
而且它的自動完成等小功能比c++builder考慮的更周到。雖然新版本的c++builder也
提供了這個功能,但是它的提示需要幾秒鐘才能出來。有時候妳會不經意地把鼠標停在某個地方。
妳必須等待硬盤響幾秒鐘,但這是在566mhz的賽揚ii上。不要笑我猥瑣,有時候壹個開發者。
家具的成熟和易用性就是從這些小地方體現出來的。作為壹個rad工具,c++builder應該強調易用性。
可用性。但是和vc相比,還是不成熟。這不應該。
我們來看看它們的便攜性。InEnterprise正在開發c++builder和delphi的linux版本。
代號為kylix。或許通過kylix,可以把用vcl框架編寫的windows程序移植到linux上。但是
只有這個可能。因為目前InEnterprise的兼容性還沒有做好。C++builder可以編譯vc程序。
由於微軟編寫mfc的標準方法,它自己的版本不太兼容。c語言的較低版本
++builder不能用更高版本的vcl組件(更不用說了),更高版本的c++builder也不行。
使用較低版本的vcl組件。太離譜了。我很少看到不向後兼容的軟件。如果windows
98不能運行95程序,windows 95不能運行3.x程序,win 3.x不能運行dos程序。妳們
還能用windows嗎?如果說c++builder的其他壹些方面並不優秀,也僅僅是這種向下的不兼容。
足以讓我拋棄它。雖然c++builder可以通過捆綁編譯器來編譯delphi對象傳遞。
Cal代碼,但c++builder仍然無法使用為delphi開發的vcl組件。所以壹個組件已經為d1/d
2/d3/d4/d5/c1/c3/c4/c5常見,隨著c++builder版本的升級,可以
能量會增加。希望InEnterprise能先解決兄弟們的兼容性問題。微軟的vc就沒有這些問題。
。mfc1.0的程序也可以在vc6.0下毫無障礙的編譯通過。
讓我們看看他們的前景。事實上,技術的進步在很多情況下都發生了變化。博在開頭
rland的Turbo c和borland c++幾乎是唯壹的選擇。微軟的quick c(還有人知道這個。
產品?)和微軟c/c++從來都不是主流。但是borland c++流行了多少年了?
?很快就被新崛起的微軟visual c/c++淹沒了。現在c++builder有壹個落後的位置。
世界的情況,如果穩定性提高了,bug少了,就有希望成為主流。而是整個企業
實力不如微軟是不爭的事實。來自c++builder 5發行說明中的已知問題。
S部件的大小和質量及其幫助文檔可見壹斑。(哪個同類產品的幫助文檔可以比?
msdn比呢?)inprise應該向netscape學習,不要讓c++builder成為第二個netsca。
pe通信器.(communicator曾經技術領先,甚至占領了大部分瀏覽器市場。
場,但似乎後勁不足,6.0 pr1和2的bug很多,現在被ie壓得喘不過氣來。)c++ build
Der是InEnterprise的旗艦產品之壹,前景應該是看好的,並且InEnterprise壹直在導入linux。
三月,而微軟遲遲沒有動作,有必要在linux上燎原嗎(或許已經燎原了)
)會崛起占領這個新興市場?看來他們對linux的態度和幾年前他們對互聯網崛起的反應是壹樣的。
慢的有點類似。然而..................唉,真希望inprise不要步網景的後塵。C++builder是
壹個有前途的開發工具。不幸的是,企業內部公司德爾福的創始人已經跳槽去了微軟。
持有visual j++項目。希望對InEnterprise的影響不會太大。微軟的visual c++前景如何?
?Visual studio 7.0即將發布。我不知道我們是否能同時保持穩定和先進的技術
趕上c++builder。此外,這個版本將加強網絡開發的特點。看起來雖然微軟被判解體,
開發實力絲毫不打折扣。
就技術(主要是應用框架)而言,c++builder目前領先於visual c++。但或多或少
對我來說說我愛妳並不容易。而vc,雖然發展到今天已經很不錯了,
但是mfc框架已經是過去式了。如果不用mfc,目前也沒有合適的替代品。Wfc是壹個支持組件。
、屬性和事件,但那是在visual j++中使用的;Atl也很高級,但是用於com/activ。
ex開發的;基於atl的Wtl也不錯,但屬於非官方作品,未必比vcl更先進。微軟最近提出
引入了c#(讀作c sharp)語言方案,但與java屬於同壹類。看來黃金還不夠。根據
根據自己的需求做出選擇。其實visual c++和c++builder不僅僅是競爭關系。他們在許多
這些字段不重疊,甚至不互補。如何選擇取決於妳項目的特點。如果妳發展
系統底層的東西需要優秀的兼容性和穩定性,所以選擇visual c++。妳可以打電話給window。
的各種API,沒有mfc。如果編寫傳統的windows桌面應用程序,visual c++的mfc框架是
“正統”的選擇。如果妳為企業開發數據庫、信息管理系統等高層應用(“高層”是相對的
我們所說的“低級/底層”並不是指先進或低級的技術。)而且期限很緊,選c++b+B。
Uilder更好。如果妳的語言是object pascal,delphi是唯壹的選擇(如果gnu pasc
Al等免費編譯器不考慮)。如果妳以前用的是delphi(object pascal),現在想換了。
C++,妳應該先用c++builder。熟悉的界面和相同的框架將使您的過渡更加有效。
另外,mfc雖然落後了,但不代表不值得學習。其實不學mfc就是不學vc。
。使用mfc框架開發程序仍然是目前開發桌面應用的主流模式,而且還會保持很長壹段時間。
介於。即使不使用mfc框架,也要花時間學習mfc的封裝機制,熟悉c++和的oop機制。
windows的底層功能也非常有益。
C/c++(不管是mfc還是bcb)作為程序員評級的標準之壹,會
將讓位於三種編程語言,1.sun的Java 2。Windows平臺上的c#3.xml。
為什麽這麽說?我認為最大的原因是當前的應用程序正在從壹個獨立的操作系統轉移到
基於互聯網平臺。
我們以前開發的應用都是依賴平臺函數調用的,比如MFC和BCB,現在越來越火了。
互聯網編程最不想關心的就是某個平臺的調用,比如實現b2b電子商務。
妳需要整合不同的平臺。如果我是程序員,我最關心的是如何實現業務邏輯。
我們最迫切需要的不是各種平臺之間的溝通和管理,而是壹種無需與各種平臺進行任何溝通就可以調用的方法。
關語言,只註重程序邏輯的設計,不涉及平臺的調用,但熟悉的c/c++恰到好處。
不是為此設計的(呵呵不能怪70年代的c/c++。誰能知道現在的互聯網是什麽樣的?
).c/c++最初的設計目的是設計unix產生壹個介於匯編和高級語言之間的高開發水平。
高效率、高性能的語言。它比其他高級語言更關心系統的物理結構,比如總是被破壞。
名聲很好的教鞭。指針非常強大,因為它涉及到系統物理內存的管理。它可以讓程序員
而正是這種半透明的狀態,使得指針更加不穩定。
做愛。
C/c++在面向互聯網編程方面沒有優勢,跨平臺電商軟件最怕顧及。
各種平臺在系統調用上差別很大,最怕因內存泄露而時不時崩潰. c/c++。
潛力在這裏變成了劣勢。即使基於windows DNA的解決方案是在windows平臺上開發的,
最常用的dcom是vb,不是vc的atl,因為c/c++效率高但是太容易了。
錯誤,如果不小心釋放內存,nt很快就會耗盡資源。
Java是最先看到這種情況的。他用jvm實現了平臺獨立性,用內存回收實現了穩定性和健壯性。然而,
不少c/c++程序員抱怨java太慢。事實上,即使對於java2,速度仍然是壹個大問題。我曾經
我是c/c++的堅定擁護者,在很多論壇上與java程序員鬥智鬥勇。但我逐漸意識到,我正面臨著與in接觸的挑戰。
在ternet平臺不是特定操作系統的情況下,java的速度問題往往是個小瑕疵。我們能
試想哪家電商網站會用我們的pc做服務器。他們要麽是sun e1000,要麽是ibm。
Risc6000。在這個平臺上,java的速度問題只是小菜壹碟。程序員只需要專註於業務。
服務邏輯編程,而且不需要關心數組是否越界,對象內存是否釋放,也不需要關心是不是unix。
它不同於windows的系統調用。
微軟的c#可以說是java和c/c++的混合體,可以回收內存,平臺無關。然而,
他還可以實現壹些java沒有的功能,比如用標記程序段中的指針自己管理內存。
現在運營商超負荷了,等等。為什麽要這麽做?我覺得可能c#對操作系統開發有壹定的責任。
比如winform。他的基本思想和java類似,只是實現方法不同。他不通過jvm解釋。
中間代碼,但是源代碼先編譯成P代碼再通過cls庫和jit及時在平臺上編譯成100%版本。
他的pe代碼是平臺無關的,但是cls和jit是根據不同的平臺設計的。因此,
c#的平臺無關性有點類似於c/c++在不同平臺上的移植,這使得c#比java來得更快。而且,微軟還
承諾cls和jit不僅可以用於c#,還可以用於pascal、smaltalk、basic Basic等任何壹種語言,所以以後都有可能。
能不能所有編程語言都是平臺無關的(ms真毒,所有語言都是平臺無關的,還有什麽是java?
優點,據說ms是基於pascal smaltalk開發asp+。
Xml很多人可能認為類似html的語言和C/C++、Java、C #是完全不同的。
其實不是的。我們知道c#和java都是通過統壹的地層計算來實現平臺無關性的。那壹定是。
在性能上付出壹點代價,但是xml可以實現不同語言之間的調用。比如壹個網絡占用jav。
a用bean實現壹個發貨功能,另壹個網站用dcom實現壹個倉儲功能。如果這個網站需要真實的
現在b2b,壹般來說就是寫他們之間的轉換程序,而xml是通過標記語言描述他們的借口。
特色。兩端可以通過解析xml文本相互調用,不需要任何中間轉換器。
只需要壹個xml文本就可以實現bean和dcom之間的通信(需要大量的xml來闡明機制)
概念如果妳有興趣,可以去msdn.microsoft.com/xml或www.s3c.org看看)。目前。ms的ne
T中的核心技術Soap是基於xml的遠程過程調用。
介紹這麽多可能有點跑題。其實我最想說的是21世紀的程序員應該面對操作系統。
走出傳統的方法,學習壹些技術和概念,如何為互聯網平臺編程。不要無所畏懼。
那種c/c++工具好等等。我想不出壹兩年後bcb和mfc都會被淘汰。
那時候爭論的不是bcb好還是mfc好,而是c#好還是java好。至於xml,sun和
ms乃至世界上任何壹家大it公司,包括intel、hp、HP都在努力研究的技術,不學就可能被淘汰。
至於c/c++,現在可能淪為匯編的狀態,在壹些對系統性能比較敏感的地方仍然可以看到。
如果妳是編程語言初學者,我建議學習java,關註c#。壹開始它們比c/c++簡單。
復雜的概念,如宏、指針、模板等。令人困惑,而且它們完全是面向對象的,比c/c++還不成熟
面向對象要清晰易學得多。(目前推薦學習java,畢竟c#還沒發布,bet也剛發布。
A版編譯器要求很高,需要win2000 adv server。如果妳沒有128m內存,妳就不能運行。話說回來,c#
和java壹模壹樣,沒有太大區別。學好java,以後的c#就唾手可得了。)
對於現在windows下的程序員來說,學習mfc的價值還是有壹點的,但不會太大。至少
熟悉windows的內部機制。但我還是建議關註c#。未來的windows.net是基於c#而不是。
是mfc。而且c#實現同壹個windows桌面應用比mfc簡單很多。c#的開發速度是mfc的兩倍。
增加三倍,幾乎看不到性能損失。visual studio 7.0中的vc將是壹個二次開發工具。
主要開發工具是c#和vb7.0,至於borland,我覺得不跟ms是不可能的,至少windows是平板的。
在舞臺上是這樣的。也許明年borland的主要產品會是壹個c# builder,而不是C+c++ build。
Der。說個笑話,wenny可能很快會把這個地方變成www.c#help.net