自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

初學(xué)C++語言感受

開發(fā) 后端
其實C#的語法與C++非常相似,有些變化引起的錯誤卻很嚴(yán)重,本文就對于大多數(shù)用戶頭疼的C++語言進行詳細(xì)的剖析與介紹。

對***次接觸到C++語言的用戶和學(xué)者來說,了解C++語言的概念是非常重要的,那么就先說一下什么是C++語言,所謂C++語言:是一種使用非常廣泛的計算機編程語言。。。

實際上,不管是在各大國內(nèi)論壇上,還是在comp.lang.c++.moderated這樣的國際C++論壇上,乃至于在douban上的小組內(nèi),有心者都會發(fā)現(xiàn),對C++語言的細(xì)節(jié)的關(guān)注一直都沒有停止過,同樣,對C++語言的細(xì)節(jié)的抱怨也從來都沒有停止過。

一個例子就是comp.lang.c++.moderated上的一個技術(shù)牛人James Kanze說的,他說接觸C++十年了,到現(xiàn)在還需要不時去翻C++標(biāo)準(zhǔn)。這就難怪Eric Raymond老大在《The Art of Unix Programming》中說“C++是反緊湊”的了。C++中的細(xì)節(jié)太多,就算都看過了,也不可能都記住。更關(guān)鍵的是,就算都記住了,也不能讓你成為一個真正的好程序員。

絕大多數(shù)人都把細(xì)節(jié)太多(或者用貶義詞來說就是“陰暗角落太多”)歸結(jié)為C++的本質(zhì)問題,認(rèn)為一切邪惡由此而生。也正因此,大約9月份的時候,Linus在郵件列表上說“C++是一門有思想包袱的語言;僅僅是為了讓程序員遠(yuǎn)離C++,我也要用C”。

這句短短的話在國內(nèi)引起了很大的反應(yīng),最初是劉江轉(zhuǎn)了Linus的話,然后云風(fēng)和孟巖都發(fā)表了自己的看法;我也寫了一篇“Why C++”(后來發(fā)給Bjarne,Bjarne對這篇文章做了一個友情評注)。

然而,這一通渾水?dāng)囘^之后,我相信引起的變化未必很大。大多數(shù)原先的反對者能從中找出反對的理由,于是更加反對;大多數(shù)原先的贊同者也能從中找到贊同的理由,于是更加贊同;而剩下來的原先沒有明確意見的,看雙方各有各的道理,可能還是沒有頭緒。

顯然,如果找不出要學(xué)習(xí)C++語言的理由,那么談什么“正確的學(xué)習(xí)方法”等于是廢話。

首先重復(fù)一句Bjarne的話:“我們的系統(tǒng)已經(jīng)是極度復(fù)雜的了,為了避開C++語言的復(fù)雜性而干脆不用C++(Linus的做法),無異于因噎廢食?!痹谒锌捎肅和C++的領(lǐng)域,C++都是比C更好的語言。

當(dāng)我說“更好的”時候,我說的是C++擁有比C更安全的類型檢查、更好的抽象機制、更優(yōu)秀的庫。當(dāng)然,凡事都有例外,如果你做的項目1)不大。2)編碼中用不到什么抽象機制,甚至ADT(抽象數(shù)據(jù)類型,例如std::complex這種不含多態(tài)和繼承的)也用不到,RAII也用不到,異常也用不到。

你連基礎(chǔ)庫(如,簡化資源管理的智能指針、智能容器)都用不著。那么也許你用C的確沒問題;所以如果你的情況如此,不用和我爭論,因為我無法反駁你。我們這里說的領(lǐng)域大致是Bjarne在“C++應(yīng)用列表”里面列出來的那些地方。

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

值得注意的是,這里需要避免一個陷阱,就是一旦人們認(rèn)定了“C++不好”,那么這個理由就會“長出自己的腳來”,即,就算我們拿掉C++的復(fù)雜性,他們可能也會堅持還是不用C++,并為之找一堆理由。我假定你不是這樣的人。不過,也許最可能的是他會說:“問題是我們今天用的C++并非如此(簡潔),你的假設(shè)不成立?!笔堑?,我的假設(shè)不成立。但雖然我們無法消除復(fù)雜性,我們實際上是可以容易地避開復(fù)雜性,避短揚長的。這也是本文的要點,容我后面再詳述。

當(dāng)然,到現(xiàn)在你可能還是會說。我還是不用C++語言,因為我可以用D;或者如果你本來做的項目就不需要C++,你則可能會說,我用Python。首先,如果你的項目能用Java/Python乃至Ruby做,那么用C++是自討苦吃。

因為能用那些語言代表你的項目在效率上本身要求就不高,那么用一門效率上討不到太大好處,復(fù)雜性上卻綽綽有余的語言,有什么價值呢?其次,如果你的項目效率是很重要的,你可能會說可以用D。

然而現(xiàn)實是D在工業(yè)界尤其是國內(nèi)被運用得非常少,幾乎沒有。而C++語言卻有大量的既有代碼,已經(jīng)使用C++去做他們的產(chǎn)品的公司,在很長一段時間之內(nèi)幾乎是不可能用別的語言重寫代碼的,正如Joel所說,決定重寫一個非平凡的代碼基==自殺。所以,我們至少要注意以下兩個明顯的事實。

【編輯推薦】

  1. 如何正確編寫C++項目開發(fā)編寫項目計劃書
  2. 對C++庫函數(shù)進行學(xué)習(xí)探索總結(jié)筆記
  3. 深度演示C++語言的種種高安全性
  4. 詳細(xì)介紹如何準(zhǔn)確無誤的編寫C++語言
  5. 深度演示C++語言的種種高安全性
責(zé)任編輯:chenqingxiang 來源: 中關(guān)村在線
相關(guān)推薦

2010-01-14 17:18:17

C++語言

2011-07-12 13:01:00

CC++

2022-09-22 10:22:36

C++編程語言代碼

2010-01-15 17:38:37

C++語言

2011-06-21 10:44:31

const

2010-01-13 17:04:36

C++語言

2010-01-26 10:27:43

C++語言

2018-01-11 15:31:17

Java語言感受

2010-01-15 19:05:42

學(xué)習(xí)C++

2010-01-14 10:34:02

C++語言

2010-01-15 14:46:20

C++語言

2011-04-08 15:07:40

C++

2009-02-18 11:10:40

c++忠告方法

2010-01-21 16:08:26

C++語言

2010-01-18 16:27:26

C++語言

2010-01-22 15:30:36

C++語言

2010-01-18 09:39:25

C++語言

2010-01-15 10:22:24

C++語言

2010-01-14 17:02:10

學(xué)習(xí)C++

2011-01-05 11:12:34

C++
點贊
收藏

51CTO技術(shù)棧公眾號