2016/07/28

學程式設計的理由

我的第一隻程式是在我高一的時候寫的,那是個人電腦剛問世的時代,「培基語言」是小神通電腦內建的語言,我去買了一本「Basic」的程式設計,利用週末看完、也做完範例,從此開啟了我電腦程式設計的世界。

這台電腦大約是一個小Keyboard的大小,社團老師特別借我回家練習。

我的第一隻程式其實非常簡單,就是在畫面上隨機的出現不同強度的亮點,就像是傍晚的天空一樣,星星一顆顆亮了起來。從此我知道,我可以藉由程式這個工具,模擬出一些心中想像的畫面,建構出我的虛擬世界。

接下來,我們物理學到了彈性碰撞與斜向拋射的飛行路徑,我將這些物理參數設計到程式裡,於是我可以在畫面上模擬出一顆橡皮球的運動軌跡,隨著參數的調整,球的運動方式也不一樣。原來程式可以讓我對於物理世界有更清楚的認識。

到了大二,在機動學上我們學習了 4-bar linkage ,老師要求我們用 「Fortran 程式」去模擬一個六根連桿的運動模式與限制條件,每根連桿在不同的時間的速度、加速度關係,那是一個數學、幾何與程式的大亂鬥,我花了兩個禮拜,寫了三千多行的程式,卻一直在編譯的時候出現錯誤,最後,我終於在放假前熬夜將程式 debug 完,也是那時候唯一完成作業的。那時候,我更清楚電腦程式可以幫我們解決很多機械工程設計上的問題,只要我們夠有耐心的解決每個 Bug,電腦會回饋給我們一個完整的結果。

大三暑假,老師找了幾個同學,會 CAD/CAM 的、會程式的,我們一個 Team 要幫忙紹設計「超音速風洞」,這是要讓超音速飛行的飛彈測試用的風洞,許多物體參數都要模擬出來,整個系統更複雜,我們也必須分段寫程式然後整合,整個暑假結束,我們用寫程式的能力,協助完成了一份「超音速風洞」的計算書。程式真的可以解決問題,而且是用一種我們人力無法達成的方式去完成。

進入職場之後,我開始從事研發的工作,也一直擔任這樣的角色,這是我喜歡的工作,但是我遇到最大的問題就是橫向溝通與資源整合的問題,每次看到電影中,國外的軍事單位在資源調度、申請、查詢,總是在那個簡單的640*480的綠色畫面上,輸入一些關鍵字就可以得到有用的資訊,但是我們的電腦卻還是只能取代打字機的工作,我也想要有一個「專案管理系統」,之後我才知道,我們其實是有的,但是這些軟體資源是一種封閉式的設計,只有特殊的終端機可以連線查詢,而查詢得到的報表也都是複雜的格式,所以我開始重新學習新的資料庫程式設計,也獨立完成了我自己設計的「專案管理系統」,後來我才知道這有一個名詞,就做ERP系統,雖然我做的很陽春,但是確實已經可以協助我解決當時所遇到的問題。

之後,我的用同樣的程式設計能力,幫當時的學校設計了資源管理系統,用來協助老師排課、 協助學生選課、幫助老師管理學生的學習紀錄、追蹤孩子的學習狀況、甚至提供電子成績單的功能,學會了程式設計,幫助我在解決問題的時候,有了一個不一樣的視野,就像是一隻平常處於平面世界的螞蟻一樣,當你將它從哪個平面提高,他會發現,原來在他的世界之外,還有另外一個世界,這完全顛覆了過去的經驗,解決問題的能力,也就整個提升了。

在這個創客的時代,程式設計代表的是你有能力跟物件溝通,我們在解決問題的時候,不單單只是像過去一樣,把它做出來,現在,我們更需要去知道這些物件,它想做什麼、能做什麼、怎麼去做,而這些都是程式設計的能力,有人說,接下來的世代,是大數據時代,這個時候,分析的能力更是重要,要在浩瀚無垠的大數據海中,找到那些有用的數據,我們需要的還是程式設計能力。

目前西方許多國家,已經將程式設計課程放入國小國中當中,剛開始我以為他們只是想要用程式設計來帶領孩子學懂邏輯思考的能力,現在我更知道了,原來程式設計是提供下個世代的孩子,看世界的另外一個角度。

創客課程報名課程專線:0227095005

沒有留言: