1. 程式人生 > >給同校大一IT新生的建議

給同校大一IT新生的建議

在論壇上看到同學院的學弟問的,就回答了一下。打的字挺多的,所以就發到部落格上了。

原文是這樣子的:

我上大一,西安二本里墊底的大學。在學校C語言學一學期感覺啥也沒學到。想補補自己的程式設計技術,開始找培訓機構。北大青鳥,西嵌,達內,歐朋蘭博,尚學堂都去了。黑馬和傳智播客在西安木有的~
看了一圈更糾結了,本來只想著拓展一下知識面,把C學好點。現在是,被他們說了一堆後,我感覺在大學裡學的東西以後工作根本不夠用,電腦科學與技術專業學的東西本來又多又淺。所以我現在決定上培訓班了。然後。。。
然後就是,各種複雜的培訓專案,我看的頭都大了。北大青鳥的學士後,JAVA,安卓,嵌入式,網路管理,虛擬化,Linux,c c++,作業系統。。。每個課程都還死貴!我瞬時無語了。

(補充一句,西安的二本不多了,西安的同學一看就知道了。)

學習建議

C語言

學好C可能不會讓你找到個好工作,不知道你們用的是什麼書,如果是清華大學的那本就直接丟垃圾桶吧。圖書館負一層的好書(ps:我們學校的計算機書都在負一層,看的人少。。)多得是,還有C語言作者寫的,首選國外的書,然後是國內的。C的重要就是指標+資料結構。有一本不錯的書,如《C和指標》及《C專家程式設計》。不過,如果不是搞嵌入式的話,C可能會用得很少,多數都是Java的面向物件。圖書館有很多,很不錯的書。。這是我們學校的一個不算是優點的優點,我不知道你們系的老師怎樣,但是請相信多數情況下只有混得不好的才來當老師(ps:很一般的二本院校)。只是少部分老師也很優秀,至少在我們專業中——電子資訊工程是這樣的。在我們專業領域,C才是神器相比於組合語言,只是這個時代組合語言用於提升執行效率顯得有點。。。(轉載保留 

Phodal's BlogPhodal's  zenthink

如果想學得全的話,建議不要在C上面花太多時間,學得精就需要在上面花費一定的時間,不過可以試著用閱讀原始碼的方式來解決。C很重要,但是有時候不是很重要,就如同你對數學一樣,重要的時候才會體現出來。以後,你會知道我們學校的考試是怎樣的,不要按照老師的思維來學習,要有自己的學習習慣和方法。

面向物件

面向物件,一個比較好的起點就是Java,這個印象中經常看到計算機系的孩子拿著這些的書,然後你可能需要《Head First設計模式》,接著是四人班GoF的經典之作《設計模式》,還有很多,如果覺得Java麻煩。可以試著用Ruby或者Python,Ruby有一本《Ruby設計模式》,學設計模式的優點是如果你面向物件的思維不是很強的時候可以用到。用Ruby可能會使學習快些,在學習設計模式的時候,問題是國內用這種語言可能會比較少。需要考慮一下,Python會比Ruby多一點,如果有所謂的愛國情節,就從Python開始,國外的孩子好像都是。

C++算是一門不錯的語言,只是現在用得比較多的好像是在遊戲領域。這門領域太複雜了,所以不要以為你的教科書上面的東西那麼簡單,請相信教科書是給考試準備的,而不是給實戰準備的。所以,除非有好的發展(比如,有親戚等在這方面工作,而且現在主要是在遊戲中用得比較多),要不請暫時放棄C++。Java提煉了一些C++的精華,比較面向物件而且和專業課相關,算是一個很好的起點。簡化面向物件的學習就是上面說的設計模式。

作業系統

開始使用Linux。開始可以考慮用Ubuntu或者Mint,國內用得比較多。我比較喜歡使用openSUSE。如果你有臺MAC 就再好不過了。試著從底層去了解一個程式是怎麼執行的。從開機到一個程式的執行,其中你可能需要了解的是《Linux核心原理與實現》。以及你們專業自帶的《作業系統原理》,如果用的還是國內的書的話,請換成圖書館的國外的書。Unix的有些東西和Linux上面是類似的,所以可以試著在上面寫C程式,附上一本書《unix環境高階程式設計》。

Windows很好很強大,但是如果你想提高你的技術試著用Linux。 每個人的看法可能不同的,但是如果要學得相對全一點,請到Linux。當然也可以選擇成為Windows的高手。Windows要成為高手有點難,Linux的學習曲線可能會有點陡。

所以有這樣一本書《鳥哥的Linux私房菜:基礎學習篇》,在我們實驗室512(ps:很受程式設計師歡迎的數)中幾個都是以此為基礎學的。所以,請不要相信計算機學得好的都在計算機專業。魯迅學的也不是中文,你說是吧?

專業課

學好你們專業的課,比如《資料結構與演算法》、《作業系統原理》、《編譯原理》之類的,這類的書首先考慮國外的,再考慮國內的。如果看不懂所謂的數學,可以考慮一下《具體數學》。

雖然我不是計算機專業的,但是我開始學計算機比較早,其中可能走過一些彎路。數學在有些時候也是很重要的,不過我覺得國內的教育太坑人了。所以可能需要一些國外的計算機數學方面的建議。

我可能是沒寫好本專業的課,但是我達到了本專業的要求,可以做出想要的東西。所以,要對自己的大學有一個好好的規劃。

發展建議

程式碼閱讀

看別人寫的程式碼。這是一個很省力的成長方式,有一本書叫做《程式碼閱讀》。可以試著用這個當起點去學習,其中也提到了C的很多用法,所以那本書是一個很好的起點去學習。

更多的開源程式在Linux上面,所以這部分可能需要有Linux系統作為基礎,所以儘快換成Linux,雙系統切換。如果實在有Windows強迫症那就單Linux執行。

程式設計+專案

更多的程式設計+專案。試著用做一些東西來學程式設計,而不是按照書上說的一步步的來。國內的書可能更多的按步就班的來。所以,用實現功能來學習程式設計,再慢慢來。

私活有時候是一種很不錯的成長方式,在大學中做了幾個網站,成長得很快,也有收入。雖然大部分都是源自網站前端的,但是請相信前端也很複雜。可能你們上的課和現在的不一樣了,現在的前端的位置比課堂上的那些老師說的重要得多。伺服器的配置再高也會有個限制,但是將一些計算放在使用者的瀏覽器裡,是一種很划算的方式。

至於有些程式設計經驗嘛,可以由比賽中獲得,印象中計算機系會有很多比賽。

閱讀書籍

如果有一天你覺得自己寫的程式碼不行的話,請試著用《重構》這本書來改善你的程式碼。

如果有一天你覺得面向物件的思想不夠的話,請試著閱讀《設計模式》來提升。

如果有一天你覺得沒學好C語言的時候,請試著閱讀《C和指標》。

。。。

所以,當你覺得不足的時候,請閱讀。

(PS:大一到大四看了500左右的計算機書,因為想了解全一點,所以看得有點多,習慣於像福爾摩斯一樣的作法。剛那些東西當成書庫一樣儲存,以使自己找到更合理的解決方案,但是後來發現有時候是不可取的。現在的結果是程式設計經驗遠遠不足,好在未來的東家看好我。)

多寫部落格

至於為什麼,請參考一下我寫的上一篇文章。

我的大學目標

僅做參考,大學做了一個簡單的目標規劃,但是都實現了。
  • 找個女朋友(很好的一個妹子,希望能一直在一起。)
  • 400+的書籍閱讀(實際500+,書架上70+)
  • 能做想做的東西(硬體+軟體)
ThoughtWorks的offer讓我的大學更圓滿了。 大一請好好加油,路還很長。我和你一樣周圍的人都是如此不思上進,問題在於要讓自己更自律、自覺,有一天你會發現自己技能上強大了,心理上強大了。還有的話試著找個女朋友,考慮在以後,而不是在大一大二。