標籤:

正在學c++但是越學越覺得自己還有好多東西不知道?

大一才決定學cs,全都因為興趣,但是之前沒基礎,也是高中才接觸編程,然後又要因為其他科目而沒時間專註地看計算機方面的書。所以現在大一的這年都快過去了才剛學c++,在學的過程中也會去逛相關網站,結果發現大大們說的好多東西聽都沒聽說過(;′??Д??` 甚至最開始連框架、環境之類的東西都不知道,所以我就各種穀歌,然後越谷歌心越虛,覺得好多東西需要補一補,想問下想樓主這樣半路出家的要惡補哪些東西,還有大大們最開始學編程的時候是不是也是直接接觸語言的,還有學語言的時候搭配什麼樣的知識相關書籍,學習比較好_(|3」∠)__


談一下我的學習經驗。鄙人是碩士學習期間自學C++的,因為想從事金工,需要懂一門C++這樣的基礎語言。C++是一門計算機語言,這個東西搞出來就是給人用的,所以花點心思一定可以學會,我就是抱著這樣的想法開始自學的。具體的自學過程並不複雜,用四個字概括就是「簡單粗暴」。

首先,下載一套C++教學視頻,每天看若干集,邊看邊跟著寫視頻里的演示程序,同時閱讀《C++ Primer》相關章節。這一遍是為了熟悉基礎語法,大約一個月可以看完視頻,相當於大學一個學期的課程量。

看完視頻後找一本程序示例多,不太複雜的計算機圖書,可以是C++編程的教材,可以是C++數據結構演算法的教材(我選的是C++數值計算的書)。邊讀書邊敲一遍書中代碼,做一做練習題,保持一周一到兩章的進度。這一遍是鞏固基礎語法,同時學習更多細節上的語法知識。

找一個小型的C++開源項目,研究一下類的組織結構(我研究的是newmat庫),這一遍能增強面向對象的理解能力,同時接觸到「架構」這個問題。然後閱讀「設計模式」方面的書(推薦《Head First設計模式》),把模式套到研究的代碼中,增加對「模式」的理解。

最後,自己親手寫一個C++程序庫(可以不用100%完成),完成一類特定的功能。這個經歷是最重要的,因為這項工作貫穿了從基礎語法、編程習慣到類的設計,模式應用和宏觀架構的方方面面,同時收穫敲打數萬行代碼的成就感。

希望我的經歷對自學者有幫助,與君共勉。


不要管亂七八糟的東西

先學那些平台無關,系統無關,框架無關的東西

那些是基礎


曾經有個公認的說法就是簡歷里最好別寫「精通」C++,這個詞碰不起,輕輕鬆鬆問死你。我開始也是這麼覺得,但現在覺得其實也不是不可能。

首先,無論寫paper還是學東西都要先列出整體的架構。這點我建議看effective C++的item 1. 後面的需要些根基再看不然轉頭就忘但第一章很好地列出了C++的幾個組成部分,C,OO的C++,Template,STL。而STL其實也是基於Template。照著這四個方向去找自己的漏洞。

其次就是讀code,無論面試題的code還是開源項目的code,當然最簡單最直接的就是讀STL源碼。那可以說是將C++性能發揮到極致的code了,如果你夠diao也可以看Node,V8是C++寫的,Node Core也不過是Ryan Dahl寫的1500行C,但說實話V8沒一定功底看著就是天書,還是看STL吧。

Code是寫出來的更是讀出來的。讀多了自然懂的就多了。閉門寫幾個月不如讀高人的code一個月。不是你不懂,而是你根本想不到要在這裡用。誰都不敢說什麼都懂,但基本上把effective C++開始提到的那四點弄通就已經很nb了。框架都是扯淡,都玩C++了,還要什麼框架。玩框架去玩js,python去。平台更不用太注意,一些api而已。你學OS的時候會去implement system calls,那時你再回頭看平台才是事半功倍,融會貫通。

學C++覺得自己毛也不懂很正常,C++覺得自己什麼都懂了才不正常呢。。。


說自己「精通C++」了,那就是還沒入門。

你這個狀態很好。


這就對了


推薦 C++ Primer

這本書我看了三遍了。但是感受確實很不同。

第一遍時, 如模板編程,多態的一些機制都是根本看不懂,於是就囫圇吞棗,就這樣過去了。

後來忽然覺得c++中較有特色的恰好是我不會的,於是又補了一遍,重點看了類之後的章節,因為一本書中大多數內容還都是我已經會的,所以就直接跳過。

後來面試的時候,發現問的又恰好是我不會的,醉了,滿滿的信心瞬間麽得了。

於是又拿起這本書來讀,發現面試的那些問題在書上都是可以找到的,而且都是一些細節,讀的時候根本就沒有留意。

我向你推薦這本書,因為我覺得真的不錯,當然讀書的時候記得做必要的筆記哦,加油吧!


我的建議:

1學習就是學新的的東西,何來一開始就懂呢?

2無論什麼學科,我想基礎沒打好,也不會水平高的。

3你可以看看我的博客里有我的學習經歷,僅參考。

https://github.com/whps/whps.github.io/issues


那說明你快入門了


推薦閱讀:

為什麼現代CFD和PIC模擬大量採用C++編寫?針對這些模擬C++相對於C的優勢在哪?
C、C++、MATLAB、Python、Go 哪個比較適合寫演算法?
C++如何調用matlab庫函數?
linux下子進程退出狀態為什麼永遠是非正常?
LYP是一位怎樣優秀的巨巨?

TAG:程序員 | C | CC |