伯樂線上注:本文來自文章作者@桔了個仔 的投稿。如果其他朋友亦有原創文章或譯文,可嘗試投遞到伯樂線上部落格。以下是全文。
——————————————————————
現在的我,是一個大四的準畢業生,廣東某文科挺強的大學的工科生。資訊工程專業,這是一個類似通訊工程的專業,我們的畢業生,理應都是去電子公司或通訊公司搞電子開發或訊號處理。但是我,卻正在某遊戲公司做程式開發實習。剛成為程式設計師,有所感悟,故有這篇博文,抒發心志。
這個年代,程式設計已經成為通識課了。無論是程式設計師,還是設計師,或者只是普通人,都需要程式設計。
程式,我個人理解,就是人和計算機溝通的語言。(當然同時也是程式設計師之間的溝通語言)。當然,我這是一個開始程式設計不到一年的人的見解而已,如有意見,歡迎提出。
雖然我第一次接觸程式是在2008年,當時第一門學的是pascal,還學了vb,但是我不把那叫作程式設計,頂多叫做“學程式語言”。當時正念高二,由於各種課程壓力,沒有好好的深入學習。我認為我的程式設計生涯,準確的說,是從做一年前,也就是2012年5月第一次做網站開發時開始的。至於課堂上用C語言編寫陣列排序演算法或Java課後習題都不算,因為那不是我理解的程式設計,我把那些程式設計序來處理純數學的問題的事情理解為“計算科學”。當然我也承認,程式設計需要一定數學基礎,但是你沒必要要數學成績很好才能學會程式設計。程式設計是一種創作,就像畫畫。學校的教育,都提倡“系統性”,就是讓你學完這種語言的大部分語法,卻沒告訴你這麼語言有啥用。當然“系統性”有著它的優勢,但是卻不利於提升學生的學習興趣。我理解中的程式設計是,你想做一個啥應用,就學著編,這才是程式設計。當然你是數學研究者,你也可以把那些編寫排序演算法之類的工作作為程式設計,反正對於程式設計,我猜,10個程式設計師會有至少9種不同的理解。
從做網站開始學程式設計,個人覺得是一個挺好的入門方法,比較能體現“設計”這種思想。網站設計當然從html程式碼和css程式碼開始。html程式碼易學,而且基本不用涉及“計算”,有種“即想即所得”的感覺。我知道挺多站長,包括用開源程式的或者自己寫程式的,都不是計算機出身的,甚至很多都只是在讀的中學生。當然學好html後,要學至少一門網頁尾本語言,不然你的網頁很難”動態“起來。關於網頁尾本語言,我就懶得介紹了,主流的有3P(ASP(ASPX)、PHP、JSP),還有不是那麼主流的比如python、ruby等。我在網頁尾本方面沒有系統學過,都是需要用到時參考一下而已,因此不好說太多。
有的說法說“其實程式語言之間沒啥差別”,這我可不認同。我用AS3可以輕易作一個遊戲,你試試用C語言給我寫一個一模一樣的遊戲?語言間的差別,不僅僅是語法上和函式庫上的差別,最主要還是思想上的差別。當然,有些語言間思想比較接近,如Java和AS3,但是它們函式庫不一樣。除了思想不一樣,各種語言間的執行效率是不一樣的。Java是先編譯成位元組碼再用JVM執行,執行效率當然比直接可以操控硬體的C語言低。
有的說法說“只要掌握一兩門語言就夠了”的說法,我也不贊同。一個人,不接觸多點程式語言,是不會體會到程式設計之美的。比如python和C,一個是動態型別語言,定義變數時不必宣告其型別,一個是靜態,必須宣告其型別。雖然現在越來越多程式設計師喜歡動態型別,但是靜態型別依然有著它的用處。程式設計之美,在於其思想的自由。而且各程式語言之間作用不盡相同,只會一兩門,可以是普通人的做法,對於想成為程式設計師的人,是不行的。當然一個人沒那麼多精力去精通太多語言,但是可以學多門,體會其思想,選擇其中一兩門作為專攻。
當然,雖然現在我走上了程式設計師之路,但是由於我不是計算機專業出身,所以還是有挺多知識盲點的(這就是缺乏“系統性”學習的壞處)。得惡補惡補。各位程式設計師,還有各位想成為程式設計師的孩子們,共勉吧。最後給大家推薦矽谷創業之父的《黑客與畫家》,這本書讓你知道什麼叫程式設計。