回覆列表
  • 1 # 使用者8616219450500

    C++在歷史上曾經是C的擴充套件,不過現在兩個都各自有發展,所以現在的C++與現在的C沒有誰是誰的擴充套件的關係。

    現在有人說C和C++是大熊貓和小熊貓的關係,也就是說只是名字相近——這多少有欠公允。不過C和C++的確是有巨大區別的,C語言簡單有效,但處理大問題就很麻煩像把左輪手槍;而C++則簡直是一輛坦克,功能齊備,但更肥大——無非都是兵器而已。至於說學習上C是C++的基礎,倒是一大誤區,槍械和火炮長得可能有點像,甚至也有點淵源,但終究全不是一回事。

    先學C,後學C++有好處也有壞處,應該說至今仍有爭論。

    我的看法是,如果是做應用軟體一類的程式設計,就不應該先學C,而且應該在初學時少接觸C的舊式程式設計風格,而是把大部分精力放在C++的標準庫(包括基於STL的程式設計,這方面國內一般的教材最欠缺),以及基於物件和麵向物件的程式設計上。這是因為C++的這些應用從程式設計方式到程式碼風格都與C語言大相徑庭,初學養成C式的程式設計習慣就很改掉,反而限制對類和泛型程式設計的理解。

    如果是想接觸比較底層的東西,以後做軟體庫開發、系統程式設計之類,那麼學C語言,尤其是一些像宏、指標、記憶體管理等知識就很有好處(這些東西在前一種應用中卻都要儘量避免)。但先學C的好處並不明顯,因為直接學C++同樣可以學到這些東西,只要改變一點學習側重就可以了。

    上面是從應用方向角度說的。至於學習的困難程度,直接學C++並不難,而且在一些方面更簡單一些;只不過C++的內容比C多罷了。C++的創始人Stroustrup就大力提倡不要學C,並列舉了先學C的種種壞處。因此我的意見也是不學C,直接學C++。

    現在國內講C++的書一般是先講與C相似的一塊,後講C++獨有的內容,沒有融合在一起,看似C成了“基礎”。其實這種講法主要是由於國內編教材的教師多是學C語言(甚至機器碼、彙編)出身的,可能到很晚才接觸C++,因而有思維定勢。其實看國外許多教材,一入門就強調類的概念,入門不多久就大量用到STL,過程式的語法與這些一塊講,同樣也很直觀(物件的概念實際上比函式的概念直觀得多),可以學得通。

  • 中秋節和大豐收的關聯?
  • 美國有沒有孤兒院,有沒有棄嬰?