2013年1月30日 星期三

Sikuli - 改變世界的圖像程式語言?


什麼是 Sikuli ? 是一個極有創意的程式編輯軟體,挑戰了程式碼的新可能。

可以參考Sikuli 的 Demo 影片:
http://www.youtube.com/watch?v=FxDOlhysFcM

官網:
http://www.sikuli.org/

以及Sikuli 作者 Vgod的部落格,可以讓人更深入了解核心:
http://blog.vgod.tw/2010/01/30/sikuli/


過往寫程式時,總是先得先學習一套語法,在既有的規定和邏輯下,
一字不差的打出程式碼,否則電腦便讀不懂指令。

寫出來的程式,只要稍加複雜一點,
即便是懂得程式語言的人,即便是清楚的在// 後寫上註解,甚至即便是作者,
都可能要花點時間去思考。

而Sikuli ,卻跳脫了框架,不用再輸入冷冰冰的文字,而是利用截圖的方式,
即便是完全不懂程式語言的人,也能輕鬆上手,寫出來的程式,更是老嫗能解。


上圖就是用Sikuli 的介面,最上方是一般工具列,
左欄是函式,右上是程式碼的編輯區,右下是執行程式的結果。
寫好的程式碼只要按下執行的箭頭,就會開始測試。
測試後如果有bug ,會在出問題的那一行前出現驚嘆號。

只要安裝好軟體,只要會點滑鼠,就算沒有教學可看,也能很直觀的使用。
安裝好軟體之後,我寫了一個自動登入信箱的程式,不需要花幾分鐘的時間。

單就Sikuli 的設計理念而言,這是一個很傑出的創作。
但......

Sikuli 有以下的矛盾點:

1.是一個帶來方便的工具,但工具外的包裝卻不便利:

http://www.sikuli.org/download.html

看Sikuli 的下載頁面就可以理解筆者所言為何,
Sikuli要能使用,電腦必須先安裝有  Java 6。

而且一定要是 Java 6 , 最新版的 Java 7 are not supported !?

但其實,坊間已經找得到破解版,讓Sikuli 能在 Java 7下運作。
只要改掉原本程式碼幾個小地方而已。

另一個不便之處: 要使用者自己 fix bug。

雖然步驟不難,但不免讓人會嘀咕,
為什麼不直接做一個沒有bug 的installer 讓使用者下載呢?

是作者希望能營造一些step by step 的互動嗎 ?
還是作者因為使用 Mac 的關係,無心對windows 版做改善呢?
謎。

最後一擊,是在軟體說明的地方,所連到的網址,不管是要找範例,手冊,Q&A。
都會出現嚇人的 404 以及大量的 Sorry 。似乎是最一開始的網站被攻擊的緣故。



排掉這些稍稍有點惱人的問題後,Sikuli 的使用介面還是十分親切的。


2.用創意扼殺了創意

用圖像寫程式是一個很有創意的想法,
但是,圖像本身就缺乏想像的可能性。

簡單的說,你做了一件事,然後截圖加一些指令,叫 Sikuli 依樣畫葫蘆跟著做。
 Sikuli 僅能讓已存在的東西動作再現,很難去創造出新的可能性。

很像是,請了一個助理,認真聽話但不聰明,一步一動。

當然,這也可能只是因為我才疏學淺,使用受限。
或者在其他高手的使用及擴充下,能有更突破的應用。

誠如Sikuli 作者 Vgod 說的,這一切只是個開始,還有無限可能。


3. 表相與真相

這是個非常殘酷的現實:凡事不能只相信外表。
憑藉著圖像做為辨識的依據是很危險的。

光是從這台電腦到那台電腦,icon 的樣子和位置就不一定一樣。
就算是自己的電腦,姑且不論軟體的更新,光式桌面改了個配置....
就很可能影響了程式的執行。

如果寫出來的程式,在別人的電腦使用時可能會有困難,
那麼,程式碼的易讀,又有什麼用處呢?

越是能跨平台的程式語言,往往越是抽象,
反之,越具體的程式語言,是不是就越受限呢?

這可能也是Sikuli 需要突破的關口。

4.Sikuli 為誰而生?

Sikuli 作者 Vgod 是個很有想法的人,可以去看他非常有名的系列文章:
追求神乎其技的程式設計之道:   http://blog.vgod.tw/category/divine-code/

對 Sikuli 有興趣的人,有高手中的高手,也有連Hello world 都寫不出來的老百姓。
對高手來說,比起使用Sikuli ,更有興趣在改寫 Sikuli 本身的程式碼。
對於老百姓來說,省省手指頭點滑鼠的次數,業已心滿意足。

那麼 Sikuli 會怎麼改良呢? 往什麼方向去呢?
我們拭目以待。


後話:

Sikuli 確實可以幫忙節省許多時間,
特別是一些工作上 routine 的步驟,類似定期查詢跑報表之類的。
但想想自己平時工作其實花了這麼多時間在不動腦的事情上......

不知為何感到有點哀傷。

                                                                                                                    2013/01/30

沒有留言:

張貼留言