Wednesday, October 26, 2005

我的程式之路

今天去了圖書館找書..偶然看到了clipper的書
猛然想起clipper是我與程式的起點..
回憶起這條好像有點漫長又不太漫長的與程式的緣分

本來自己就不是喜歡按規矩做事的人..
學程式的路上也是一樣..每次總是寫跟別人不一樣的東西..
很多經驗都是從這些另類的方式上學到的..
寫程式對我而言就跟設計一樣..沒有創意就都別玩了

高中時..工藝課莫名奇妙的學了dbase + clipper寫資料庫
結果那時候全班都是寫班級聯絡簿..只是功能完整度的差異
我則用資料庫寫了一個算命程式..用出生年月日作計算跟查詢
老師改作業的時候一句comment都沒辦法下..
所以我那值得紀念的初體驗..就獻給算命程式啦

接著學ETBasic..同學們寫著使用者輸入個人資料然後給回應
我則寫了一個文字模式的快打旋風..可以選角色..有招式..可以對打..還是中文版呢
我到現在還記得寫出來可以玩的時候的興奮感!
也受到這個遊戲的影響..我開始想學QuickBasic
因為QuickBasic可以進VGA mode..雖然當時只有ETBasic可以有中文
學QuickBasic學到一半..看到了當年的一款遊戲[三國演義]..超驚艷
多方打聽之下才知道那款遊戲是用C寫出來的
激起了想學C的念頭..但是當時那種玩票心態加上迷上打籃球就沒學成功

迷上了籃球後我放棄了程式好幾年..從高二開始打籃球打到大一
一直到了遇上電物系的徐琅老師..他帶著我們玩自動控制
我接觸到了LabView..發現用電腦控制環境的奧妙..
但是當時有很多功能沒有..所以要用C寫外掛
我重拾了程式..這一迷..就停不下來了
也讓我有了好好學寫程式的想法
所以整個電物後來的兩年..我都在學程式寫程式..

後來決定重考資科..選資科原因只是因為我焊電路板焊膩了..
我決定要走純軟體的路線..所以放棄所有資工系
目標就是交大資科跟政大資科..
(雖然後來進來唸了以後才知道差異不大..還是得修數位電路Orz)
重考的時候為了躲兵役..去參加了職業訓練班..
那時候教的就是AutoCAD R12..(其實本來想參加調酒訓練班的)
課程前半畫模具那邊也是我學CAD的第一次..
後半教AutoLISP..我真是樂翻了..想不到在職訓班也可以寫程式
然後班上的同學都在寫一些指令自動化的程式
我是用AutoLISP寫了一個射擊遊戲....哈哈哈
有計分..還可以換武器(有雷射..還有大管的加農砲)..可以玩的很high
唯一缺點就是只能在AutoCAD底下跑..
這我超得意的..老師看到的時候真的傻眼..那個表情讓我印象很深刻
他也是不知道怎麼給我意見..
這同時也是我第一次寫出來的視覺化程式..

進資科後由於高中時打的基礎以Basic最熟..加上當時剛好出了VisualBasic
可以很快速拉出介面..對於視覺化的我而言真是再適合也不過了
所以我暫時放下C..專心寫VB..也開始接很多案子
第一個程式就是鴻友的一個面板模擬程式..也是第一次跟工設的人合作..很快樂..也學到很多設計上的議題
後來進了家超小遊戲公司寫遊戲..代理發行的華彩底下有間工作室的工程師負責審我寫的遊戲
他不相信我是用VB寫的..因為當年的VB最常被罵的就是速度慢
(跑虛擬機器ㄇㄟ..沒辦法..)
我用VB寫的程式比許多人用C寫的速度還快..當然優良效率是得歸功於設計良好的演算法跟資料結構
(從那之後我就相信..程式只是工具..設計師的知識跟組織能力才是關鍵)

期間因為課程需要學了Java....可是我實在沒辦法喜歡這個東西
雖然他設計精良..結構比起C++為人稱道的STL更為漂亮
但是我就是跟Java相性不合..我也不知道為啥
後來寫到用RMI寫出一個線上的算命程式(又是算命程式!?)就不想玩了..
(雖然後來不得已還是得玩J2ME..但是我始終不怎麼喜歡Java)

我VB玩了很久..一直到後來開始寫影像程式..終於遇到了瓶頸
因為VB不能操作指標..陣列的處理本就慢..原本虛擬機器造成的低效率對寫影像是相當吃虧
所以我得考慮其他的環境..必須是原生碼的..語言倒是不重要

第一個挑上的是Delphi..原因只是因為她跟VB很像..拉介面輕鬆
學了Pascal....不過Pascal很龜毛..實在不是我的style
很乾脆的換了同一家公司的C++Builder..然後就定下來了..
回到C的懷抱後第一次寫出來的程式..是幫同學寫一個碩士班考試的倒數計時器....應該有幫上一點提醒的忙吧..哈哈

中間也因為案子的需求學了ASP, PHP跟Perl
perl我倒是沒學的很好..頂多改改東西
ASP是當年NOVA裡一家黑心電腦店要做線上交易的平台
於是就學起來了..但是我討厭ASP+IIS的彈性跟擴充性不佳..也懶得寫ISAPI
所以後來改玩PHP..PHP我倒是學的很不錯..到現在都還在用

Flash裡的ActionScript倒是個程式的特例..actionscript是學javascript的語法
Flash很好學..加上視覺化的介面..是我極喜愛的程式環境
只是我有時會找不到程式碼寫在哪裡..這應該是唯一的困擾..哈哈哈哈

至於組語..我也只有為了讓CPU一次開四個pipeline幫我算點學了一下而已
一切還是為了處理影像的速度啊..

中間學過的script類型更是不計其數了..
從clipper,Basic,C,pascal,ASP,PHP,actionscript..一路這樣玩過來
慢慢地..我開始有種可以看到核心的感覺
看得到一切的核心就是邏輯思考..或者說本質也可以
程式也不過就是外殼的包裝而已..只是思考模型的一種具現化
而我也在其中慢慢能夠體會所謂的"機能美","結構美"
與視覺設計最大的差異..就在程式設計的結果都是相同的..甚至是可預測的
只有過程才是展現美的地方..雖然這些過程是由最單純的機械或是電路單元來執行的..

指揮這些由單純單元構成的複雜結構需要的知識更是遠超過所謂程式語言的範圍
學會了C或甚至組語不代表寫得出任何程式..語言總是會回到語言的範疇
真正的problem solving..是跟語言無關的邏輯組織法則以及對問題對象物的真正了解

對我而言..程式是一種藝術..經過精心設計的產物本就是一種藝術
看到精妙程式的感動絲毫不下於看到好電影看到一幅深入我心的畫或是聽到感動落淚渾身發麻的歌曲
但真正令我感動的..是隱藏在程式碼背後設計者的思路與詮釋問題的過程
那個思緒會直透我心..直接浸淫在設計者的設計中..甚至可能改變我的想法或我的設計
這種強烈的意念..反映出來的就是設計者的靈魂!
我寫的程式也同樣灌入了強烈的意念與靈魂

很單純地這樣靈魂的交流感動..就是程式令我迷戀的原因
(不過看到會痛苦的程式碼也是會有的..致傑的程式我到現在還是沒辦法習慣啊..雖然那實在很有個人風格..Orz)

No comments: