現在已經要2007了,雖然說書還是要K,不過網路可以變成一種方便補助學習
根據C++的學習路徑,而分類幾個主題來列出相關網路資源
學習程式設計
必要條件:
- 自我學習
- 記住正確的詞彙
- 善用搜尋
- 分享及討論
- 學好英文
學習程式設計大概會遵照這個流程,從12開始之後因為所有的語言都一樣,所以只要學一次。接著你就會從1~11學習各種不同的語言:
- 資料型態(Data Type):該語言能宣告什麼樣的變數於程式中使用?如int, float。Script語言如PHP通常只會學到純量(var),array,hash的用法。
- 基本輸出入(Standard I/O):如何從鍵盤讀取?如何從螢幕輸出?STDIO的觀念。
- 流程/迴圈控制(Branch/Loop Control):if...else/switch...case, for/while
如果有特殊的語法(syntax)也通常在此會學到 - 函式(Function):function要怎樣宣告?呼叫?傳遞參數?
- 特殊用法:如C++通常會學習到指標,Template。而PHP通常會學習到HTML或Javascript
- 函式庫(Library):C/C++你應該學習Standard Template Library(STL)
- 到這一階段你已經可以撰寫基本的演算法,如此你便能夠進行結構化程式設計(Structural Programming)
- 類別(Class):學習宣告類別並初始化物件,和物件的存取子(accessor)
- 例外處理(Exception handling):程式一定會出錯,可是如何去拯救?
- 視窗程式設計:利用視窗元件重新撰寫以前的程式,並學習IDE的使用
- 到這一階段你已經可以撰寫物件程式,如此你便能夠進行以物件為基礎的程式設計(Object-based Programming)
- 繼承(Inheritance):繼承的觀念,以及如何利用繼承來設計及減少你的程式碼
- 多型(Polymorphism):如何利用多型在多個類別/物件之間讓他們互動,也會提到一點設計樣式
- 到這一階段你已經可以撰寫小型的應用程式,學校作業大多都沒問題,如此你便能進行物件導向程式設計(Object Oriented Programming)。到這裡你應該已經有可以打工的水準。
- 資料庫系統(Database):你會學習如何使用資料庫儲存你的應用程式資料
- 軟體工程(Software Enginnering):軟體設計的巨觀,從大的流程瞭解一套「軟體系統」是如何完成的,而程式的實做只是其一小部分。在此你會學習到UML等軟體設計中相關的文字,圖形,及術語。你也會學到傳統的Waterfall Model,有這些主題:
- 需求分析(Requirement Analysis):如何瞭解一個軟體他究竟要完成什麼,並確實地的記錄它
- 軟體架構(Software Architecture):在進行實做之前,先要進行設計
- 專案管理(Project Management):一套軟體要如期完成要有很好的時程控管,也會學到利用工具來管理你的軟體狀態(SCM)。
- 軟體測試及品質:這裡你會學到利用單元測試等方法來保障你的軟體品質
- 設計樣式(Design Pattern):軟體設計的微觀,是前人將經常出現的軟體實做方式集合起來成為一個個「樣式」,讓你知道如何利用OOP來有規劃地撰寫你的程式。
- 領域相關(Domain Specific):有許多不同的領域需要不同的知識,才能撰寫出不同的程式,你想要走哪個方向?目前熱門的有,
- OpenSource(開放原碼,需要瞭解社群精神,也需要熟悉Linux,C++)
- Web(要熟悉HTML,CSS,JS...以及多種Script語言)
- Microsoft(熟悉撰寫.Net並瞭解微軟產品架構及商業模式)
- 韌體/硬體相關(熟悉C及x86組合語言)
- 學術研究/升學(通常開放原碼的領域都會接觸,Java是主流。多練習ACM題目也有幫助)
- 至此你可以有能力開發一套完整的軟體,如果你累積了許多程式實做經驗,畢業後就可以去找該領域的軟體工程師職位了。
幾個你總是得思考的問題:
- 我在哪裡?
- 我想要往哪去?
C/C++語言核心
什麼是C/C++?
C++是Bjarne Stroustrup於1983年於貝爾實驗室發明的 ,雖然是高階語言,確有低階語言的特性,所以也有人稱作他是中階語言。(參考C++)
書籍
http://caterpillar.onlyfun.net/Gossip/CppGossip/CppGossip.html
http://squall.cs.ntou.edu.tw/cpp/index.html
http://www.books.com.tw/exep/prod/booksfile.php?item=0010178918
http://www.books.com.tw/exep/prod/booksfile.php?item=0010226566
http://www.books.com.tw/exep/prod/booksfile.php?item=0010264537
http://www.books.com.tw/exep/prod/booksfile.php?item=0010264536
參考
http://www.cplusplus.com/
http://www.cppreference.com/
http://www.msoe.edu/eecs/ce/courseinfo/stl/index.htm
物件導向程式設計(OOP)
什麼是Object Oriented Programming?
物件導向的觀念約在1960年發明,大概在1990年代成為主流。目的是以系統設計的角度或是真實情境來對應到程式設計上,幫助人去思考及撰寫。相關主題是UML。
http://www.books.com.tw/exep/prod/booksfile.php?item=0010189568
http://www.books.com.tw/exep/prod/booksfile.php?item=0010331221
視窗程式設計
目前視窗程式的作法有三種:
- 使用原生或衍生視窗函示庫撰寫。MS Windows上是Win32API, MFC。Linux上有Xlib, Qt, Gtk+。
- 使用Java或是.Net撰寫,這些是類似VM的作法(跨平台)
- 使用連結至tk的函示庫撰寫:PHP-Gtk,Perl-tk等,很多script語言都有支援(部分跨平台)
Java Swing:
http://www.oreilly.com.tw/product_java.php?id=a099
.Net(C#):
http://msdn.microsoft.com/library/cht/
謝謝,寫的好詳細唷!!
回覆刪除虽然你写的很清楚明了,但是学下来还是要花很大时间跟精力的.
回覆刪除