1、網(wǎng)友fastest286: C++ 的編譯速度讓我不敢使用一些大型的優(yōu)質(zhì)庫, 例如 ACE, 非常郁悶. 現(xiàn)在我開始使用 D 來寫程序了, 感覺不錯(cuò). 目前還沒有什么好的 IDE, debugger 也只有 windows 下面好點(diǎn). 平時(shí)的 現(xiàn)在一點(diǎn)就不想用回 C++ 了. 這個(gè)編譯器, 在 vmware 中編譯自帶的類庫(帶網(wǎng)絡(luò), container, 文件, io, 甚至還有一個(gè) cluster 系統(tǒng)), 總共不到10秒鐘, 編譯我自己的程序, 1秒鐘都不用.快速的編譯, 加上方便的 unittest, 和用 python 寫程序的快速寫, 快速調(diào)的感覺相象. 2、網(wǎng)友benjiam: 語言不是宗教。 但語音是信仰。 linus 的水平 這里沒人能比得上,他對(duì)c++ 的理解水平這里也沒人能比得上。在越來越花哨的。編程面前,我們不要忘記我們只是操作 3、網(wǎng)友a(bǔ)ndy_show: 個(gè)人認(rèn)為,這個(gè)世界上最好的 C+ +好比一種威力強(qiáng)大的武功心法,但是太容易走火入魔,坦白的說,我寫了十多年的程序,但是在現(xiàn)實(shí)中很少見到C++寫的好的程序員,一個(gè)很重要的原因是C+ +的豐富的特性會(huì)把人引入歧途,你會(huì)不自覺的選擇復(fù)雜的設(shè)計(jì),現(xiàn)實(shí)中的很多代碼是許多人在學(xué)習(xí)過程中寫成的,而很多人在使用這些C++的特性的時(shí)候并不明 確這么使用這種武功是否合適!這樣的代碼可能遍布很多以C++作為開發(fā)工具的產(chǎn)品中。 而如果讓這些程序員從一開始就用C的方式去寫,可能就不會(huì)范他們用C++時(shí)所犯的錯(cuò)誤,從這個(gè)角度而言,C語言的簡(jiǎn)單性恰恰是一種優(yōu)勢(shì)。C++的復(fù)雜性會(huì) 使很多人誤用。而C語言的簡(jiǎn)單性,一般情況下都會(huì)迫使你使用比較簡(jiǎn)單的設(shè)計(jì),例如C語言不能在語言層次上提供類繼承的方式,那么它會(huì)迫使你更多的使用組 合,而不是繼承這樣的重用方式,即使你可以用函數(shù)指針表的方式實(shí)現(xiàn)多態(tài),也不可能象C++那樣把類層次擴(kuò)展了一層又一層。 在c語言中,函數(shù)指針表的在c語言中以更接近于定義接口的方式被使用。這些都是C語言的簡(jiǎn)單性迫使你做出的選擇。而很多C++的程序員卻在C++的豐富的特性前面忘了簡(jiǎn)單性原則的重要性。 4、網(wǎng)友middle: C用來實(shí)現(xiàn)封裝性很簡(jiǎn)單。比較難以用C直接實(shí)現(xiàn)的是繼承和多態(tài)。不過在現(xiàn)實(shí)中繼承和多態(tài)真的是可以用的少之又少的。很多所謂的繼承和多態(tài)的“設(shè)計(jì)”完全可以用基于策略的方式來完成。基于策略的方式在C里用函數(shù)指針或者表驅(qū)動(dòng)完全可以做到。 很多不得不用C++高級(jí)特性的“設(shè)計(jì)”,其實(shí)從一開始就使用Java甚至script更容易做到。OO并不是模塊化和可維護(hù)性的唯一可行方式,甚至不是最優(yōu)的方式。而C++的OO實(shí)現(xiàn)也不是很好的實(shí)現(xiàn)。 5、網(wǎng)友junhao: C是精煉的,C++是靈活的,但也是讓人頭疼的,自己取舍吧。 6、網(wǎng)友lioqio: 個(gè)人編程感受: 1、在 2、在操作系統(tǒng)上層是可以用C++的,比如windows使用的Kernel streaming,個(gè)人感覺遠(yuǎn)比Linux的V4L2漂亮多了。以及在OS/X的IO/Kit(Object C)和window的KMDF等內(nèi)核驅(qū)動(dòng)開發(fā)框架,使得驅(qū)動(dòng)開發(fā)非常簡(jiǎn)便。(順便說一下,從這點(diǎn)來看,是linux在學(xué)windows,windows在 學(xué)apple:) 3、對(duì)于應(yīng)用開發(fā),如果規(guī)模大一些的本地 4、但說到底,我們一般用C++的特性,C完全都可以自己做。 7、網(wǎng)友psusong: 用C 設(shè)計(jì)接口,用C++來實(shí)現(xiàn),例子就是Windows里使用的標(biāo)準(zhǔn)DLL,我們一般這樣做:DLL里提供一個(gè)NewInstance的接口,返回一個(gè)實(shí)例句 柄,其他的接口函數(shù)的第一個(gè)參數(shù)都是一個(gè)實(shí)例句柄,另外還有一個(gè)DeleteInstance的接口函數(shù),這樣接口也能支持多實(shí)例。我也是這樣做的,這樣 自己代碼寫起來爽,別人用起來也爽。 網(wǎng)友反對(duì)觀點(diǎn)論 1、網(wǎng)友pass86: C++機(jī)制很多,強(qiáng)大在于此。 面向?qū)ο?br> 變相過程 基于對(duì)象 泛型編程 2、網(wǎng)友duyanning: 也太搞笑了吧,總拿全功能的std::string跟幾乎啥也不能干的char*作比較,誰規(guī)定你只要用C++處理字符串就得用std::string了? 拜托,如果你的需求很單純,如果你又很在意效率,你完全可以不用全能的std::string,std::string的存在并不能作為妨礙你創(chuàng)造適合你需要的your::string從而提升抽象層次的借口。 Torvalds理糙人更糙,我徹底失望了。 應(yīng)當(dāng)搞清楚,作為操作系統(tǒng)內(nèi)核級(jí)的開發(fā)者,在不清楚自己所用的std::string實(shí)現(xiàn)都在背后做了些什么的情況下就敢用,這是他自己素質(zhì)的問題,而不 是他所用std::string實(shí)現(xiàn)的問題。如果不清楚std::string是怎樣實(shí)現(xiàn)的,而std::string的行為對(duì)于你的程序又很關(guān)鍵的話, 就請(qǐng)去調(diào)查,去弄清楚,然后選擇要不要用,而不是抱怨std::string背著你如何如何。 假如他選擇的不是C++的std::string而是某個(gè)用C寫的字符串函數(shù)包,那他是不是也要因?yàn)椴磺宄@個(gè)字符串函數(shù)包的具體實(shí)現(xiàn)而要對(duì)“一切抽象及復(fù)用”進(jìn)行否定呢? Torvalds僅僅是在敵視C++嗎? 他已經(jīng)把他自己放在一切計(jì)算最根本的“抽象”的對(duì)立面上了。Torvalds長(zhǎng)期以來對(duì)于C++和C++用戶的侮辱讓他看起來更像是個(gè)小丑。 3、網(wǎng)友1073X: 做系統(tǒng)軟件開發(fā)的時(shí)候,重要的是理解系統(tǒng)的運(yùn)作方式,那些漂亮的抽象手法和高級(jí)特性是次要的。這是怎么說的?軟件本來就是一層一層又一層的,要在何種層次上開發(fā),就應(yīng)該在何種層次上理解。因?yàn)闆]有理解下層而不放心上層是完美主義者的心理障礙。 OO又不是只有抽象,C++比C明顯的優(yōu)勢(shì)就是更合理的數(shù)據(jù)封裝。不如說Torvalds對(duì)OO還沒有入門。 4、網(wǎng)友fish6344 大家不必在意別人對(duì)C++語言的敵意!聽聽java、Delphi及C#等語言的發(fā)明者們的聲音,無一不是在大談他們的東東的好處,而C++是這也不好那也不好。但他們?cè)谧栽傋砸训恼Z言效率極佳的時(shí)候,無一不拿C++作為參照(聲稱等同甚至超過C++)! 他們總用自已偏愛的語言的優(yōu)點(diǎn)(未必是優(yōu)點(diǎn))去攻擊C ++的缺點(diǎn)(也未必就是缺點(diǎn)), 這其實(shí)說明他們?cè)跐撘庾R(shí)上已視C++為開發(fā)工具的標(biāo)準(zhǔn),這點(diǎn)很象中國古時(shí)候那個(gè)賣矛和盾的人!即使是Linus Torvalds對(duì)C++的異議,我認(rèn)為異議的實(shí)質(zhì)也是他對(duì)OOP以及使用C++而濫用繼承的人的不滿,對(duì)C++語言的攻擊反而略顯蒼白。 科學(xué)領(lǐng)域本身就是百家爭(zhēng)鳴的世界,語言激烈點(diǎn)也未嘗不可。但我覺得每一種語言都應(yīng)該被我們所尊重。各種語言的存在,自然有其存在的理由。 C++在今天,的確今非昔比,但這并不是因?yàn)镃++不夠好、不如其它語言,主要原因是今天的電算環(huán)境和C++誕生時(shí)相比,發(fā)生了巨大的變化。互聯(lián)網(wǎng)興盛, 硬件性能提升而價(jià)格下降等等因素導(dǎo)至java應(yīng)運(yùn)而生。C++作為一個(gè)80年代誕生的靜態(tài)語言,加上它賦預(yù)使用者太多的權(quán)力(權(quán)力可是雙刃劍啊!)、標(biāo)準(zhǔn) 的約束性以及C++的教育狀況,有今天的境況是完全自然的。 所以大家不必在意世人對(duì)C++的非議,我可以作這樣的比喻:如果你想作一個(gè)原始社會(huì)的部落首領(lǐng),請(qǐng)用匯編;如果你想當(dāng)一個(gè)封建君主,請(qǐng)用C;如果你想作一 個(gè)開明偉大的國家元首(當(dāng)然你必須有超凡的駕馭權(quán)力的能力!),可以使用C++,如果想當(dāng)大臣,知府什么的,那會(huì)有更多的選擇...... 我永遠(yuǎn)愛你-C++! |
|