我一直不明白c++真的比c#強大嗎?望高手指點。
困惑1.:為什麼飛信之前的版本用.net做的,感覺不是很好用,最終放棄了.net而使用c++重寫了。感覺重寫之後的版本好一點。難道是他們的技術不好?還是c++真的比c#強大嗎?
困惑2:為什麼qq一直使用c++開發。(雖然qq開發的時候c++還是最主流的,c#還不是那麼流行)但是概念版qq只是使用了wpf的技術實現了其介面,但是核心還是c++。現在c#已經流行起來了啊!為什麼不出現完全c#的qq 呢?還是c++真的比c#強大嗎?
討論開始後,有技術人員表示這個要看具體需求,其實這裡不太存在效率的問題,現在的計算機效率已經不成問題了。如果效率有問題,msn怎麼跑的?有人說所以msn很慢?msn慢是因為msn的伺服器在美國,而不是因為用了.net編寫的才慢的。就樓主所說的飛信,qq(還不止飛信和qq,還有很多)這種軟體,一般都是使用c或者c++開發。為什麼不用.net呢?這個就牽涉到乙個使用者群的問題。飛信,qq這種是即時通訊軟體,他的使用者群非常廣泛,那麼也就碰上乙個問題,如果你在安裝飛信,qq的時候他先提示你去安裝乙個.net framework,你是不是要暈掉?就算你知道這個是什麼?但是你不能保證所有的老百姓都知道.net framework啊。
51cto編輯注意到上面這位技術人員的觀點是從作業系統的角度來談,也就是不同系統對不同開發工具的適應程度。特別是.net framework如何執行在linux這樣的開源系統中的問題。
對於飛信用c++重寫的問題,有人表示了不同的觀點:「新版飛信一如既往是.net的,也不知道從**傳出說是c++重寫的,其實根本沒有。 qq的話不得不考慮元件重用的問題,原本用的好好的核心沒必要換不是嗎。 總體來說.net執行效率應該比不上原生**的,但是效能的差距肯定不會太懸殊。畢竟虛擬機器可以針對硬體平台優化**,原生程式則很難做到。.net難以保證**的安全確實是個問題,但是使用各種手段增加破解難度也是可行的,畢竟就算是原生程式對於**的安全也不能100%確保。」這樣的觀點是支援.net廣泛使用性的,不過也認為一套已經成熟的開發手段,沒必要做平台的調整。
c#比c++多了一層中間語言common intermediate language,在執行的時候生成計算機的語言再去執行,和c++直接生成計算機語言相比效率更差。最早的時候計算機程式設計是用打洞的字條進行輸入的,那個字條就相當於最後c++編譯好的計算機認識的程式。
.net強大在於開發效率,易於維護(誰讓c++這麼多的巨集啊,常量啥的)。.net並不慢,第一次載入可能會因為要載入runtime,需要更長的時間。 一般的指令執行,可能比c/c++慢百分之幾十而已,是同乙個數量級的。如果說.net寫的程式慢的不能忍受,那麼絕對不是.net的問題。不過.net程式更佔記憶體,這個我同意,誰讓要載入虛擬機器呢,誰讓型別帶了這麼多元資料呢, 這一點恐怕所有虛擬機器語言都好不到**去。
有技術人員提出這個問題主要是權衡吧,託管的、封裝好的**必然會給程式設計師帶來很大的幫助,想想當年程式設計師們為記憶體洩露而打飛干戈的年代吧。c++是很好,就好比給你一把玄鐵,想打造什麼樣的銳利**,你自己打造把,但是打造不好,可怪不得c++;而c#呢,給你一半鋒利的劍,你去廝殺吧,但是隨便你武力再好,遇到乙個比你鋒利的劍,你就要認倒霉。
封裝給我們帶來巨大的好處,物以類分,這符合每個人的習慣;而c和c++呢,萬物來自核心,從核心出發吧,這符合那些造物者的思維!所以很多東西的核心是c++,而至於介面或者快速開發,那還是需要時間的,而造物者卻很稀缺,如果所有的事情都讓造物者來完成,時代就要倒退了。
考慮到效率問題,我覺得正如上面某樓說的,科學計算或者**等方面,不用太憂慮。其實讓我們機子卡的程式還真不多!
C 中誰最快 結構還是類?
在記憶體當道的日子裡,無論什麼時候都要考慮這些 是否會影響程式效能呢?在現在的世界裡,幾乎不會去考慮用了幾百毫秒,可是在特別的場景了,往往這幾百公釐確影響了整個專案的快慢。通過了解這兩者之間的效能差異,希望幫助大家在合適的場景裡選擇正確的編碼。public class pointclass publ...
C 與 C 誰的效率高,為什麼?
姑且認為題主問的是執行效率吧 表面上看,是c的執行效率要高,c簡單直接,沒有c 那些複雜的特性,編譯生成的彙編 都直接對應每行c 沒有c 編譯器插入的奇怪的東西,比如 隱式型別轉換,虛函式呼叫,算符過載,拷貝構造等。但是看問題不能這麼表面,新手們容易認為效能問題是選擇造成,只要我選擇了正確的語言 框...
打魚還是曬網C
中國有句俗語叫 三天打魚兩天曬網 某人從1990年1月1日起開始 三天打魚兩天曬網 問這個人在以後的某一天中是 打魚 還是 曬網 問題分析與演算法設計 根據題意可以將解題過程分為三步 1 計算從1990年1月1日開始至指定日期共有多少天 2 由於 打魚 和 曬網 的週期為5天,所以將計算出的天數用5...