很多人覺(jué)得C++學(xué)習(xí)起來(lái)比較困難,而且也并不看好C++,那究竟C++有哪些難點(diǎn)和優(yōu)勢(shì)呢?
1、知識(shí)點(diǎn)廣泛而且難度高。按照幾年前Scot Mayer在Effective C++中對(duì)C++的定義來(lái)看,C++是一門多范型語(yǔ)言,包括了C、面向?qū)ο缶幊毯头盒途幊。程序員需要正確理解很多基礎(chǔ)概念,比如,堆和棧的區(qū)別、指針、指針的指針、虛函數(shù)的內(nèi)部原理、繼承引發(fā)的對(duì)象內(nèi)存布局、多繼承引發(fā)的模棱兩可、模板以及編譯器推導(dǎo)、STL算法等。C++的內(nèi)容如此廣泛,因此每個(gè)知識(shí)點(diǎn)的學(xué)習(xí)和積累都不是件容易的事情, 自然誤用的情況常會(huì)發(fā)生。
2、C++打開(kāi)了直接面向操作系統(tǒng)API編程的大門,因此使用C++完成工作,很多時(shí)候需要學(xué)習(xí)大量的平臺(tái)相關(guān)的API,這些API有的非常復(fù)雜。比如被稱為噩夢(mèng)般的技術(shù),Windows提供的COM/COM+庫(kù),其實(shí)就是需要了解一大堆基礎(chǔ)知識(shí)才能操縱好。再比如:面向接口編程、虛函數(shù)表、設(shè)計(jì)模式中的工廠模式、Windows DLL地獄的由來(lái)、Windows注冊(cè)表、序列化、Windows安全、RPC、IDL語(yǔ)言、支持腳本語(yǔ)言的自動(dòng)化技術(shù)(IDispatch)、對(duì)象引用計(jì)數(shù)器,線程安全和套間和ATL模板技術(shù)等。
3、而在C++的演化過(guò)程中,因?yàn)槿狈ι虡I(yè)公司的大力贊助,缺乏良好設(shè)計(jì)的跨平C++類庫(kù),多數(shù)人只能使用標(biāo)準(zhǔn)C++庫(kù),但跨平臺(tái)效果也不佳。直到近幾年Boost為代表的現(xiàn)代C++庫(kù)起到了很大的作用。同時(shí),Java程序員早就享受著非常好的支持,SUN的豐富的JDK,大量活躍的開(kāi)源社區(qū)(比如Apache) 對(duì)Java的推動(dòng)也是非常明顯的。
4、C++程序員成長(zhǎng)周期長(zhǎng),特別是中國(guó)很多靠做項(xiàng)目掙錢的成長(zhǎng)型企業(yè)面對(duì)選用C++作為編程語(yǔ)言會(huì)有所顧慮。
5、優(yōu)勢(shì)同樣很明顯:假定程序員能很好的運(yùn)用C++,那么程序可以獲得很高的性能,消耗較少的資源。在云計(jì)算時(shí)代,C++在很多關(guān)鍵業(yè)務(wù)上起到不可替代的作用,也為這個(gè)地球節(jié)能。舉個(gè)例子,我有一次要在美國(guó)服務(wù)器上部署一個(gè)JSF編寫的網(wǎng)站,安裝GlassFish失敗是因?yàn)樘摂M機(jī)核心線程和進(jìn)程的總數(shù)被限制,只能換成C++編寫的網(wǎng)站。這臺(tái)服務(wù)器還同時(shí)運(yùn)行著C++編寫的TCP服務(wù)程序和NoSQL數(shù)據(jù)庫(kù)。
你覺(jué)得C++會(huì)被別的編程語(yǔ)言取代嗎?
引自:C++為什么不能被取代? 作者:程序員幫主
關(guān)于一覽 | 聯(lián)系我們 | 用戶反饋
深圳市一覽網(wǎng)絡(luò)股份有限公司 版權(quán)所有 ©2006-2025 粵ICP備08106584號(hào) 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證:粵B2-20070017