溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

C++語(yǔ)言跨平臺(tái)嗎

發(fā)布時(shí)間:2021-11-29 16:15:10 來(lái)源:億速云 閱讀:170 作者:iii 欄目:編程語(yǔ)言

這篇文章主要講解了“C++語(yǔ)言跨平臺(tái)嗎”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“C++語(yǔ)言跨平臺(tái)嗎”吧!

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

C#更像是微軟公司和SUN公司進(jìn)行商業(yè)斗爭(zhēng)的產(chǎn)物。歷史上,微軟公司是支持過(guò)Java語(yǔ)言的,代表性的產(chǎn)品有Visual J++和WFC。后來(lái)因?yàn)楸娝苤脑?,微軟公司推出了C#,其目的很明確,就是和Java競(jìng)爭(zhēng)。

實(shí)際上C#和Java在特性上也非常類(lèi)似(不僅僅是語(yǔ)法)。二者都是為了更加方便地解決應(yīng)用問(wèn)題,在GUI、數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)、網(wǎng)絡(luò)通信、多線(xiàn)程等和實(shí)際應(yīng)用密切相關(guān)的點(diǎn)上都有成熟的解決方案。

C++更多地靠第三方的庫(kù)來(lái)實(shí)現(xiàn)這些功能,因?yàn)?span >C++語(yǔ)言是一個(gè)國(guó)際標(biāo)準(zhǔn),要在C++中加入這些語(yǔ)言之外的、面向應(yīng)用的特性還需要很長(zhǎng)一段路要走。而C#、Java的擁有者是商業(yè)化公司,各種動(dòng)作自然要敏捷得多。

但是這并不意味著C++即將消亡(這樣的言論很多)。不可否認(rèn)的是C++在C#、Java的進(jìn)攻下,丟失了一些領(lǐng)域,但是C++仍然在普遍使用,很重要的原因就是因?yàn)?span >C++既保持了C語(yǔ)言級(jí)別的效率(某些情況下例外),又加入了面向?qū)ο蟮奶匦浴?/p>

C++與其他語(yǔ)言的主要區(qū)別

總的來(lái)說(shuō),C++和C#、Java的區(qū)別集中在以下幾點(diǎn):
(1)C#、Java代碼編譯后(形成中間代碼)是在虛擬機(jī)上執(zhí)行的。C++則不是。

(2)C#、Java語(yǔ)言相對(duì)于C++語(yǔ)言來(lái)說(shuō)較為簡(jiǎn)單,比較容易上手。C++的語(yǔ)法特性多、復(fù)雜,較難掌握。

(3)C++語(yǔ)言本身是一個(gè)標(biāo)準(zhǔn),各種實(shí)現(xiàn)之間有區(qū)別,對(duì)標(biāo)準(zhǔn)的理解、執(zhí)行程度也不同。而C#、Java語(yǔ)言是由商業(yè)公司掌握的,在這方面很少有問(wèn)題。

(4)C#、Java是直接面向應(yīng)用的,各種標(biāo)準(zhǔn)、模型都很成熟。而C++的各種庫(kù)在不同的C++編譯器實(shí)現(xiàn)上可能遇到一些問(wèn)題。

(5)三者都是面向?qū)ο蟮摹#、Java比C++更為徹底一些。有觀(guān)點(diǎn)認(rèn)為C#、Java是徹底地面向?qū)ο蟮恼Z(yǔ)言,這種說(shuō)法不妥,因?yàn)閷?duì)于面向?qū)ο蟮恼Z(yǔ)言,并沒(méi)有一個(gè)特定的標(biāo)準(zhǔn),例如也有觀(guān)點(diǎn)認(rèn)為最近很流行的Ruby語(yǔ)言比C#、Java更加面向?qū)ο蟆?/p>

(6)C++擁有很多現(xiàn)代的、令人激動(dòng)的語(yǔ)言特性,例如模板、泛型編程等。在這一點(diǎn)上,C#和Java也在迅速跟進(jìn)。C++是一門(mén)精致的、藝術(shù)的編程語(yǔ)言。筆者認(rèn)為,C++也是所有已知程序設(shè)計(jì)語(yǔ)言中最靈活、最難學(xué)的語(yǔ)言之一。學(xué)好C++基本上也意味著可以學(xué)好任一種其他的高級(jí)程序設(shè)計(jì)語(yǔ)言。圖1.1對(duì)C、C++、C#、Java這4種語(yǔ)言的幾個(gè)方面做了比較。

首先重復(fù)一句Bjarne的話(huà):“我們的系統(tǒng)已經(jīng)是極度復(fù)雜的了,為了避開(kāi)C++的復(fù)雜性而干脆不用C++(Linus的做法),無(wú)異于因噎廢食?!痹谒锌捎肅和C++的領(lǐng)域,C++都是比C更好的語(yǔ)言。當(dāng)我說(shuō)“更好的”時(shí)候,我說(shuō)的是C++擁有比C更安全的類(lèi)型檢查、更好的抽象機(jī)制、更優(yōu)秀的庫(kù)。當(dāng)然,凡事都有例外,如果你做的項(xiàng)目1)不大。2)編碼中用不到什么抽象機(jī)制。

甚至ADT(抽象數(shù)據(jù)類(lèi)型,例如std::complex這種不含多態(tài)和繼承的)也用不到,RAII也用不到,異常也用不到。3)你連基礎(chǔ)庫(kù)(如,簡(jiǎn)化資源管理的智能指針、智能容器)都用不著。那么也許你用C的確沒(méi)問(wèn)題;所以如果你的情況如此,不用和我爭(zhēng)論,因?yàn)槲覠o(wú)法反駁你。我們這里說(shuō)的領(lǐng)域大致是Bjarne在“C++應(yīng)用列表”里面列出來(lái)的那些地方。

底線(xiàn)是:如果把C++中的諸多不必要的復(fù)雜性去掉,留下那些本質(zhì)的,重要的語(yǔ)言特性,簡(jiǎn)化語(yǔ)言模型,消除歷史包袱。即便是C++的反對(duì)者也許也很難找到理由說(shuō)“我還是不用C++”。在我看來(lái),一個(gè)真正從實(shí)踐意義上理性反對(duì)使用C++的人只有一個(gè)理由:C++的復(fù)雜性帶來(lái)的混亂抵消乃至超過(guò)了C++的抽象機(jī)制和庫(kù)(在他的特定項(xiàng)目中)帶來(lái)的好處。

值得注意的是,這里需要避免一個(gè)陷阱,就是一旦人們認(rèn)定了“C++不好”,那么這個(gè)理由就會(huì)“長(zhǎng)出自己的腳來(lái)”,即,就算我們拿掉C++的復(fù)雜性,他們可能也會(huì)堅(jiān)持還是不用C++語(yǔ)言,并為之找一堆理由。

我假定你不是這樣的人。不過(guò),也許最可能的是他會(huì)說(shuō):“問(wèn)題是我們今天用的C++并非如此(簡(jiǎn)潔),你的假設(shè)不成立?!笔堑?,我的假設(shè)不成立。但雖然我們無(wú)法消除復(fù)雜性,我們實(shí)際上是可以容易地避開(kāi)復(fù)雜性,避短揚(yáng)長(zhǎng)的。這也是本文的要點(diǎn),容我后面再詳述。

當(dāng)然,到現(xiàn)在你可能還是會(huì)說(shuō)。我還是不用C++語(yǔ)言,因?yàn)槲铱梢杂肈;或者如果你本來(lái)做的項(xiàng)目就不需要C++,你則可能會(huì)說(shuō),我用Python。首先,如果你的項(xiàng)目能用Java/Python乃至Ruby做,那么用C++是自討苦吃。

因?yàn)槟苡媚切┱Z(yǔ)言代表你的項(xiàng)目在效率上本身要求就不高,那么用一門(mén)效率上討不到太大好處,復(fù)雜性上卻綽綽有余的語(yǔ)言,有什么價(jià)值呢?其次,如果你的項(xiàng)目效率是很重要的,你可能會(huì)說(shuō)可以用D。

然而現(xiàn)實(shí)是D在工業(yè)界尤其是國(guó)內(nèi)被運(yùn)用得非常少,幾乎沒(méi)有。而C++語(yǔ)言卻有大量的既有代碼,已經(jīng)使用C++去做他們的產(chǎn)品的公司,在很長(zhǎng)一段時(shí)間之內(nèi)幾乎是不可能用別的語(yǔ)言重寫(xiě)代碼的,正如Joel所說(shuō),決定重寫(xiě)一個(gè)非平凡的代碼基==自殺。

感謝各位的閱讀,以上就是“C++語(yǔ)言跨平臺(tái)嗎”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)C++語(yǔ)言跨平臺(tái)嗎這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

c++
AI