Posted on 2010-11-03 09:22
Onway 閱讀(353)
評論(0) 編輯 收藏 引用 所屬分類:
轉載
1.
極端的社會輿論
每每看到大學生就業報告里提到計算機系學生失業人數最多時,我就想mn,什么原因導致了這種現象的發生,在中國軟件還處于比較初級的階段時,市場對軟件人才的需求應該每年在大幅的遞增,可是大學里培養出來的計算機科班人才質量卻每況愈下,甚至還不如一個軟件培訓機構兩三個月訓練出來的人好用,為什么?想想現在的計算機科班畢業生的水平吧,大學四年下來,90%的學生寫的代碼沒有超過2000行,不Linux操作系統為何物,不知道C++和Vc的區別,沒有開發出一塊實用功能的簡單軟件, 沒有使用過STL,甚至不知STL為何物,更不用提設計模式之類的比較高級一點的東西了……這樣的例子還能舉出很多…
就是這樣的人才質量,如何讓一個以營利為目的的公司接受,如何為企業創造價值? 但是也有那么一些人,能進入微軟、IBM、google、百度這樣的公司,拿著年薪幾十萬。
2. 失敗的計算機教育體制
我也是一名畢業不久的計算機科班畢業生,從我目前了解的情況看來,大學時,沒有幾個學生真正的對計算機編程感興趣,體會不到通過編程解決問題帶來的樂趣,只是單純的跟著課程的設置學習,這樣沒有目的性的學習效率如何之底?大學里的學生又有幾個人能對自己的職業規劃有一個基本的了解?大學里有幾個人能理解學習的課程在具體的實踐中的作用? 這些慘痛的例子說明了我們大學對計算機系學生的引導是非常不夠的?沒能激起對學習計算機技術的興趣?不能告訴大家一個將來一個明確的職業規劃方向,沒有很好的引導學生去思考自己的職業規劃方向?如果是這種狀態去學習,大學四年基本是廢掉了……
另外一個就是大學課程的設置,各種各樣的課程,填鴨式的教學方式…. 純粹理論式的教學方式….到頭來,學生真正學到了什么?幾個術語名詞而已…..一樣對操作系統是那樣的迷茫….不知道編譯原理的語法分析為何物? 不知道數據結構中的樹和圖將有何用?
3. 四年后,我能驕傲的說我是計算機系的學生
上面發了那么多的牢騷,其實都是有感而發….下面在結合自己的工作的感受具體談談計算機學生應該如何規劃自己的大學四年
大一:
一個新兵蛋子,剛走進象牙塔的大門,什么都是新鮮的,不斷聽著學長們說著天書般的技術術語… 天天爭論C++和java哪個好,.net是否比Vc更智能先進…. 還有什么Asp.net …. 一堆的技術擺在自己面前了…
然后自己就糊涂了….去問學長吧…學長告訴你..好好學習java吧…將來有錢途…..
其實大一,沒必要學習各種新鮮的技術…..把高等數學學好吧….這才是正事,是決定了著將來你是否能稱為一個大牛還是一個編程語言的熟練操作工人的因素…. 也許這時候的你還不知道高等數學有什么作用…
但我要告訴你的是如果你的悟性高…. 工作一兩年也許就能體會到數學的做用…. 學高數..不是簡簡單單的學習微積分…. 在掌握這些知識的時候….鍛煉自己的邏輯思維….. 鍛煉自己的思考問題解決問題的方法和能力。作用在將來一定大大的….. 等將來如果你涉足密碼學…你會發現各種積分方程和矩陣變化…. 將來在計算一個算法的復雜性和證明算法的可靠性時,也離不開數學知識…. 如果你涉足人工智能和語音識別,各種統計模型就會呈現在你面前。在你畢業找工作時,這個才是你和專業培訓機構培訓出來的學生的差異能力。這才是企業更看重的能力。如果你還有時間的話,學習C語言… 但是不要再用譚浩強的書了…. 看
The C program langue 吧… 如果能真正領悟書中70%的例子話,那就足夠了. 如果能把這兩門課程學到十分優秀,恭喜你,你已經成功了一半了…..
大二:
如果你在大一學習了C之后,這個時候大學的課程就要涉及操作系統和數據結構、還有匯編語言了…… 這也是大二一定要學好的兩門課了……大學的操作系統太失敗了,上完課后,很多的學生不知道所云,更加感覺操作系統的神秘了,課程設計也就是什么銀行家算法的,然后大家在網上一頓搜索,然后交給老師就算完事了…
其實,我的建議是自己寫一個操作系統內核,實現內存管理,進程管理和切換 等一些基礎的東西了就可以了,《自己動手寫操作系統》就是很好的教材…… 如果還有時間,學習《Linux內核設計與實現》,看看現實商用的操作系統是怎么實現的? 當然最好和原碼結合的一起看,效果最好。還有趙炯博士的 “.012Linux內核完全剖析”什么的。如果能仔細閱讀,收獲一定不少。當然還有數據結構,這個也是重中之中,這也是和非科班出身的學生的差別,關鍵是你學的好壞,這個的實踐主要在ACM上,當學習完數據結構后,最重要的是使用,不斷的在Acm上做各種各樣的題目,不斷的提升自己算法設計的能力。從大二開始,如果能堅持兩年下來,那么一般的算法設計肯定是難不住的了,也許這時候高數打下的基礎就會起作用了。
當畢業的時候,進入一家好的公司應該不是太難的事情了。再說說匯編語言,本質上這也是一門編程語言,可能剛入門的時候比較困難,但是程序寫多了,和C也沒有差別了。我還想說一點,就是現在Windows內核也逐步開放了,至少有很多的逆向的資源可以學習。如果對Windows有興趣,一樣可以學習操作系統的實現原理。
大三:
離散數學和編譯原理是個重頭戲,離散數學雖然我現在還沒體會到他的作用,但是和高數一樣,這中內在的東西才是最重要的,代表著內功,如果沒有學好,這些債遲早還要要還的。 編譯原理,學習完以后一樣會讓你云里霧里,整天做那些無聊的題目。還是說實踐吧,網上有開源的C編譯器的源碼,下載下來然后好好學習下,結合編譯原理書中講的東西,好好的消化一些這些知識,最后,自己如果能寫出來一個C編譯器的話,那你的編譯原理也就通過了。當然這個時候可以學習一些C++或Java之類語言,但是學到夠平時用的就可以了,沒有學非常深。選擇一本教材學習兩三個月就行了。
當然,這個時候,可能你的同學已經能做出來各種漂亮的網頁,也可能熟練的使用MFC類庫做出各種各樣的漂亮的軟件,這些沒什么,如果三年下來,如果你能夠按照上面我寫的那樣堅持學習。也許他們用三年學習的這些東西,你用三個月就能熟練。
大四:
到了找工作的時候,如果你按照上面一步一個腳印的學習,我相信你會收到很多大公司的offer。因為大公司更看重的是你的內功的深厚,而小公司才會看重那些花拳繡腿的技術。但是這個時候,千萬不要忘記繼續學習,很多的學生大四一年都浪費掉了,真實太可惜了,在前面三年的基礎上,到了厚積薄發的時候了,
開始要思考自己的職業規劃了,你要選擇Linux方向還是Windows方向,要選擇底層方向還是應用方向,
要選擇網頁方向還是桌面應用方向。是選擇自然語言處理還是人工智能。這個時候你要選擇自己的一個方向,當然你可以向你的導師求助,然后確定自己的發展方向,大四一年就可以專心的學習了。
4. 附上我認為計算機學習比較好輔助教材:
C語言: the C Program Language
操作系統; 于淵:《自己動手寫操作系統》
《Linux內核設計與實現》
《Linux內核完全剖析》
《Linux內核情景分析》
《Windows內核情景分析》
編譯原理: 龍書《編譯原理》
匯編:
王爽老師《匯編第二版》
5. 后記
以上都是自己在工作后對大學四年的反思,可能很多人有不一樣的看法,我沒有任何異議。畢竟每個人經歷是不一樣的,但是如果你向想做真正的計算機科班出身的學生,學好上面介紹的課程吧。在以后的職業生涯中,你會終身受益的。當然上面很多的課程我沒有提到,并不代表他們不需要學習,只是分量沒有那么重而已。因為你還是要畢業的,每門功課還是要過的。zds
當然,我現在認為,計算機的本科四年真是一個打基礎的四年,之后才是學習各種招式,如果基礎打好了,招式的學習會事半功倍的。當進入公司后,一樣要持續不斷的學習,才能讓你不斷的進步。自己文采不好,寫的比較亂,但都是肺腑之言,各位將就看吧。