2015-06學習總結——c++

來源:互聯網
上載者:User

標籤:

在工作快三年的時候,突然想到我需要凝練下自身的知識體系。從大一開始接觸c++,差不多快8年了。想想過去走過的學習之路,很簡單,也很曲折。

經曆了從一無所知——入門——應用——修修補補的過程,到現在可以說我可以用c++完成我能想到的任何功能,或者說程式設計語言上沒有任何障礙。

所以,抽出一個月的下班時間重新讀了一下幾本書:

《Thinking in C++ 2nd》(中譯名《c++編程思想》,分兩卷)

Effective c++和More Effective c++

The C++ Programming Languages(特別版)

 

其中看到一句話很有感觸,“c++是一門可以伴隨你成長的語言”。

c++相對而言,是一個多泛型的程式設計語言,包括過程式、基於對象、物件導向、通用編程幾個分類,或者換種說法,c++可以認為是以下幾個內容的複合:

  •  better c
  • ADT(Abstract Data Type,抽象資料類型)
  • OOP(物件導向編程)
  • GP(Generic Programming & Template)

工作中用的最多的還是前三個,至於GP,可能需要瞭解的就是STL的各種容器和演算法。

從這一個月的書籍閱讀情況來看,我對c++基礎文法、自訂類型、繼承和多態都是相對比較瞭解的。但對異常處理機制、輸入輸出資料流、STL的演算法及迭代器瞭解不是很多。後續可以從這方面入手,提升下我對GP的理解。

實際學習的過程中,主要是學習解決及處理問題的能力,我們需要把需求滿足或者bug解決,這個過程需要大量的軟體工程設計和軟體調試的知識。因此,學習及應用c++的過程不可避免的涉及到作業系統相關的內容(尤其是c++標準不包含並發機制、介面的情況下)。以Windows為例,我們需要瞭解Visual Studio的使用、Windows基礎編程、Win32運行機制、MFC介面及內部處理機制、核心運行機制、網路通訊機制,這都需要很多的努力去瞭解深入,需要適量的練習編碼,以加深我們對相關概念的理解。就拿最簡單的命令列程式而言都有大量的函數及介面,保證程式的視覺效果,不對相關資料做深入學習,是不可能有更全面的認識的。

另一個方面就是bug跟蹤及解決的能力,這涉及到windows調試技巧、Visual Studio調試方法,也涉及部分編碼規範的內容,如何在代碼中儘可能少的引入bug。比如說我們可能需要學習windbg的使用、異常崩潰的堆棧分析,也可能需要學習一些代碼靜態分析工具的應用。

為了提升我們代碼的品質,我們還需要閱讀各種軟體工程實踐的書籍,學習前人的知識、經驗,瞭解設計模式、軟體開發規範、資料結構、演算法等。

所以說這個過程斷斷續續,修修補補,在這個過程中不斷地成長,經曆各種洗禮,這樣方能把自己的知識體系推向更高的水平。

 

這一個月的深入總結,個人感覺我可以從以下幾個方面,繼續深入的學習:

  • 異常處理機制

應用的不多,可以嘗試使用下,對比下傳統的c的錯誤處理機制到底有何不同。

  • GP&STL

STL目前基本會用,可以試著瞭解下boost庫,學習GP那本最經典的資料。

  • 資料結構&演算法

關注資料結構和演算法是因為程式設計是與數學分不開的,可能多數情況下我們都是可以直接使用成熟的演算法和套路,但是全部放下終究會淪為過時的境地。

  • c++ 0x/c++ 14

瞭解c++新的標準,目前瞭解不多,這方面可以深入學習下。

  • 編譯原理及彙編

其實就是為了回答編譯器是如何將c++原始碼轉化為可執行程式的,中間做了什麼,如何把組合語言嵌入到現有代碼中,以提高程式效能。

  • 效能最佳化及分析

這方面主要是回答如何提升指定功能的執行效率,可能需要改進演算法,也可能跟程式碼群組織有關。

 

當然這些是我目前能想到的,不會全部瞭解,一點點的來,選取幾個主題,深入下去就好了。

寫這麼多,只是為了提醒自己,不管做什麼,做到精通這是最終目標追求。

 

附:c++分級

初入江湖——慘不忍睹
---任何一版c++入門教程(c++ primer)

小有名氣——將就著用
Thinking in C++ 2nd edition Bruce Eckel
c++編程思想 第二版, Volume 1、Volume 2

名動一方——在大是大非的問題上立場堅定
Effective C++(第二版) 和 More Effective C++ Scott Meyers (Lostmouse、候捷 等 譯)

天下聞名——正確的使用C++的每個特性
C++程式設計語言——特別版 Bjarne Stroustrup (裘宗燕 譯)

一代宗師——掌握通用程式設計思想
範型編程與STL Matthew H. Austem (候捷 譯)

超凡入聖——清楚C++的每個細節
ISO/IEC 14882: Programming Languages-C++ ISO/IEC


天外飛仙——透過C++的軍大衣,看到赤裸裸的彙編碼
GCC的源碼爛熟於胸,有事沒事的隨便寫個編譯器玩玩

-------------------------------------------------------------------

本文Tocy

著作權@2015,請勿用於商業用途,轉載請註明原文地址。本人保留所有權利

2015-06學習總結——c++

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.