我大一學習C++的經歷

fa4fa1發表於2012-09-12

  首先說一下,由於我是小白,如果遇到什麼學術上的錯誤還請大家見諒。我寫這篇文章主要原因是我想通過我自己的經歷客觀的反映一下現在普通大學計算機專業本科教育的一些事情。

  我是一名計算機專業的本科生,我在江蘇一所還算不錯的大學裡學習計算機專業。

  由於高考分數還算比較給力,我順利的考上了我現在上的這所學校。對於計算機專業,我的第一門與專業有關的課程自然就是程式設計語言了。有的學校是C,有的學校是C++,還有一些學校是Java。不過根據和我高中的同學交流來看,還是C居多,然後是C++,最後才是Java。而我們學校不論是什麼專業在大一都要學習C++,只不過用的教材不一樣罷了。我們計算機專業和軟體專業採用的是雙語教學,採用教材是電子工業出版社影印的DEITEL 《How To Program》系列。記得我們去領書的那一天很多同學看到這本全英文,16開,1000多頁的大部頭時都被嚇傻了。

在中學階段,我不知道STANLEY的《C++ Primer》,不知道 Nicolai 《The C++ Standard Library》更不知道Stroustrup的《The C++ Programming Language》,對C++唯一的認識就是譚浩強的那本《C++程式設計》。我是看著譚浩強了學完的各種程式結構,簡單的指標應用,基本的演算法,簡單的類與物件概念。從初一看到高二,可以說上面的程式碼基本上都能背下來了。

  面對著突然降臨的“神書”,我在想,學校為什麼不選擇譚浩強呢?後來通過逐漸的學習我發現譚浩強更像是用來應付計算機考級的,而我們的選用的教材從一開始就強調類與物件與軟體工程的概念,一上來就引入UML,並且感覺對很多東西分析做得很深入透徹,把什麼事情不能幹,為什麼不能幹說的很清楚。例如在使用物件的預設運算子“=”拷貝物件時物件不能包括動態分配記憶體的資料成員(應該就是深拷貝和淺拷貝的那些事),譚浩強僅僅說“再次不作詳細分析,只需記住這一結論即可”,而在我們用的《C++大學教程》中對此作了很明白的分析了不能做的原因並且在後面運算子過載的章節裡提供瞭解決的方案。並且通過這本書在軟體工程上潛移默化的影響,我開始應用類與物件的知識自己去實現一些黑視窗下的系統,例如書中所說的ATM系統。

  由於我在上大學前有點基礎,再加上我的努力,我順利的啃下來了英文的《C++大學教程》,但是對於其他的很多同學就並不是這樣的順利了,他們先是買了翻譯版的《C++大學教程》,在考試前又抱《譚浩強》的佛腳。

  在學長的推薦下,我第一次購買了圖靈書籍——《C++ Primer 4th》中英文各一本。中文版的翻譯還算可以,英文版的英語還算淺顯易懂。在大一的C++結課後,我選擇了專心讀它,雖然這本書並不像《C++大學教程》那樣強調直接的應用,但是我從中學到了許多語言的細節,包括如何更好的編寫C++程式,編寫出可移植性好的程式。

  我第一次真正使用C++去做的事情是完成學校的課程設計作業。MFC這個東西我剛開始也是一頭霧水,搞不清楚如何對映訊息,如何關聯類與控制元件,為什麼這個訊息響應函式要放在那個類下。但是逐漸通過對MFC類的關係的瞭解,我初步的明白了MFC的訊息機制。通過了使用GUI對資料進行輸入輸出,對控制元件的操作與使用,我逐漸的明白了一些繼承與多型的用法。體會到了override,運算子過載,函式過載,類模版的很多實際用途。雖然聽說C#和.NET神馬的要比這一套給力的多,但是我覺得我應該以基礎為先。

  接下來一年裡,我要C++更多的應用。

  最後謝謝石頭送我的《Programming Windows》影印版,我真的很喜歡,雖然有翻譯的還不錯的中文版。不過我覺得既然要去深入學習,就要通過英文。真正的體會作者的意思。

相關文章