2011年3月9日 星期三

以Sikuli 驚艷全世界的臺灣程式設計師:張琮翔

在程式開發這條路上,除了日以繼夜在眾多無解中,硬著頭皮找出解答之外,你對於程式開發還有多少夢想與期待呢?事實上,程式語言是帶領人類走向夢想世界的最佳武器,給與未來更多的可能性。正在麻省理工學院深造的張琮翔,正靠著一股熱情,要將夢想轉化為事實,希望能造福更多使用者。讓我們來看看張琮翔追求神乎其技的程式設計之道。

成功的定義在於實現夢想的能力;但究竟要用哪些工具或手段,來實現什麼樣的夢想,許多人都還在尋找。麻省理工學院電腦科學與人工智慧實驗室博士生張琮翔,正利用他最擅長的武器—程式設計,成功開發出一套革命性、名為「Sikuli」的應用程式,在程式碼中以圖形(螢幕截圖)取代了艱澀難懂的程式語言,也能撰寫出自動執行的程式,引起眾人的讚嘆與好奇。

「Sikuli是墨西哥土著的語言,意思是『神的眼睛』,」張琮翔表示:「讓每個人都可以主宰電腦、撰寫程式,是我所想要達到的目標。」能夠朝著夢想,開發出如此具創意的程式,張琮翔並非一步登天,事實上,他的逐夢之路很早就開始了。

新教育制度的受惠者


從國小就開始玩電腦的張琮翔,跟許多電腦高手一樣,對於DOS介面相當熟悉,拜這種「不友善介面」所賜,他對於各種指令並不陌生,「當時在DOS中內建的兩款QBASIC小遊戲對我產生了很大的影響,」就像是揭開程式語言的神秘面紗,張琮翔小小年紀即嘗試著修改QBASIC程式檔案中的數字,以延續遊戲主角的生命值,就像是發現了魔術背後的秘密一般,開啟了張琮翔「追求神乎其技的程式設計」之路程。DOS小遊戲對張琮翔來說,算是對程式設計的啟蒙,而真正開始扎根與鍛鍊,則是在他國三那一年。「推薦甄試」的教育制度讓張琮翔免於升學壓力,有了更多時間能讓他能沉溺於程式的魔法世界中。

「在不用擔心高中聯考的那段時間當中,我買了一本有關Visual Basic的書籍,從頭到尾很仔細地閱讀,並且將書中的所有程式都實做一遍。」張琮翔表示,看完那本書之後,就像打通任督二脈一樣,他突然想通要如何用程式語言寫遊戲了,因此,他開發了自己的第一款完整遊戲—黑白棋。然而,花了一周開發完成程式核心,伴隨而來的並非欣喜,而是debug的痛苦。「花了整整一周、整天不斷地在想,到底是哪裡出錯,最後發現,原來只是程式中的一個變數忘了歸零。」

有了這次的經驗,張琮翔痛定思痛,花了很長的時間思考該如何避免日後再發生同樣的錯誤,找出問題、設定原則,也養成了日後寫程式的好習慣,因此這是張琮翔第一次,也是到目前為止,最長、最痛苦的一次debug經驗。

參加比賽立定「原創設計」的想法

上了高中之後,張琮翔參加許多大大小小的程式設計比賽,也促使他更有系統地閱讀相關書籍,例如資料結構演算法等,打好程式設計的基石。也正因有了參加比賽的訓練,讓他開始懂得如何以有效率、更正確的方法撰寫程式,提昇實作的能力,「要達到同一個目的,有些人需要花3天寫1000行,也有人能在1天寫 100行就達到完全相同的效果。這段時間的訓練可以讓腦中想法,快速地具體化成為程式。」

大部分人都認為,寫程式很難,張琮翔此時卻發現,原來最難的不是寫程式碼,而是究竟想要利用「程式」這個武器,達到什麼樣的「目的」。然而,參加比賽的過程,張琮翔認為,有時反而壓抑了原創力。「參加比賽是一種重覆性、規律性的訓練,不斷重覆地看題目、解題,讓選手在有限的時間內,能夠快速解決難度高的問題,基本上限制了思考的能力。」但不可諱言地,透過參加比賽的良性競爭,讓張琮翔這段時期,程式撰寫功力進步神速;而軟體開發需具備「原創性」的種子也在他心中生根發芽。

會程式設計也要會行銷自己

然而在國內,多數程式設計師的工作就是不斷地寫程式,將不同系統之間的整合與客製化的工作,對於原創性的軟體開發著墨甚少。出國深造已一段時間的張琮翔觀察到,國外對於程式設計工程師較尊重,不會讓管理職凌駕在技術人才之上,「技術與管理是平行的兩條路, 各自有其發展的頂端,彼此互相尊重。但是反觀臺灣,許多技術人才想要往上爬,最終都不得不放棄程式開發技術工作,而走向管理職,否則就只能永遠是低階的工程師,無發聲的權利。」

除了大環境的問題之外,國內外程式開發工作者的「工作態度」也大大不同。張琮翔表示,國外的程式設計師很會行銷自己的東西,強調自己的東西與他人的差異性,想辦法讓他人對自己的作品產生興趣;但是國內的軟體工程師比較內向,不願表達自己的想法,反正就是依照主管的要求,把事情做好就好了。「軟體最重要的事情就是想法與創新,只要能夠開發出與他人不同的軟體,就算成功。」張琮翔認為,軟體是可以不斷複製、無形的產品,只要具備創意即能銷售到全世界,登上世界舞臺,這對臺灣來說也是一個很大的機會。


網路資訊雜誌 2010/03/9 陳宛綺

(…未完,更多精采內容請參閱網路資訊雜誌220期3月號)

相關連結
Vgod's blog

沒有留言:

張貼留言