標籤:

不學C語言,直接學C++會有問題嗎?


請記住:「C和C++是兩種語言」

會C,不代表會CPP

會CPP,不代表會C

你不要被知乎的C/C++標籤給迷惑了,這都是不知道哪裡的人搞出來的標籤


去年年末,C++之父Bjarne Stroustrup提出了關於C++的五個普遍的誤解:

1. 「要理解C++,你必須先學習C」

2. 「C++是一門面向對象的語言」

3. 「為了軟體可靠性,你需要垃圾回收」

4. 「為了效率,你必須編寫底層代碼」

5. 「C++只適用於大型、複雜的程序」

關於第一個誤解的闡述可以回答提出的問題:

誤解1:「要理解C++,你必須先學習C」

不。學習C++基礎編程比學習C要容易地多。

C幾乎是C++的一個子集,但是它不是最先要學習的最好的子集,因為C缺少計數支持,類型安全,和易用的標準庫,而C++為簡單任務提供了這些。

為什麼有那麼多老師堅持「先學習C」的觀點?

- 因為多年來他們一直這麼做。

- 因為這是課程所要求的。

- 因為老師們年輕時就是這麼學習的。

- 因為C比C++小,就認為C比C++簡單。

- 因為學生們遲早要學習C(或者C++的C子集)。

然而,C並不是最先學習C++的最容易或者最常用的子集。更進一步,一旦你知道了C++的合理數量,C子集很容易學習。先學習C,會導致不斷忍受錯誤,以及學習如何避免這些錯誤,而在C++中很容易避免這些錯誤。

原文地址:

Five Popular Myths about C++, Part 1 :

Standard C++

中文版:

C++之父:關於C++的5個普遍誤解(1)

PS: 我就是大一直接學C++的,C++是我學習的第一門編程語言,當時也是被虐得很慘,基本上每次課後編程實驗都要做很長時間,不過一旦過了前面的坎對後面學習編程就很有幫助。


親身經歷,有學C很沒學C其實差別不大,如果你目的是學C++的話。

當然,有時間的話把C也學一遍也不礙事。


沒去過印度,直接去印度尼西亞會有問題嗎?


最好不學c


幾年前,哥剛參加工作的時候,也在為這個思慮來思慮去,被一下大神忽悠來忽悠去。語言沒有任何意義,請直接做出你的小項目,那些c語言和c++的細節自然慢慢就了解了。好多東西,你被大神那麼一說,如果你沒真正遇到過,你體會不到的。舉個簡單例子,你知道函數這個東西,可以使代碼結構清晰,減少bug傳播。這兩句話,我沒寫過代碼之前就知道。但是卻是在寫了幾萬行代碼之後才深有體會。什麼 面向過 面向對象 函數式編程 千萬別鑽牛角尖 說了你現在也未必真正了解 等你有了代碼積累 自然會有體會。管他什麼語言,做的小項目,讓自己有點小成就才是王道


我想補充一點就是,在理想情況下是沒有影響的。

但是如果課堂上大部分學生都學過c,而你偏偏沒有的話,老師在講 「類」以前的內容時候,在其他學生正常接受的情況下,你要比他們花費等多的精力與時間。

總之編程就是在你學會一門語言之後,學第二門會輕鬆很多。

學沒學過c再學c++最主要的差別是,學習第一門編程語言和學習第二門編程語言的差別。

總之,在第一次接觸編程,希望不要偷懶,多費點精力與時間多寫一點代碼。等你再看各種語言的時候,會發現他們是so easy,


把計算機的基礎知識弄清楚了,就可以開始學c++了,不然一開始自學c++會有一些名詞不懂,不用學c的


不贊同你們對c和c++如此明確的劃分。

我學習的感覺是學了c對學c++有極大的幫助。或者說c更像一個學編程的入門語言,因為其簡單的語法以及對底層的觸碰(當然會彙編就更好了)。

c++是c的超集。直接學c++估計對從沒接觸過語言的同學來說有很大難度。看完C語言的書再看c++的書前面的語法啥子的很快就過了。


都是語言,沒有什麼高低等之分,只是術業有專攻


直接學,沒有任何問題,還能防止你用C++寫C代碼.


會更好。


沒有問題,不過你要找一本好書,國內的書大部分是c with class的

推薦試試 Accelerated C++


推薦閱讀:

怎麼理解 C 語言是面向過程的語言,C++ 是面向對象的語言。?
gcc環境下不能使用gets怎麼辦?
怎麼理解C語言的複雜聲明?
C語言中的指針為什麼要區別出指向不同數據類型的指針?
怎樣判斷浮點數是否相等並保證同一性?

TAG:C編程語言 | C |