一直沒有想過會在編程的路上打滾,但是,自從大一開始,懵懂的我就在這條泥濘的路上,倒了再倒,傷了又傷!
今天,我的努力似乎得到了一定的回報,我參加的2010年軟考,程序員考試,上午題53,下午題66,我過了程序員考試,辛苦2個多月,有了一點安慰,但是,回想起考試的情形,我卻黯然淚下了,試題的難度實在是不敢恭維,平凡的考試難度,照顧式的考試,很多網友在網上說,如果你想當公務員,就考這個軟考,我現在終于有了很深的體會,正如一個網友說的,程序員就是花錢買證書!,考完那天我深以為然,出考場的那一刻,試題做得不錯,過肯定是沒有問題的,上午要背的東西雖然不怎么記得,但是45以上是沒有問題,勝利的喜悅中,我不免想到:“這樣的考試,含金量高嗎?”是的,考場很多人考完:“等著拿證書吧!”歡天喜地的笑聲,我笑他們沒有看到本質,這樣的考試,拿了證書,能證明什么了?
知道過了的成績后,因此我表現很平靜,想的卻是以后IT路上的每一步應該怎么走!
回顧我的1年編程路,我從大學的第一堂C語言課,到現在自學的C++,值得總結的東西,非常多,首先對于初學者而言,入門關鍵,但是入門要有目標,不要學完C語言語法后,就不知道該學什么了,現在很多大學生都這樣,老師講的課學了,學完就算了,重來不去深究為什么,怎么學。我認為,編程路上應該有這樣的分類:
初學者(剛接觸編程),菜鳥(知道編程),
新手(會編程),進階手(理解編程),高手(自己編程)
這是參考《編程高手箴言》一書我自己給自己定的發展目標,當然,我自己的定位,是高手,現今只是菜鳥過度新手的階段。
對于初學者:
我們應該理解程序,切忌一開始學編程就想編程如此難,怎么才能學好呀,凡事有言,萬事開頭難,只要你熬過最難的時刻,你就是一個勝利者,之前的博文也提到過,其實編程,一開始,很多人會學習C語言,C語言其實學習有兩個目的:
1、 幫助你了解高級語言的基本語法
2、 了解,接觸什么事算法
學習C語言的重點主要是培養自己的高級語言語感和基本的編程能力,了解算法,是本人學習1年的編程后感覺,算法才真的是程序的核心,之后我會舉自己的一個真實例子說明白,
至于什么書什么的,前參考前面的博文,這里就不再多說了。
對于菜鳥:
菜鳥一般是把C語言語法學好了的人會進階到菜鳥這個類型,他們應該有什么特點呢?
他們能夠熟悉運用C語言的各種語法,寫成很多有用的程序如:學生管理系統,貪吃蛇,萬年歷,停車場管理系統,等等,這時候,我們應該注意,不要以為自己很厲害,其實,我們只是把皮毛學好了,真正的東西還在后面呢,這是他們一定有這樣的心態,這么才能做出一個窗口來,DOS環境下的編程,黑底白字的,多沒有意思,于是他們會紛紛上網尋找資料,怎么能將自己做的系統可視化,怎么才能做出一個像樣的軟件,于是,紛紛跑去學習MFC,快速的框架開發,滿足了自己的虛榮心,覺得自己很了不起,這是一個非常錯誤的想法,這也證明了我們社會的浮躁風氣,IT界的急功近利心態,很多人夢想成為高手,21天學通C語言,一個月掌握MFC,這就是浮躁,這就是急功近利,不要被可視化欺騙了,這只不過時高手做好的框架給高手快速開發用的,你會用,所以你只能是一個純正的代碼工人!
這一階段,我們更應好好學習基本只是,算法,匯編語言,數據結構,編譯原理,操作系統,計算機原理,為我們鍛煉好身后的內功,這就是韜光養晦,這就是厚積薄發,你現在可以用MFC做出一個窗口,而我只能玩DOS下的東西,這不能說明什么,因為你在磨劍,三四年后你寫一個像樣的系統時候,你完全明白系統是如何實現的,原理方法你一清二楚,而他,還是再用MFC把軟件堆出來,只不過堆得越來越熟悉罷了。
對于新手:
我的定義是會編程,什么叫會編程,就是要知道學習什么對自己的以后的編程之路走下去是有幫助的,上一個階段只是把最基礎的學完了,你應該要開始考慮你的發展之路了,這,你會看到更加琳瑯滿目的東西:C#,Java,ASP,JSP,C++,Javascript等等,這么多,各種語言方向又不一樣,怎么學,不要太快定了自己的發展方向,因為,其實,你根本還不知道你喜歡什么,所以,你最好是挑一門語言,深入研究,我選擇了C++,編程語言其實是不斷發展,他們是相輔相成的,懂了一門語言,其他也是通了,為什么,因為他們都是參照之前的語言的不足進行改進以達到一種更好利用,更方便的目的,所以語言一定是一通百通的,不能存在語言宗教信仰,因為有一句經典的話:“存在就是有理由的”,不要說Java比C++好,根本沒有可比性,他們的優勢不一樣,你怎么比較,所以,沒有最好,最壞的語言,只要最適合你的語言,選擇一門語言好好研究,深入理解,當然,這里我們需要學習程序員的一個必備工具,數據庫,這就是會編程。
進階手和高手我沒有經驗,我也不好說,不過,肯定是耐性研究一種東西,厚積薄發,韜光養晦的,他們深知萬事不能一蹴而就,應該是一步一個腳印,不過根據一些高手的意見,我也寫出來和網友們分享一下,進階手應該需要了解一個系統的應用程序接口(API),理解這個系統的原理,高手嘛,我真不知道怎么說了,據說是研究優化系統的內核,開發出框架和函數庫供一些特殊開始使用,著名的STL,MFC這些,應該是高手們的杰作
承接上一個留下的關子,我就放出一個我的最近一個故事,最近我們學院要做一個軟件開發比賽,要求參加的學生開發出一些可視化的程序參加比賽,我在班長的邀請下,受任了,很直接的感覺——困難。但是我怎么也得做出作品來,所以,我去圖書館借一下windows編程的書,結果無語。。。。。都是MFC。好不容易找到了一本《windows程序設計》,好好研究里面的API函數,終于生成一個窗口,只是我才明白,原來MFC一點就出來的窗口,生成的底層API函數居然如此復雜,我更加堅定了先學MFC,先要學好基礎的決心,界面做好了之后,我開始思索貪吃蛇的算法:
1、 蛇行走算法
2、 食物生成算法
3、 蛇轉彎算法
我建立一個鏈表,里面有一個頭指針,尾指針,蛇行走算法,我很容易解決了,就是頭指針的結構體往前面畫一個矩形,尾指針后面擦一個矩形,由小矩形組成的蛇就動了起來了,食物生成的算法也不難,用一個隨機函數生成兩個數,定位食物矩形的坐標,但是這里需要小心,不能讓食物生成在游戲區域外,不能生成在蛇身上,加一些條件限制,問題就可以解決,一直沒有解決的是蛇轉彎的算法,由于我的錯誤編碼,我將蛇的轉向分成了多種情況寫成多個算法:蛇右走,轉向上或下,蛇左走,轉向下或上。。。。。。
最后,由于錯誤的算法,導致我不得不放棄已經寫了1個多星期的成果,采用了一個網友提供的思路,一個棋盤算法,完成了這次程序設計,這次程序設計歷時3個星期,讓我總結了一下經驗:
1、 算法是程序的核心,真的很核心
2、 做一個程序,應該要先設計好算法,算法驗證成功,你完全明白算法原理才去動手做
3、 應該先學好一門語言才研究API,再深入系統,因為API移植性差,一般只用于了解系統運行機理
4、 勤奮一定有回報,盡管不是最好的回報
5、 一定要肯下功夫去專研
一個菜鳥過渡到新手一年的編程總結就到這里了,希望大家給點意見,也可以參考我的意見,謝謝大家支持,如有疑問或意見建議,均可留言,我一定會回復,謝謝!