從我進入CSDN VC/MFC的那一刻起,總能在這個版塊看到這樣那樣的討論VC、C++語言是否是要淘汰,被C#完全取代諸如此類,這就是傳說中的「月經貼」。一些新手可能就會由於看到這些帖子感到迷茫,好比他們正在開始學VC,要是忽然發現被淘汰了,豈不是白學了?對此我認真看了每次的「月經貼」,論壇中的一些老大們的言語我也都看在眼裏,他們對此是看得很清楚的。接下來我將會用中肯的語言說說個人看法,各位有什麼意見能夠跟帖討論。c++
先說語言,C++做爲數據結構入門的最佳語言的說法很多,其實有人認爲Java更加適合作數據結構入門的語言,我感受其實要看我的的喜愛。可是C#確定不會用來作數據結構入門的語言,C++我認爲是一個比較好的理解遠離的語言,是一切之本。Java中所說的引用,其實也就是C++中的地址傳遞的一種形式罷了,C++靈活的強制轉換,我以爲有得天獨厚的優點,拿到一個地址,就能讓它成爲指向一個數據結構的指針,這是其餘語言所沒法比擬的。程序員
沒有什麼語言能比C++更加貼近Windows自己了,這一點也是不能否認的。若是哪一天C#也能寫驅動的時候,那麼C++就真的會淘汰了(這天可能不會太遠又或者很遙遠)。數據庫
C#能作的,C++不必定都能作,C++能作的,C#也不必定都好作,因此常常看到有人拿這2個語言對比,我以爲確實沒什麼必要。編程
C#繁雜的調用Win32 API的方式,確實讓人很不舒服,C++這一點作得比它好。可是,C#強大的網絡操做,代碼量大大地低於C++,咱們拋棄不用Socket,改用WinInet或是MFC中的封裝好的網絡類,好比CHttpFile,仍是沒C#簡單。C#的傻瓜式的類庫操做和麪向對象編程的完美特性,確實讓其成爲了Windows平臺上最受歡迎的語言。也許,是微軟想將Win32 API漸漸地所有封裝到C#的類庫中去,我感受微軟有這個意圖,也許未來C#就不須要調用那些繁雜的Win32 API了,類庫中均有提供也說不定。站羣系統segmentfault
咱們爲何學VC?這點我曾經也問過本身。聖經上說:你必須知道真相,真相會使你自由。咱們學VC是爲了自由,不受微軟的框制。微軟經過種種的FrameWork讓你陷於其中,你以爲,哇,原來編程是這麼容易啊,幾句話就能搞定。你想知道微軟在內部幹了些什麼呢?你不知道,固然,你若是認爲你不必知道,這個我徹底贊同,我後面會說。就說殺進程吧,C#中不經過Win32 API就那麼一種方式,經過System.Diagnostics.Process找到進程,而後Kill之(若是我說的不對,使用C#的朋友請指正),而C++中,咱們徹底有無數種選擇,就說不邪惡的,TerminateProcess,邪惡點的呢?不可勝數。進程內存填0,卸載模塊,消息洪水,句柄強制關閉,強制釋放它的堆,太多太多了,甚至我注入進去,內部Raise一個異常,它也就掛掉了。保護進程, 無論內核下仍是應用層,C#確定是作不了的,C++有本身高端的地方,其餘語言沒法涉足。你見過C#作的殺毒軟件嗎?設計模式
C#,極其簡易的界面操做,使人看着很舒服的編碼,他有太多的地方,C++根本沒法涉足。拿C++作Web Services除非是大腦進水,用C++作網絡蜘蛛,也根本是無聊之舉,要麼就C#,要麼就拿Python來幹(我的漏見),超級大量的數據,拿垃圾回收基本上爲0的C++去作,簡直就是自找麻煩。C#的WebForm,和Jsp佔據着Web的大片江山,C++能嗎?不能。C#是一門博大精深的語言,類庫強大到變態,基本上能夠這麼講,因此用C++的朋友也不能隨便貶低C#程序員,C#的程序員的層次分得比C++多不少,高層的也是象牙塔級別的。C#的架構師,那種恐怖的實力,C++中級程序員是沒法想象的。C#更加註重於軟件工程的應用,各類設計模式的使用,C++則注重於實現功能。網絡
C#的前景是不錯的,我我的很看好它,MSDN 雜誌每期的文章可能有8成是C#,C++不算不少,微軟的重心可能在C#上,但願C#逐漸能取代C++。可是C++會這麼容易被取代?不可能。就像一個搞管理的,你讓他接管搞開發的人,讓他從幹同樣到同時兼幹這二樣,會有這麼簡單麼?c++的生命力至少還要7-8年,以後纔會漸漸的淡出,可是隻要追求自由的人存在,C++就不會消失;只要操做系統一天是用C++寫的,C++就不會消失。數據結構
下面說說語言的選擇問題,這2種語言各自的優劣,我在上面都作了簡要的比較。我在月經貼中總看到爭辯,討論這2種語言哪一個更好,甚至會出現不和諧的字眼。我以爲這是何須呢?各自有各自的天地,請你也不要再說什麼C++會沒落的的話,那是你本身不用,就說C++沒落?就像MSDN英文你看不懂,你就說API垃圾?你本身內心認爲它不行,怎麼貶低,這個隨便你本身內心高興,別拿出來充專家,更別用本身幼稚的思想左右別人。微軟4年前就放言,C#將要取代C++,今年都2009了,每一年還不是同樣有人跳出來叫囂?架構
選什麼語言,隨本身高興,須要哪一個用哪一個,這是不矛盾的。開發數據庫,我傾向於用C#,作Windows底層,我確定是C++,都掌握下沒有壞處。VS2010中C++的新特性各位同胞能夠關注下,不知道會加入什麼,VC2008的特性我探索了這麼久,尚未探索結束。C#是愈來愈好用了,Linq to Sql讓不懂數據庫的人都能去操作數據庫了,輔助一些第三方類庫,能發揮強大的威力。徹底取代C++,等操做系統是C#寫的,C#能開發系統中的一切組件的時候再說吧,至少如今C#還不能開發IsAPI,驅動吧?嘻嘻編碼