大家好,剛來到部落格園,先和大家打個招呼,這廂有禮了!
我是自動化專業出身的,對於軟體開發可以說是一竅不通。但從多年學習的經驗來看,我還是想談談非電腦專業需要掌握哪些電腦知識,為了縮小討論的範圍(敝人也寫不出有內涵的長文),姑且局限在軟體範圍內吧。這裡說的軟體,主要還是指電腦語言(可能這種表達不太恰當,我也找不出更合適的)。於是,問題可以表達為:非電腦專業需要學哪些電腦語言?學到那種程度?
為了回答這個問題,我就拿自己讀大學以來的經曆談起吧,並總結出我自己的幾個教訓,也可以說是幾條經驗。
教訓1:語言要常用常新
剛上大學那會,基本上工科學生都是要學點電腦語言的,而且學得最多的是Turbo C。那時感覺還是相對簡單的,學了一個學期,考試過了,後來為了找工作,考電腦證,就又學了一年(要考上機)。不知道自己學了什麼,反正國家三級是過了(高手別見笑)。從這以後,電腦語言也就基本放下,以至於到現在,已然完全不清楚指標和鏈表用法了。雖說也不是完全忘記概念,但我現在絕對敲不出可以通過編譯的代碼。說起來,考級那會對Turbo C的瞭解應該也算可以,至少不看書能按照自己的回憶和理解寫個簡單的學籍管理程式。可到現在,本科畢業大概五年多了,連個楊輝三角也不會算了。所以,任何一門電腦語言,其實和任何自然語言一樣,即使掌握得再好,再熟練,如果幾年時間完全不碰,也會忘得一乾二淨。想再撿起來就難了。
教訓2:不能淺嘗輒止
讀研究生以後,Matlab用的比較多了。要說Matlab的特性,還真是簡單易學。其實本科階段就有相關課程,但那時候也沒好好學,而且教學重點在Simulink上。大家上機都是隨便拉幾個框圖,看看虛擬示波器也就過去了,其實沒學到實質性的東西,指令碼就更沒怎麼用過了。但是因為Matlab這種指令碼語言的特點,變數甚至不需要宣告類型,所以幾乎有些C基礎的人一上手都能用來做些數值計算。我也是一樣,幾乎沒看過什麼教材,不懂就試。比如記不起取矩陣列或者行的命令了,就自己先定義個小矩陣,然後不同的命令試一試。一來二去,也就掌握了。後來還查協助文檔,範例程式碼拷過來稍微修改一下就開始用了。對於簡單的問題,這麼學倒問題不大,可後來要計算的問題越來越複雜,運算時間越來越長。碩士畢業那會,一個模擬常常要跑幾個小時,可自己又沒什麼辦法提高計算速度,只能乾等。而且加上對庫函數的不瞭解(不是科班學出來的嘛),常常自己花了好長時間寫一個功能,後來發現人家一個函數就能搞定。所以,如果要學一門自己的工作學習中常用到的語言,就一定要想辦法吃透,不要停留在能滿足基本需求的水平上。找本好教材,快速讀一邊,也不要求全部理解,但至少要和常用特性混個臉熟,下次需要了會知道有這麼個東西,尋找起來會方便很多。
教訓3:不要一門語言用到死
其實對工科學生來說,平時做數值計算,有個Matlab就足夠了,各個不同的專業或許還有不同的行業軟體。但千萬不要在掌握了一門語言後滿足於現狀,尤其是所掌握的是比較專業的語言。像我個人,自從開始用Matlab後,覺得其他通用語言和自己就沒什麼關係了。曾經一度聽到C++或者Java就好象是遇到了外國人,一說物件導向就感覺是在聽玄學。而且那時候看通用語言開發人員,總覺得他們像魔術師,靠代碼可以創造出千變萬化的程式世界。自己一心虛,自然再沒有勇氣去學習其中的任何一種。後來,項目中涉及到了Java和其他語言,領導建議我學習一點(儘管不用我去寫這些代碼),可我仍然下不了決心。還是在老婆的鼓勵下才開始鼓起勇氣學Java(老婆雖不是程式員,但也自學過一點),下了些視頻,看了本教材,又自己動手寫了些小程式。哇,原來也沒有那麼可怕。加上學習過程中的一些擴充閱讀,在業餘時間自學一門語言不但沒有加重工作負擔,反而使自己對所從事項目的組成層次有了更深刻的理解,便於調整手頭的工作以配合總體需要。經曆這件事,我真誠的建議非電腦專業的功課同學們,精力有餘一點要多學一門物件導向的通用程式設計語言,以後一定會用得上,磨刀不誤砍柴工。
教訓4:不要覺得網路和自己沒關係
通常工科出身的同學們,很多會覺得做好手邊的工作就好,網路對自己來說就是查資料和娛樂的地方,技術和自己關係不大。要是在十多年前,這樣想准錯不了,可越往後可能對網路應用的需求越大。即使你寫的是單機啟動並執行模擬程式,也有可能需要自動將模擬結果上傳到伺服器或者通過電子郵件發給同一研究組的其他人。如果不瞭解這些,就無形中失去了和別人交流的機會。
總結:
對於剛開始大學的生活的同學們,現在是最好的學習電腦語言的時機,對於已經畢業,甚至讀研的同學們,現在也仍然不晚。畢竟,一門電腦語言比非線性系統理論或者離散數學要容易多了。所以,根據我的教訓,下面幾條建議同學們可以參考:1)廣泛瞭解,最起碼在各種不同的領域,比如通用,科學計算,伺服器,資料庫,網頁等,每個領域瞭解一種語言(不是精通),每種花三四天學習一下就好,能自己學著寫個小程式更好。2)選一門通用語言,盡量透徹掌握,這對學習其他語言的特性或者編程思想都有很大協助。3)拓展視野,除了語言之外,相關的標準(當然也不全是標準),比如W3C,xml,CSS等也應該有一定瞭解。
以上是我個人這麼些年來對電腦語言學習的一些想法,想法出自個人,再加上本人又是個開發菜鳥,難免存在不妥與錯誤,望同學們批評指正。
最後,希望所用每天在電腦前工作很久的朋友們(不論開發人員與否),都勤洗臉,多通風,少受輻射。當然想要生個女孩的除外,有報道稱電腦輻射可以降低Y染色體精子的活性,當然這是後話。