第一次接觸程序是大一上學期期末考試的時候,那個時候空閑時間比較多,就在圖書館門口的舊書店里買了一本譚浩強的《C語言程序設計》(ps:這才是程序屆的神書)看了幾天。那個時候以為程序就是語言,把語言學會了就好了,因此就一直各種學習語言。把C語言學會之后就學習C++(用的是C++primer plus)。當時把這兩門語言學完之后就去咨詢了一下計算機專業的一位老師,他說讓我學習MFC,然后我就開始看《VC++深入詳解》,第一次接觸圖形化界面又是自學,廢了老大勁了,然后看了這兩本書之后就開始看侯捷的《深入詳解MFC》(ps:更要人命),硬着頭皮看完了,然后用MFC做了一個小的象棋軟件,這應該是大一下學期吧,想在看來當時學習MFC真是天大的錯誤,浪費了太多的時間,並且估計這一輩子都不會用到這些東西。后倆知道了MFC就是封裝了一些windows32 API,然后就開始學習windowsAPI,用的是《windows程序設計》,然后看《windows核心編程》(ps:這本書沒有看完,我最近要接着看)。后來我知道了現在好多windows客戶端都是用C#快速開發的,當時我以為這東西又白學了,不過現在看來並沒有。
大二的時候一個老師說想要做網站,我就想學習網站開發的技術,然后就把當時的windowsAPI放下了。因為當時一直感覺自己是windows陣營的就學習了C#,使用asp.net開發。先從HTML學起,然后javascript,css,當時想着要搞服務器就順便吧inux學了一下,看的是《鳥哥的Linux私房菜》,然后學習用WebForm寫網站,當我把這些東西都學完的時候已經大二暑假了,老師的網站早就讓別人做好了,當時腦子一抽自己想創業(具體是什么就不說了,反正說出來估計你會笑),然后我就自己寫了個網站,不過感覺自己寫的太差勁,就感覺自己應該出去工作一段時間,看看別人是怎么做的,然后大三開學就找了一家公司(大三剛轉到計算機專業),他們使用MVC做的項目,然后我又了解了一下MVC。工作了兩個月,感覺老板太坑了,就辭職了,后來又面試了一家大公司,面試我的那個技術哥哥人挺好的,跟我講了半天,說我現在不適合工作,然后要跟我講解了我的問題所在。說白了就是好多基礎課沒有學習,比如數據結構,復變,操作系統,編譯原理,計算機網絡。當時我感觸很深,然后就乖乖回到學校繼續修煉。
其實到這里我非常失落,感到自己非常失敗,費了那么大的勁學了那么多的高層技術,好多基礎沒有學習,然后我就開始自學這些課程(ps:天生不愛上課),從數據結構,操作系統開始看。我忽然發現我再學這些課程的時候都能夠在我以前學過的東西中找到對應的內容,比如操作系統中的線程和進程,這些東西我在學習Windows程序設計的時候天天接觸。計算機網絡中中的知識,我工作的時候經常接觸,然而並不太明白原理,現在看書的時候終於明白了。學到數據結構我才明白了算法和存儲對程序的意義,感覺自己以前根本就不叫編程,而是純粹意義上的碼農。
我工作的那個公司是一個小公司,公司里的人好多事大專和技校畢業的。當時感覺他們很厲害(畢竟在一些一些方面的熟練度方向比我要好很多),現在感覺他們學的東西都是淺層的,並沒有考慮到程序的性能之類的。我當時在工作的時候就一直在想,如果說技校畢業的就能干的計算機為什么還需要本科生甚至研究生呢,需要的僅僅是工作竟然不就好了嘛。計算機專業的基礎課的意義在哪里?基本上計算機專業的學生在學習計算機專業的基礎課的時候都是比較迷茫的,現在好多Android開發,Ios開發並沒有牽扯到數據機構,操作系統啊,其實就我現在的感悟來說,如果想讓自己寫出高性能的程序,那就必須要學習數據結構和操作系統之列的課程和算法。
本科類學校在教授這些課程的時候,學生是迷茫的,但是這些課程對於優秀的程序設計者來說又是必學的。我感覺這個問題就是本科教育的一個很大的問題。大部分學生沒有意識到學習這些課程的意義在哪里,所以說學習的動力就沒有那么充足了。為了跟技校區分大學不學習具體的技術本來也沒有錯誤,但是一直學習基礎就真的好嗎,基礎不實踐就肯定會忘掉的,最終的結果就是等到大學畢業了,沒有學習到真正的技術,基礎也忘掉了很多。有人說大學本來的目的就是讓學生知道自己學過什么然后在用的時候去查就OK了,但是對於計算機這門對動手能力需求這么強的學科來說這樣真的好嗎,隨手大學生在以后的工作中會慢慢的熟悉高層技術,然后發展潛力也比技校學生大很多,但是我感覺這是很浪費時間的。
其實我感覺對於計算機這樣的學科,大學教育的最終目的應該是底層和高層的完美結合,這樣學生在學習基礎學科之余之后就可以實踐一下,這樣做也更能加深對底層的理解並且學習起來也更有動力。沒有必要非要技校學習技術,而本科及一定要學習基礎。但是一定不能為高層技術所累,高層技術只是手段,最重要的還是底層,一種高層技術就OK了,我就是為高層技術所累,學的太多了。感覺大學生還是應該從一些底層的客戶端開發做起比較好,雖然win32這類東西已經過時了,但是它還是最能增強最操作系統和資源的理解的。Web的話需要的東西過多,本科生如果不是急着找工作的話,還是先不要接觸了。