很奇怪,我在這個blog里面居然不想寫一些關于技術的東西,都是在瞎扯一些關于自己的事情,可能是我自己的技術還沒有到家吧,感覺用blog就用寫一些有用的東西,可以給一些認識的或則不認識的人看。今天跟高中同學瞎扯了一下,討論用不用微博之類的東西,后面扯到blog。我個人認為qqzone是做用來寫一些發泄的話,寫技術的東西就不是太好了,不過也是見仁見智的問題。有一點我是確定的:我不會在blog里面說話泄憤,最好就討論一些比較實在的問題。
居然討論一些實在的問題,那我就討論一些大學教育的問題。自己是個大學生,所以對這個問題還是比較在意的,當然會說一些不好的東西,純屬討論,不要太認真。我是學軟件工程的,不過別人問我學什么的我大多都說是計算機的,可能有寫人不太在意軟件工程和計算的的差別,但是我覺的說計算機比較有底氣-----因為我覺得在學校里面我唯一學到的是有關于計算機的知識,軟件工程?算了吧跟本沒有什么軟件工程。
更深入的去看我的專業-----軟件工程,其實我覺得軟件工程根本就不用學,像我們學的一堆軟件工程的課程:軟件工程導論、面向對象軟件工程、個人軟件過程和小組軟件過程、CMM,基本上我認為這些對我來說就是狗屎。都是討論怎么去管理和開發軟件和提高軟件質量的東西,有人會問這些不是都很好嗎?我們深入點去看看這些東西。首先:軟件工程講的是軟件開發的過程。一些前輩開發的很多軟件然后總結了一些經驗,然后用這些經驗去指導開發更多的軟件。這就是軟件工程了。很淺顯的事情,但是問題就出現在這里了。當我想進一步去學習經驗的時候發現經驗就這么點-----瀑布模型、迭代模型........還有很多,當深入下去就是一些可維護性、可擴展性、高安全性什么的,這些東西對我來說能懂嗎?我想試問一下各位?
我不是在這說這課程的不好,但是這對我來說沒有意義。你試想一個只寫過一些小程序的學生來說你搞那么多開發方式,搞那么多什么性什么性的有意義嗎?接著我們就面向對象軟件工程了。對面向對象有了解的人多少能說出點東西來,面向對象的思維方式是很好的,但問題也出現在這里-------你跟我講面向對象我能聽懂嗎,比如低耦合、高內聚?對于沒有接收過大型軟件開發(甚至小型)的人能跟著你的思路走嗎?你最起碼告訴我為什么吧,但是沒有。我大部分的課程都只是在教我什么是什么樣的,沒有教會我為什么要這樣,這樣有什么好處,這樣有什么壞處。
當我還沒有喘氣的時候UML又來了,軟件需求來了,軟件測試來了.........搞得跟狼來了似的。UML于我何用?軟件需求于我何用?軟件測試于我何用?軟件過程于我何用?對于這些課程我都是應付算了,不是我不好學,只是這些東西學了有何用?有人就說了:“這些東西在實際中很有用,要學好。”但我想問問實際中怎么有用了?其實我是承認這些東西在實際中很有用,但是我就算學得再好其實都沒有太大意義,你教會了我畫很多圖,教會了我怎么去發掘需求,教會了我怎么去測試,其實教會的只是理論,根本沒有讓我去實踐,比如UML,你總得給我個說明要做什么樣的系統,需求是描述好的,然后我用UML去表現我的設計。在比如軟件需求,你總是要給個人給我需求吧?------事情的實際是我自己定義需求。在比如測試吧,你總要給東西給我測試對吧?最終的結果是我什么都沒學到,就算我很努力了。
在我們專業我算是學得比較好的,我很努力,但是跟國外的學生比,我還不如他們的一年級學生。我一個國外留學回來的老師,他說:“國內的研究生還不如國外本科一年級的學生”。
有時候很無奈,如果你讓我用這些時間這些精力去學其他的你說會變成什么樣?比如語言,我最先學的是C++,如果那個博導老師要我踏踏實實的寫HelloWorld可能我早就有這種水平了,但是他沒有,他讓我們搗鼓那些難懂的MFC。結果我C++純粹自學。如果我的數據結構不是天天聽老師講數據結構而是聽一節課理論,然后他定義接口讓我去實現這些數據結構,我就不用到大三了連個排序也只能寫冒泡。如果那個該死的計算機網路不是只講理論而是讓我看看什么是光纜、什么是交換機、怎么去用TCP/UDP去做一些好玩的事情,我也就不用再去學一遍網絡編程技術。太多如果了。
簡單的總結一:1、大多大學生不是泡妞就是打網游,還有個別天天YY的,不是專心學習的大有人在,我想大學生找不到工作是應該的,因為你根本就沒能力。如果專心學習的找不到工作那是你命不好,想開點吧。2、我很懷疑現在大學還能教出一流的學生來嗎?這點我很懷疑。3、現在上課做作業基本上是應付,難道不是嗎?你會覺得那是你應該做的事情嗎?我想你不是覺得,因為上課很無聊,作業沒有太大意義。這在所有專業都是一樣。4、天大地大,考試最大(我是地大的(中國地質大學)),難道不是嗎?有兩種情況你的成績但會很好-----一種是你的卷面成績很高,另一種是你跟老師關系很好(我用過后一種)。當然有個別老師的課程不是這樣。5、別老是批評大學跟社會脫節,其實學生不想,老師不想,只是結果是這樣----原因是現在大學大多很功利,要改變,你改變社會吧,我想你改變你的想法比較實在一點。6、雖然我上面說的都是自己專業的,但是你去問問其他專業,情況是一樣的,為什么?------都是中國特色的大學生(如果你不信,你問問其他專業的)。
討論完了,到這寫完了,但是我很猶豫要不要發表,明顯我是要發表的,但是會有很多人拍我。說我這不對那不對,但是你說吧不要太認真,大家當吹牛好了。畢竟踏踏實實做事才是最重要的。
最近一直在寫代碼,代碼寫到一定程度就感覺沒有代碼我寫不出來,想想感覺很搞笑,當自己真的去設計一個程序的話那是多么可怕的事情---真實的情況是我做不來。我還是一個低級的程序員,不能設計出一些很強大的東西出來,感覺自己走到了一個不知道是什么地方的境界,太多的東西自己不懂。
說實話,現在讓我去寫一個在線聊天工具也不是太大的問題,問題是寫出來又怎么樣,而且要花很多的時間跟精力,還要做很多的嘗試,大概算下時間起碼要一年,這還是保守估計,如果只是通訊一下那簡單很多,但是要考慮很多的情況,那就復雜了。
來到學校后一直在實驗室里面呆著,天天coding,感覺很好,每天都作出一點點成績,但是最近一直在做其他的事情,其實也跟我的光線跟蹤有關,但是換了一個平臺---GPU,也就是顯卡自己都感覺自己牛人一樣,實際的情況是我根本不懂,就連我寫進去的程序是否能達到所預期的速度----100倍的提速,或著更高倍數的速度,我都不敢去想象。
現在我在做的是矩陣的乘法,當矩陣比較小時,速度還不如CPU,當矩陣大了,速度當然是提高了很多,具體多少,不好說。不過感覺沒有什么計算是要這么大的矩陣,所以這個提速跟沒提是一樣的,再加上當矩陣大了的時候,莫名其妙地計算的精度跟CPU是不一樣的,很無語。
現在我的工作是把GPU的光線跟蹤實現了,然后準備考研,但是我心里沒有時間表,什么時候才能把GPU的光線跟蹤算法給弄出來?我現在完成的算法用了半年的時間,天天coding,有時工作到晚上2點才睡,其實沒有睡下,還在想光線是怎么打在物體上的,物體是怎么個眼色很效果的,一直在腦海里打轉,感覺自己跟臺計算機一樣了。
我感覺我現在進入了一個迷宮,總在迷宮里轉。
我還在私底下做一些其他的程序,這些都還沒有做出來,給我一個安靜的環境我想我還是可以很快地作出來,我現在缺乏的是耐性和一個環境,我記得我寫程序最瘋狂的時候是大二的時候,那時候寫程序從晚上12點開始,一直到早上5、6點,寫完才睡。那段時間是我的水平迅速提高的時候,從基本開始學習,慢慢地才會編一點程序,后來就慢慢變成了比較懂程序的框架。
回憶大一,感覺自己走了很多冤枉路,上課基本學不來任何東西,老師講的我一點都聽不進去,還是自己一點一點弄出來,老師要做的實習還是其他,我感覺那都是狗屁,還不如自己踏踏實實地寫程序。其實寫代碼是一件很開心的事情,當你把一個難題解決了,比高中作出一道很難的還要有成就感。
現在看別人的代碼、聽老師講課,感覺很凄苦,那些代碼連他本人都不知道是干什么用的,為什么要這樣寫,他也不知到,老師講課,要是水一點的老師,根本教不了什么很高深的學問,感覺還不如看書然后自己寫一點程序,然后就懂了。不過要找到好的程序去寫,你自己抄書上的代碼可行是可行,不過因為書上的代碼太小,根本不能教你什么實用的技能。
我現在經常在MIT的開放課程和Berkeley的計算機系的課程網站上找一些自己感覺喜歡的課程,然后跟著里面的作業做---就是寫代碼了。提高很快。比老師教得快很多。Stanford的網站上也有很多很好的東西,有時也會看一下,具體的沒有去做,不過有時間一定會跟著做。
看了很多的書之后覺得看書是沒有用的,最重要是要自己動手去做點:紙上得來終歸淺,方知每事要躬行。
我是一位大二學生,在武漢的中國地質大學讀軟件工程。
在大一的時候開始就學習語言。開始是計算機導論,主要是Java語言,當時聽得很起勁,但Java是什麼、計算機我自己都不知道,我那是侯連電腦都不太會用。我們就沒寫過程式。講了一大堆,沒懂什麼。雖然老師有演示,但基本的操作沒有教想自己寫寫代碼都不知道怎么寫。
接著我們又開始學C++(注意我們沒有學C !)。教c++的老師是一位老程序員了。開發了20幾年了,是做GIS的,是我們學院院長開的公司的副總,也是我們軟件工程系的主任。能力和技術都是沒的說的。講語法講編程,但是我就是不懂,他給我們講程序設計,你說我們連int、long、float都不懂的人連程序是什麼都不知道你說程序設計有用不?我們c++講了10節課20個學時,到期末課程設計的時候盯著電腦發呆。什麼也沒做出來。
平時這門課是有上機操作的,但是一上來就是一個win32的程序,VisualStudio是強大啊,框架都出來了,我就不知道那些自動生成的是什麼意思。每次上機操作我都是把工程建好了,然後就盯著電腦屏幕開始發呆,慢慢發呆,直到兩個小時后。
老程序員是不同啊,程序設計、調試、測試等等一大套來了,我懂嗎?我不懂,我就連VisualStudio的那些menu都不知道是什麼意思,跟別提它強大的功能了。學期末的課程設計是用MFC做畫圖程序。MFC那就更強大了,那就更不懂了,最後別說程序設計,就連代碼都不會寫,所以我到現在c++都只是會在VisualStudio上點鍵鼠。
接著在大一的下半學期開接著學c++,還是那位老程序員,可以用高深莫測來形容他,MapGIS底層開發是他做的,拿過很多國家的獎。神州6號神州7號用的GIS軟件就是他開發的MapGIS,強大吧。但是他是第一次教本科生,我們也算幸運的了,人家第一次教本科生就是我們,他一直都只教研究生。還是10節課共20個學時,他也很認真,經常給我們答疑。但是真的太高深了,還是Win32,MFC。講什麼封裝、繼承、多態,不怕說實話我懂的那些道理(吹牛的說一句:我還是比較聰明的,什麼物理競賽化學競賽數學競賽我還是比較強的,不過現在都忘光光了),
但是試想想一個代碼不超過300行的程序要用到這些嗎?我現在還沒寫到超過300行的程序呢。還有什麼模板、操作符重載,please kill me。我不懂,我相信很多人都不懂,就算開發了幾年的了,不過我現在懂了,懂了不代表會用啊,是,我不會用,基本上我就用不到。沒做過項目我用它幹嘛?不過老實說我還是受益匪淺的。畢竟人家是位很好的教師,很好的程序員,只是我的操作能力不行,還不太懂。
在大二的上學期,那就豐富了,數據結構與算法、數據庫、軟件工程導論等等。老實說我沒好好學,沒學好。希望我的後輩要好好努力,把C/c++學好,把數據結構、算法、數據庫學好,老師講的不好,你就去問他,問到你懂為止,不要害羞,不然以後像我這樣你就知道死字怎么寫。老實說大二上還是學到很多東西的,最起碼知道然來程序是這么一回事。還會調試了。但是希望教書了不要只教書上的,多手把手教。記得課程設計的時候有位研究生輔導過我,我到現在還感激他呢,他教會了我什麼叫調試,手把手的教我寫代碼,調試。我才懂那些道理。
現在是大二下了,也過了一半了,學了Java,重新開始學一樣,不過我還是很感興趣的,Java可以做很多事,也方便多了,我現在基本是用記事本寫Java的,可以更直觀的理解算法和程式。到以後就可能不會因為人是要進步的,要做點大一點的程式。不能停留在黑屏的時代。不然就回到DOS那個年代吧。現在發現程式是那么好玩的東西,裡面有很多很好玩的、很有意思的、很先進的東西在。
努力學習。應該是好好學習天天向上。
總結:
1。c++沒學好,以後努力點好好補一下。有建議的提提,無論高手菜鳥都行,因為我是菜菜鳥。
2。程序寫不好,以後多寫點,有好玩的小項目比如開源的介紹介紹,或者有什麼純粹玩玩的項
目想找個免費勞動力可以找我。
3。對界面不太喜歡,可能是不會的緣故,在努力努力,看看會不會喜歡上,介紹點資源給小弟,
小弟不甚感激。
4。好像比較喜歡Java,可能會向Java里高級的方向去走,各位前輩指點一下,我還是比較迷茫,
介紹點好的方向,給點好的資料給小弟,小弟就此謝過各位了。
5。C、C++還是比較基本的,更能接近底層,還要好好提高,給點意見,有什麼方向去學去做,
指條路給小弟走。
最後感謝各位能看看我的屁話。留不留言沒關係,對你有幫助的話心裡感激過就行了(臭美了一次)。前輩就請你多多指點了,都說過是菜菜鳥了,別不好意思給你寶貴的意見。