新聞中心
Java的程序如果想要運(yùn)行,必須在虛擬機(jī)上運(yùn)行的,而C++語言不是,C++程序的代碼是直接運(yùn)行在物理機(jī)器上的,所謂的C++語言:是一種使用非常廣泛的計算機(jī)編程語言。。

林周ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
C#更像是微軟公司和SUN公司進(jìn)行商業(yè)斗爭的產(chǎn)物。歷史上,微軟公司是支持過Java語言的,代表性的產(chǎn)品有Visual J++和WFC。后來因為眾所周知的原因,微軟公司推出了C#,其目的很明確,就是和Java競爭。
實際上C#和Java在特性上也非常類似(不僅僅是語法)。二者都是為了更加方便地解決應(yīng)用問題,在GUI、數(shù)據(jù)庫訪問、網(wǎng)絡(luò)通信、多線程等和實際應(yīng)用密切相關(guān)的點(diǎn)上都有成熟的解決方案。
C++更多地靠第三方的庫來實現(xiàn)這些功能,因為C++語言是一個國際標(biāo)準(zhǔn),要在C++中加入這些語言之外的、面向應(yīng)用的特性還需要很長一段路要走。而C#、Java的擁有者是商業(yè)化公司,各種動作自然要敏捷得多。
但是這并不意味著C++即將消亡(這樣的言論很多)。不可否認(rèn)的是C++在C#、Java的進(jìn)攻下,丟失了一些領(lǐng)域,但是C++仍然在普遍使用,很重要的原因就是因為C++既保持了C語言級別的效率(某些情況下例外),又加入了面向?qū)ο蟮奶匦浴?/p>
C++與其他語言的主要區(qū)別
總的來說,C++和C#、Java的區(qū)別集中在以下幾點(diǎn):
(1)C#、Java代碼編譯后(形成中間代碼)是在虛擬機(jī)上執(zhí)行的。C++則不是。
(2)C#、Java語言相對于C++語言來說較為簡單,比較容易上手。C++的語法特性多、復(fù)雜,較難掌握。
(3)C++語言本身是一個標(biāo)準(zhǔn),各種實現(xiàn)之間有區(qū)別,對標(biāo)準(zhǔn)的理解、執(zhí)行程度也不同。而C#、Java語言是由商業(yè)公司掌握的,在這方面很少有問題。
(4)C#、Java是直接面向應(yīng)用的,各種標(biāo)準(zhǔn)、模型都很成熟。而C++的各種庫在不同的C++編譯器實現(xiàn)上可能遇到一些問題。
(5)三者都是面向?qū)ο蟮摹#、Java比C++更為徹底一些。有觀點(diǎn)認(rèn)為C#、Java是徹底地面向?qū)ο蟮恼Z言,這種說法不妥,因為對于面向?qū)ο蟮恼Z言,并沒有一個特定的標(biāo)準(zhǔn),例如也有觀點(diǎn)認(rèn)為最近很流行的Ruby語言比C#、Java更加面向?qū)ο蟆?/p>
(6)C++擁有很多現(xiàn)代的、令人激動的語言特性,例如模板、泛型編程等。在這一點(diǎn)上,C#和Java也在迅速跟進(jìn)。C++是一門精致的、藝術(shù)的編程語言。筆者認(rèn)為,C++也是所有已知程序設(shè)計語言中最靈活、最難學(xué)的語言之一。學(xué)好C++基本上也意味著可以學(xué)好任一種其他的高級程序設(shè)計語言。圖1.1對C、C++、C#、Java這4種語言的幾個方面做了比較。
首先重復(fù)一句Bjarne的話:“我們的系統(tǒng)已經(jīng)是極度復(fù)雜的了,為了避開C++的復(fù)雜性而干脆不用C++(Linus的做法),無異于因噎廢食?!痹谒锌捎肅和C++的領(lǐng)域,C++都是比C更好的語言。當(dāng)我說“更好的”時候,我說的是C++擁有比C更安全的類型檢查、更好的抽象機(jī)制、更優(yōu)秀的庫。當(dāng)然,凡事都有例外,如果你做的項目1)不大。2)編碼中用不到什么抽象機(jī)制。
甚至ADT(抽象數(shù)據(jù)類型,例如std::complex這種不含多態(tài)和繼承的)也用不到,RAII也用不到,異常也用不到。3)你連基礎(chǔ)庫(如,簡化資源管理的智能指針、智能容器)都用不著。那么也許你用C的確沒問題;所以如果你的情況如此,不用和我爭論,因為我無法反駁你。我們這里說的領(lǐng)域大致是Bjarne在“C++應(yīng)用列表”里面列出來的那些地方。
底線是:如果把C++中的諸多不必要的復(fù)雜性去掉,留下那些本質(zhì)的,重要的語言特性,簡化語言模型,消除歷史包袱。即便是C++的反對者也許也很難找到理由說“我還是不用C++”。在我看來,一個真正從實踐意義上理性反對使用C++的人只有一個理由:C++的復(fù)雜性帶來的混亂抵消乃至超過了C++的抽象機(jī)制和庫(在他的特定項目中)帶來的好處。
值得注意的是,這里需要避免一個陷阱,就是一旦人們認(rèn)定了“C++不好”,那么這個理由就會“長出自己的腳來”,即,就算我們拿掉C++的復(fù)雜性,他們可能也會堅持還是不用C++語言,并為之找一堆理由。
我假定你不是這樣的人。不過,也許最可能的是他會說:“問題是我們今天用的C++并非如此(簡潔),你的假設(shè)不成立。”是的,我的假設(shè)不成立。但雖然我們無法消除復(fù)雜性,我們實際上是可以容易地避開復(fù)雜性,避短揚(yáng)長的。這也是本文的要點(diǎn),容我后面再詳述。
當(dāng)然,到現(xiàn)在你可能還是會說。我還是不用C++語言,因為我可以用D;或者如果你本來做的項目就不需要C++,你則可能會說,我用Python。首先,如果你的項目能用Java/Python乃至Ruby做,那么用C++是自討苦吃。
因為能用那些語言代表你的項目在效率上本身要求就不高,那么用一門效率上討不到太大好處,復(fù)雜性上卻綽綽有余的語言,有什么價值呢?其次,如果你的項目效率是很重要的,你可能會說可以用D。
然而現(xiàn)實是D在工業(yè)界尤其是國內(nèi)被運(yùn)用得非常少,幾乎沒有。而C++語言卻有大量的既有代碼,已經(jīng)使用C++去做他們的產(chǎn)品的公司,在很長一段時間之內(nèi)幾乎是不可能用別的語言重寫代碼的,正如Joel所說,決定重寫一個非平凡的代碼基==自殺。
文章名稱:C++語言是否跨平臺?
URL標(biāo)題:http://m.fisionsoft.com.cn/article/djoheos.html


咨詢
建站咨詢
