抓圖寫程式,SIKULI將改變世界

抓圖寫程式,SIKULI將改變世界

最近這幾週可謂新聞不斷歹戲拖棚?,Google沸沸揚揚地嚷著說他們要退出中國了,而另一邊蘋果也不懷好意地說他們要推出平板電腦,每一家的新聞都相當精彩。但就在這麼多商業新聞包圍之中,有一個不起眼的小新聞,是關於一個聽都沒聽過的「SIKULI」程式語言在YouTube上的示範短片。

這個短片,是由麻省理工學院MIT NEWS報導,然後在全球的程式設計師之間迅速燃燒起來,各個電腦工程師的噗浪以及Email一時之間幾乎人手一封,在極短的時間之內繞了地球好幾圈。事實上,對於許多軟體工程師來說,這段短片所帶來的震撼性,遠要比什麼平板電腦還是某某大廠進進出出中國來得重要太多了。

抓圖寫程式,SIKULI將改變世界

▲就是這段神奇的短片,讓許多軟體工程師驚奇不已。

前所未聞的Graphical Scripting Language

對於沒寫過程式的朋友來說,可能不明白「SIKULI」的重要性。其實小編也有十年沒有碰過程式語言了,還記得當年小編學程式語言的時候,學校流行還是像VISUAL BASIC、DELPHI這一類視覺+物件導向的程式語言工具,當時就已經覺得將軟體介面以圖形元件的方式來設計,再用物件導向語法來控制的方式算是相當神奇了。但與現在「SIKULI」這個被稱為「Graphical Scripting Language」的控制方法比起來,又是差了一大截。

在「SIKULI」中,你不用背各種複雜的物件名稱,也不用去理會母物件與子物件的從屬關係。你所需要的就是簡單的擷圖工具,把要控制的物件擷圖下來,直接放在語法編輯區中,就可以開始設計你要進行的動作了。

或許你會問,這有什麼神奇的?之前不是有很多自動化的桌面工具,可以幫我們指定要執行哪些動作,或是Photoshop中也有批次影像處理的功能,很容易就能做出很多自動化、批次的動作?

的確,如果從自動化工具的觀點來看,「SIKULI」能夠做到的事情並沒有那麼獨特,但它的獨特之處就是它用的方法。 我們知道程式語言已經是一種相當成熟的技術工具,從物件導向語言問世至今,所有程式設計師也都習慣了「程式語言就是這麼難用」,或是已經將自己催眠了說出諸如「.NET越來越好用了耶!」、「哇!DELPHI又新增了超好用的Windows API元件」這一類的對話。

在「SIKULI」出現以前,從來沒有人想過要徹底顛覆掉過去的觀念,想出一個全新有創意的程式語言撰寫方式。 了不起的就是,「SIKULI」真的做到了「創新」這一點,用擷圖取代了物件,你不需要知道Windows的API函式庫,也能控制視窗中的元件。雖然它的概念還沒發展到真的可以撰寫獨立的應用程式,目前能做的也僅僅只能當個桌面自動化工具,但它的確指出了一條路,告訴全球的程式設計師,「程式設計可以這樣走」。

絕對會大放光芒的台灣之光

最意想不到的,是後來發現「SIKULI」的發明者,是一位不折不扣的台灣人,在部落格上以VGOD為名發表過許多與程式相關的文章,目前正在MIT就學,而「SIKULI」也就是他在MIT的一個研究論文。而過去VGOD就曾經發表過幾篇「追求神乎其技的程式設計之道」,寫出了他對於程式設計的看法,也是目前少見關於程式設計方面相當誠懇的文章,讓人不由得想到「態度決定高度」這句話。

在程式設計這個領域,以往總是由國外來引導出一些方向,遊戲規則總是由別人來主導。現在,我們終於在「SIKULI」上看到由自己同胞所創造出的一個新的高度,這真是值得我們大力讚揚的啊! 最後,我們就簡單的示範一下,就算是程式白癡,也能夠用「SIKULI」在五分鐘之內完成一個應用。不懂語法?沒關係,從頭到尾你只要輸入CLICK()就好。

首先當然你必須先下載「SIKULI」,並且要在電腦安裝Java Runtime Environment (JRE)環境。之後,就可以依照下列的方法,輕鬆自訂你要進行的操作囉!

 

抓圖寫程式,SIKULI將改變世界

▲首先在編輯區輸入”CLICK(”,然後就點選左上角的相機按鈕開始擷圖。

 

抓圖寫程式,SIKULI將改變世界

▲大約兩秒鐘之後,你可以擷取螢幕上的任何畫面,範例後我們擷取了一個ICON。

 

 

抓圖寫程式,SIKULI將改變世界

▲擷取完之後回到程式介面,你會在剛剛輸入”CLICK(”的右邊,出現剛剛我們擷取的按鈕畫面。在這個按鈕右邊加上”)”,這樣就輸入完一句指令。

(小編由於寫這篇教學時頭昏眼花,上一個步驟抓圖完之後,所撰寫的程式碼後來又完全改掉了,所以你會發現在這個步驟”CLICK()”中的擷圖畫面與前一張圖不同…..

 

 

抓圖寫程式,SIKULI將改變世界

▲依照這個方法,我們實驗在Firefox中,將按下「feedy」RSS閱讀器按鈕之後進入閱覽頁面,到點選特定頻道瀏覽特定資訊的過程,拆成四個步驟,一一錄下來。

 

抓圖寫程式,SIKULI將改變世界

▲最後,按下PLAY按鈕,就會自動到桌面上去執行這些動作了。

janus
作者

PC home雜誌、T客邦產業編輯,曾為多家科技雜誌撰寫專題文章,主要負責作業系統、軟體、電商、資安、A以及大數據、IT領域的取材以及報導,以及軟體相關教學報導。

使用 Facebook 留言
981661e113f88be069d731e55b59557c?size=48&default=wavatar
1人給推

4.  mival (發表於 2010年1月30日 18:50)
我我我...我覺得他很適合用來做外掛...
好啦我很邪惡= ="
75b92041938df160f8916e2bc0ed6674?size=48&default=wavatar
1人給推

5.  聽。風 (發表於 2010年1月30日 19:07)
真的就是台灣之光阿~
超有創意的,而且蠻適合寫外掛XD
39edbf836b91737539958c237030973a?size=48&default=wavatar
1人給推

6.  tim (發表於 2010年1月30日 20:27)
撲...這不是跟按鍵精靈一樣嗎??
Graphical Scripting Language.....
聽起來很炫很創新。不過其實....。
不過還是台灣之光拉!!
5e430d67a513333cf98bb469461d147d?size=48&default=wavatar
1人給推

7.  嘻哈 (發表於 2010年1月30日 21:02)
感覺好像按鍵精靈加強版
對線上遊戲很有用
只要PNG圖的底層變成透明的就非常好用
只是還需要加強效率
因為是JVM又是全螢幕比對圖案
比較花資源!!
4421f8a6838d83d03c83fbaf6f0d5f37?size=48&default=wavatar
8.  jhangyu (發表於 2010年1月30日 22:11)
蠻好奇這是怎麼達成的,
難道要一直去掃Screen來分析嗎?
1f6ca231257e1fcb914a62a557d17f90?size=48&default=wavatar
9.  gogobook88 (發表於 2010年1月30日 22:12)
出現
ImportError: no module named python
不過我電腦已經有裝PYTHON了耶
怎麼會這樣
4ac3e560d4b0318183215e1c95387e4d?size=48&default=wavatar
1人給推

10.  JOE (發表於 2010年1月30日 23:42)
又是一個台灣之光
期待台灣在世界上更加發光發熱!!
777c2893f5ea302fdec92ce2cda935c9?size=48&default=wavatar
1人給推

11.  路過跌一跤 (發表於 2010年1月31日 09:04)
看官網的程式範例後
真的是一整個人都興奮起來
不過編輯出來的程式似乎只能自己獨樂而已 = =
A29bbb96183699aeb0bd274a282f0580?size=48&default=wavatar
12.  按鍵精靈? (發表於 2010年2月01日 02:02)
怎麼看都像是按鍵精靈。

好幾年前按鍵精靈就已經在作了。
而且人家按鍵精靈也很好用。

說是語言,但是感覺起來不太像。
比較像是腳本而已,而且還是依附在JAVA上。
這樣就更不像是語言了。

看這處理的效率應該就是抓螢幕來比對,
可以想見這種程式問題蠻多的。

例如,你不能變更桌面DPI…
你不能換SKIN或布景…
你不能更換語言…
甚至不能變更顏色…
而且隨著桌面解析度提升,按鈕越多…
執行速度更是直線下降。
做出來的程式流通性和相容性也是很令人堪慮。
感覺好像拿到別人的電腦上就可能不能用,
或許軟體升級一個版本之後,既有腳本就會失效。





看DEMO所做,實用性好像也還好而已。
雖然是臺灣之光,但是感覺好像也不是很令人振奮。
(不好意思潑編輯部冷水。)
有哪位可以更進一步的利用方法嗎?
20f4fd19d6fe8f419553390f2d4766b1?size=48&default=wavatar
1人給推

13.  cheaster (發表於 2010年2月01日 08:38)
對一個長久以來都寫文字介面的程設人員我(基本上…連用.net也不怎麼用元件拖拉)而言,這一種gui-coding的確很好玩

雖然以目前的效用來看,頂多比按鍵精靈好一些,不過,如文中所言,的確是一種新方向。

但,如果sikuli的作者能多寫一些source-using或document就好了…

感覺上應該不會只是單純的抓圖就用,不然怎麼把寫好的程式拿到別人的電腦用…別人的電腦搞不好界面不一樣,而且,如果僅是抓圖就用,那應該也無法跨平台…

這種模式,值得等待
08aae405efdf117f34e8bf61fa56aa5d?size=48&default=wavatar
1人給推

14.  polo (發表於 2010年2月01日 21:51)
剛看影片就想外國人怎麼會用168.95.192.1這個HINET的DNS,看後面主編的介紹,果然是我們家(台灣)的小孩,真是令人佩服及感動。

這畫面勾起一開始學WORD巨集錄製功能的記憶。

看上去這產品很像用圖像辨識技術去找出桌面實際位置(座標)然後去執行動作,似乎比較花時間,如果畫面同時有很多一模一樣的圖示,結果不知會如何?如果它還記錄附近周圍的畫面讓辨識更準確,辨識時間可能就拉長,如果視窗拉過大小,記錄附近來增高判讀的方式又會破功,真是兩難,或是這產品運作方式根本不是這種運作方式。

這讓人想到微軟想發明一種單一語言,例如LINQ就能對OS系統、資料庫、程式開發、XXAP進行一致性的查詢與控制(雖然目前離理想還差很遠)。

例如畫面中要設定IP,而這個資料是放在哪裡呢?如果我們回歸資料的本身來看這個問題,似乎能發現我們在電腦上作很多事,其實都是多餘(繞一大圈)。

未來我們是否能用一致性的語言及方法來驅動(指揮)電腦,而不是被API(操作介面)給限制住,如果我們超越它,也許軟體的天空會更加寬廣,就像韓國某軟體公司(應該聚集很多高竿且有獨自想法的程式設計師)不希望被微軟的框架給限制住而開發出自己的作業系統,就像未來的OS如果是建構在資料庫的這種觀念下(包括程式輸入與輸出都由此控制),很多指令與設定都會變的容易萬分吧。

如果台灣軟體研發高手能像朝世界都還沒想到(未開發成功)的重要且關鍵的領域發展,也許我們的軟體產業也能像資訊硬體在全球發光,如同「Graphical Scripting Language」一般。
janus
1人給推

15.  janus (發表於 2010年2月02日 11:29)
它的確是用圖像辨識的方式來進行的,如果畫面中有多個同樣的圖示的話,在寫程式下判斷時,會列出幾個同時找到的位置,讓你選擇。也可以設定辨識的準確度來調整。
的確目前sikuli能做的事情僅能像是圖示版的按鍵精靈,而且因為圖形辨識的關係,也僅能用在自己的電腦上。不過如文中說的,sikuli是作者在MIT的論文研究,值得研究的是其中的創意,提出概念的高度是高的。拋出了這個想法,之後能怎麼樣應用,其實就在於全球工程師的腦力激盪。sikuli也僅僅是作者用來闡述他的概念的一種輔助性的說明軟體,並非表示這種概念的威力僅僅只能做到加強型的按鍵精靈而已。
舉例來說,如果在我們現有的程式語言工具中能直接應用到這種圖形辨識的方式來寫作,那麼就可以在現有程式寫作的方式另外應用圖形辨識的技巧。不過這些都要等到商業軟體公司將它實現。而從學界到商業化,通常都要有一段漫長的路要等待發酵,但值得期待。
另外,作者的確目前正在進行文件檔的撰寫工作,我也時常去官網上等候文件檔的發佈。
75b92041938df160f8916e2bc0ed6674?size=48&default=wavatar
1人給推

16.  聽。風 (發表於 2010年2月05日 10:15)
其實說SIKULI只是按鍵精靈有點過份
如果你功力夠好的話其實也是能寫出很完整的程式
畢竟SIKULI也不是沒有If.Loop等功能
C666c7f0375265c18eae7884e082f29c?size=48&default=wavatar
17.  Bear (發表於 2010年2月05日 18:18)
作者的讚賞太誇張了吧, 這其實很早就有了(有點打外掛的按鍵精靈), 這東西對很多動態東西是絕對handle不了的, 只有寫code才能最精確, 最大限度減少重覆程序, 不然那麼多人辛苦學純programming幹嘛= =
052b21246308e074b1cb561f69c8198d?size=48&default=wavatar
19.  小肯 (發表於 2011年10月20日 11:22)
我用這個軟體:是一位VB6專家[世賢大]推薦與指導的.真的非常好用.現在有一個問題想請教.
VBA可以用
Shell "C:\我愛台灣.exe"
但是用了
Shell "C:\我愛台灣.SKL"
會出現錯誤訊息:呼叫引述不正確
請問該如何改正ㄋㄟ!
janus
20.  janus (發表於 2011年10月20日 11:46)
※ 引述《小肯》的留言:
> 我用這個軟體:是一位VB6專家[世賢大]推薦與指導的.真的非常好用.現在有一個問題想請教.
> VBA可以用
> Shell "C:\我愛台灣.exe"
> 但是用了
> Shell "C:\我愛台灣.SKL"
> 會出現錯誤訊息:呼叫引述不正確
> 請問該如何改正ㄋㄟ!
>


我很久沒玩這個程式了,你有沒有改英文檔名試過?
發表回應
謹慎發言,尊重彼此。按此展開留言規則