-
1 # 碼中尋樂
-
2 # C語言基礎
基礎知識會了,接下來應該可以進入實戰了。
帶介面的應用程式學會了C/C++語言本身,可能還沒有什麼成就感,畢竟都是控制檯的程式, 老是輸出一串字串, 整天面對各黑框框,成就感估計不是那麼爽。要是能搞個帶UI介面的程式就爽了。
下來就看個人的志向了, 如果走微軟路線, 那你下來學MFC好了,如果要走開源路線, 那開源跨平臺的介面庫多得是。
走到這一步, 恭喜你,可以照葫蘆畫瓢的搞個小應用程式了, 還帶介面。
網路應用程式語言搞懂了,UI程式也會了, 下來該學學網路咯, 現在那個程式不需要聯網啊,懂網路對你理解很多程式非常有幫助。但是網路應用程式從哪裡入手呢 ?
我來告訴你,從《UNIX網路程式設計》這本書入手吧,這本書可以教會你網路套接字的底層原理,把上面的例子好好學習,自己動手寫一個迴應伺服器。寫一個伺服器端,在寫一個客戶端。伺服器端請務必學會 select 這個簡單的多路複用模型,這樣你才能慢慢的深入裡面 poll , epoll ,IOCP 之類的模型。
檔案操作所有的程式,基本都會用到檔案的讀寫操作,windows系統有自己的檔案操作API, 比如CreateFile, DeleteFile 等,請新手不要學windows的檔案操作API, 新手請學標準C語言的檔案操作函式,簡單易學還跨平臺。就那麼幾個函式,三下五除二你也就學會了, fopen, fclose, fread , fwrite, fseek, ftell 就這麼幾個而已。
深刻理解記憶體與指標的關係作為一個C/C++程式設計師, 從學習程式的頭一天開始,就要和記憶體的分配釋放作鬥爭。你必須理解記憶體與指標的關係。怎麼樣才能理解呢, 請大家去看 《高質量C/C++程式設計》裡面自帶的幾個經典例子吧。把那幾個例子搞得清清楚楚, 基本能夠理解其中的原理了。
仔細研究apache原始碼學程式非特別是C/C++程式,非3年之功可以出山,三年對一個C/C++程式來說是一個從量變到質變的過程,三年的專案實戰經驗,可以讓你接觸到一個完整的應用程式所需要具備的骨架。但是這個階段你寫的程式碼,可能充滿BUG, 會宕機,執行效率很差,自己回頭看看一年前寫的程式碼,可能自己都感覺噁心, 看不下去。沒有關係,這種感覺是每一個進步青年都會有的。要提高自己的程式碼水平, 還是要像高手學習。你可能要問,公司同事的水平一般, 水平好的人家也不願意給我講。沒有關係,開源的程式碼就是你像高手學習的最佳途徑,開原始碼是高手留下的練功秘訣, 你看了後你會突然感覺茅塞頓開, 感覺自己的水平差人家太遠了。我為何要推薦apache的原始碼呢?
apache的原始碼是高手中的高手寫的,執行效率和程式架構堪稱一絕。裡面的很多思想是所有程式都通用的,搞懂了, 很多模組你也可以直接拿來使用。apache對記憶體池的使用, 對執行緒池的使用, 對模組結構的封裝,非常具有實際意義。要是你能把apache的原始碼吃個透徹,每一個細節都搞明白了為何人家要這麼實現,我可以給你說,“恭喜你 , 你離傳說中的高手已經不遠了。”
修煉C++我上面說的基本都是修煉C的, 要修煉C++, 還得再花3年功夫, 才有可能練成C++高手。C++太博大精深了,其中最複雜的莫過於泛型程式設計思想,不要以為能寫個模板類就認為泛型程式設計不過如此而已。仔細看看STL原始碼, Boost 原始碼, 你就知道泛型程式設計有多麼的博大精深了。修煉C++, 可以從用C++封裝的MFC入手, 看高手如何透過C++語言, 封裝這樣龐大的UI庫,裡面應用了很多的C++機制, 最典型的就是多型機制, 還有很多的設計模式應用可以研究。
深研設計模式設計模式是程式設計的靈魂,是通用方法,當你面對一個大型專案的時候,如何設計一個有彈性的系統,是所有系統分析員應該掌握的技能。在設計模式的研究上,要結合實際的專案進行。
一起共勉程式設計源於興趣,興趣忠於能會,能會忠於勤學。如果你又興趣,不妨一起共進,學習不缺興趣,重要的是你去發現。
-
3 # O0o0o0o0O
演算法是要理解的,不是背的。
有時間就刷刷題吧,找工作基本都要考題
然後讀一些開原始碼
-
4 # 李天允
首先要說的是背演算法是沒有什麼用的,計算機程式設計主要是多做專案,如果沒有實際專案就自己設計專案,或者從類似豬八戒網這類的地方看看別人的需求,然後自己嘗試做一下,在實際專案中你會發現很多問題,在解決問題的過程中提高自己是最快的方式。做幾個專案提高自己水平後,就要開始培養自己的思維模式了,建議你去看看高德納的《計算機程式設計的藝術》,還有一本叫程式設計思維的書,大概名字是這個,具體忘了。主要是提升你的對整體專案的框架的設計,到後期你會發現你的程式設計思維決定你的發展高度。
回覆列表
這裡需要強調一點,基礎知識你是真的會了嗎? 那你能不能將教程上的那些習題都能用程式碼實現,並在執行時得到正確的結果呢? 如果能做到這點,基本上就能確定基礎知識無大礙了。
程式設計和演算法相輔相成,並不衝突。 當你在學演算法,而不是機械的背演算法時,同樣的需要將程式碼敲出來,並編譯它得到可執行的程式,在執行時觀察結果是否滿足預期。如果結果不正確,還得仔細分析、除錯程式碼直到完全正確。這個過程中會加深對演算法的理解,也會提高程式設計的實際水平,相互促進成長。
切記不要單純的“背”演算法,那樣的意義不大,陷入死讀書的陷阱。 程式設計還是要多動手寫程式碼、除錯、驗證,這才是正確姿勢。