我來告用訴你學什麼有用

今天看博文,看到這些文章,又聯想到大二即將畢業,於是修改了一下這篇文章,當做對一下大一大二所學的內容的總結吧。


 一、計算機專業素養

         1,高等數學:爲了及格,同時幫助概率及格 

         2,概率:爲了證明高等數學可以幫助及格 
         3,線性代數:如果你學習計算機圖形學,就是opengl/direct3d的話,裏面的3d模型的空間座標用矩陣來表示的,如果你需要把它們進行投影,疊加,移動,就需要矩陣乘法/變換/轉置等等,所以還是很有用的 
         4,離散數學:主要是給你打下計算機數據模型的理論基礎。裏面包含集合,數,圖,等等,更重要的是如果你以後要搞研究,研究0錯誤程序,就是完全沒有bug的程序,就需要用它上面的推導理論來對程序經行證明。如果你要通過系統分析員,這個也是要考試的 

          5, 數字電路/計算機組成/計算機技術:如果你是一個很深入的程序員,你會問:爲什麼瀏覽器可以顯示那麼多東西->有html語言->html語 言是怎麼開發的->高級語言->高級語言怎麼完成的->彙編->彙編怎麼來的->固化/機器語言->機器語言如何能 操縱計算機->在節拍電路的干預下,內部芯片的結構把0/1字符串譯碼,操作累加器,總線,內存做不同的操作那好,這個過程差一個東西都不可以,如 果你只學習裏面的高級語言部分,那豈不是神龍見首不見尾,感覺很不爽???所以你要能自己做一個計算機出來纔好!!! 


          數字電路是學習門電路組成的,就是如何把流動的電信號保持下來,同時讓他們有規律地變化 ,計算機組成是讓你用門電路來設計內存/cup/時鐘等等 ,計算機技術是讓你綜合學到的東西,做一個簡單的計算機出來。 
有了這些知識,當然還要包括編譯原理,軟件工程,操作系統,數據庫,網絡,你學習其他的語言,什麼vc/vb/deliphi等等,每種語言不超過3個月你就是高手。你要學windows程序,要用api,只需要15天就可以作出像模像樣的東西。當然,我這裏是指語言本身而言。有了這些基礎和語言掌握的熟練,你想學數據庫編程,好,複習一下數據庫的課程,查閱一下sql的語法,1天就有眉目了。你要學網絡編程,選擇一種庫,看看文檔,明白函數的用法,也就 是一兩天的問題。等你做出點東西,有了信心,你也就有了經驗。這個時候去明白j2ee/.net 等等的frame work,就很容易了。參看以下design pattern,你也就胸有成竹,做個小組長也可以。再過幾年,有了機會,說不定就當了manager,等了到了三十多歲,你不想幹軟件了,你有計算機組成的基礎,找幾個高手帶你一下,你可以去做單片機的彙編語言編程,可以去做embeded system 。
所以,學好了基礎,也就是厚積薄發,後面你想怎麼發展都可以! 

          學了數字電路才知道,原來很神祕的電腦是由一些觸發器,邏輯門組成的,把它們集成再集成,就成了電腦 了,譯碼器,全加器,計數器...... CMOS不過就是一種存儲器,BIOS不過就是面向硬件的一種已編好的子程序,(和C的庫函數差不多,我認爲)學好了彙編,我可以自己編(還讓我花了30人民幣,買了一本CMOS設置書,認爲它很高深莫測)!


二、編程能力

       不學好C,怎麼學好WINDOWS程序設計,怎麼能做一個優秀的程序設計人員 
  不學好前人花幾十年時間總結出來的數據結構,你的進步能有多快,那是讓你踩在巨人的肩膀上。(你要是天才,我就沒話說了,不過要是學了,你會更天才) 
  這是我自己經歷的一點學習基礎課的過程,它給我解疑釋惑,當然這些問題在行家眼裏可能不值一哂,但它是每一個新手必經的過程。 
  更爲關鍵的是,基礎課給了我們最核心的知識,讓我們能在離開學校後有繼續學習的能力。它給了我們一個知識結構,讓我們能在他的基礎上擴充,把新的東西加入自己的知識框架中,這是基礎課重要的意義所在。很多人提到基礎學好 之後,學習新東西很快,就是這個道理。 
  不可否認的是,基礎課很枯燥,很費勁。但這要看你怎麼去看它,你想一想,學好了他,就能抓到計算機的本質,能讓他對你俯首帖耳,這難道還不夠激動人心嗎?老在別人的基礎之上作設計,卻不懂所以然,不悶嗎? 
  既然討論的題目是給在校大學生一點建議,那我也說一點兒。 
  先說技術層面的,在學好專業課的基礎上看一些學校裏不講的新知識,新技術,能促進你的融會貫通,但不可本未倒置 。 
  再說最關鍵的,最想說的,請在校的學生們珍惜你的時光,不要都 去打了遊戲,談了戀愛,時光寶貴,機會難得。 
  我經常對自己說,如果再讓我上一次學,我會...... 
  可是不會了,我只好對自己說,如果我現在再不學,就會...... 
於 是我努力去學,邊工作,邊學習,捨不得丟掉一節課,在校的學生們可能無法體會聽老師講課的幸福,自學時怎麼也搞不清的東西,老師一句話就茅塞頓開,老師那 清晰的思路也讓你受益匪淺(在這裏應該感謝那些老師們,雖然他們有些時候的簡略很讓人惱火)。但越學,心裏越沒底,有太多的東西我都沒學好,更有很多東西 根本就不知道,正所謂皓首窮經。 
  我不時的咒罵自己的懶惰,也許是過於愚笨,努力不夠,學習計算機也有三年多了,直到現在,我才覺得自己開始瞭解計算機,才明確了方向。 
  我從文科轉入這一專業,而且也不小了,就憑着我對計算機有着強烈的興趣。他是人類智慧的體現,程序設計更是一種藝術,他能讓我們的才華得到充分發揮,我會繼續努力下去的,雖然有些遲了,但爲了不更遲。 
  希望在校的學生們能多珍惜一些時間,不要比我還遲。 
       如果覺得自己接受能力強的話就可以開始學C了(注意不是C++),如果感覺有困難也可以先學Pascal過度一下。還有很重要的一點就是千萬不要一開始 就學VB,DELPHI,VC之類的東西,這些東西在一開始學會對你造成很壞的影響。有可能會把你引入另外一個錯誤的學習方向而忽略了真正應該掌握的東 西。學C主要是學過程話的程序設計,學會把自己的程序分成許多的函數(或過程),養成良好的編程習慣。這時可以多看一下高人的程序,不一定要懂意思,主要 是學會別人程序的格式(比如變量如何起名,怎麼劃分函數)。除開掌握基本的控制流語句外,應該學習一些很簡單的I/O函數和數學函數。C的學習主要是你舍 棄原來BASIC程序那種把所有語句積成一大堆的風格,要學會使用函數,提高代碼重用性。對於指針之類的東西如果實在看不懂可以先不去管,到後面會有辦法。

       學完 C我認爲接着最好學習彙編。這個或許有許多人都會反對,然而我個人認爲這樣是很好的。從最基本的DOS彙編開始,買本《IBM PC彙編程序設計》(清華黃皮)一定要一點一點吃透,實在看不懂就跳,反覆的嚴讀是一定可以看懂的。彙編是一定要掌握的,因爲它涉及到很多最基本的知識。 掌握了彙編和對I/O有了個很徹底的認識後,應該去學編譯原理。這個東西並不要精通,但是一定要知道,在大腦裏要有一個這樣的概念,這對你對程序語言的控 制能力都有很大的幫助。這樣最基本的學習就算完成了。一般智力正常的人前一段東西應該都是可以掌握的。接着後面的學習就要看你自身的造化了。

        當你能夠比較自如的用C編寫一些小的計算程序時,你就可以開始你的數據結構的學習了(數學的學習主要是在學校,自己要多用心)。數據結構你可以一點一 點漫漫看,並不需要專門空出一段時間來專門研究,這樣的目的是讓你能夠很好的掌握它,要學會用數據結構的知識來規範自己的程序設計和提高程序的效率。不要分散自己學習的注意力,要知道數據結構是異常重要的(相信我,絕對沒錯)。

         如果你覺得自己已經對於樹,連表,堆棧之類的東西和排 序,遞歸之類的算法已經十分清楚,就可以開始學習C++了。學習前一定要有個正確的認識,那就是C和C++是兩個不同的東西。學習C++是爲了學習面向對 象的程序設計,這個時候你對於指針應該也能夠掌握了(有彙編的基礎),主要抓住C++和C相比的一些新特性,對於多態之類的特性要注意理解掌握,如果沒有 搞懂就堅決不要往下學習。一些基本的概念掌握以後可以看一些別人設計的程序,學習別人怎麼利用面向對象的方法來設計程序的。這個東西也是人之間拉開檔次的 一個環節,可以和數據結構放在同等重要的地位。我就見過有的人都大學畢業了還搞不懂virtual到底是怎麼一回事情。

          其實我認爲學到這裏你已經爲你成爲 一個優秀的程序員打下了很好的基礎,你已經能夠應用C++,懂得面向對象程序設計,對數據結構掌握很好,掌握彙編和編譯原理。接下來的學習就是基於操作平臺的了,一般是先學windows(Microsoft畢竟是老大),先學win32 api,搞請windows基本消息機制和原理,有彙編基礎基本上不會碰到什麼困難。其實只要會了API,其餘什麼MFC,VCL都是囊中之物了,都不過 是對於API的封裝而已。VC,C++Builder都可輕鬆拿下,這只是開發工具的問題。以後的OLE(ActiveX),.NET,數據庫就要看自己 的發展方向而定了。我在這裏強調的是前面的基本能力的學習,後面操作平臺雖然知識體系龐大,然而畢竟比較死 。

         最後編程能力的高低主要還是有以下 幾點決定:1。編程的習慣 2。數學能力(包括邏輯思維,分析問題的能力) 3。對數據結構的認識能力 4。經驗的多少(包括多使用語言的掌握能力) 

         學習編程的道路是充滿艱辛,漫長而曲折的,作者羅列了一堆自己知道的編程方面的知識,並且給出了一個具體的順序,所謂先學什麼,後學什麼;沒學會什麼,就一定不要去學另一個什麼.....其中很多內容有一些道理。但是總是難逃片面。 
           從入門到精通一類的東西看的太多了,難道真的憑藉一本書就能從一個電腦盲編程精通的專家了麼。我鄭重的建議那些想“速成”高手的人,放棄你的想法吧。一個計 算機專業的本科生,要花上4年時間才能畢業,需要學習的專業知識豈是一朝一夕就能掌握的。就算去除一些公共課所佔用的時間,我覺得要入計算機行業這個“門 ”,至少需要兩年的時間。兩年後才能說,對計算機有一些瞭解了,知道了計算機的基本組成原理,對時鐘晶振,中斷芯片有一定了解,用匯編簡單控制8259編 程。也知道了一些計算機程序設計語言方面的原理,掌握了一倆門傳統的樣板編程語言,瞭解了i++和++i對於VC的編譯器來說意味着什麼,有了一些數據結 構方面的認識,能把現實生活中的一些問題用程序模擬出來。 
           但這一切也不過是剛剛入門而已,只是打基礎。至於以後再學習Windows系統原理,消息機制,掌握這個類庫,那個類庫;抑或是研究Linux內核,進而瞭解嵌入式系 統開發工具和方法,那要看個人喜好了。我只是舉幾個例子,但是隨便哪個,要敢說自己已經完全掌握,至少還要幾年吧。 
          如 果上面的東西中有的已經很精通了,可以稱爲專家了,那麼恭喜你,你可以考慮把這些東西再總結,提升一個層次,從系統架構角度回顧一下要實現某個需求,通常需要使用什麼技術,多少人,多長時間來開發,成本多少,收益多少,風險又有多少,還可以總結出一些控制軟件開發進度的方法,生成軟件的方法,人們把這些方 法歸納起來叫做軟件工程。而你,也應該是一個項目經理了吧。 如果這些東西都學會了,再次恭喜你,你可以考慮能不能把現有的客戶拉到自己身邊來,找個人給自己投資,成立自己的軟件公司。成爲浩浩蕩蕩的軟件創業者中微不足道的一員。


           文章參考地址已經找不到,感謝原作者!


發佈了12 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章