2009/5/1

圖形化編寫程式語言(Graphical Programming Language)概述


一般來說,程式的編寫都是使用鍵盤敲打文字的方式,輸入訊息,按照各種程式語言的規則,程式設計師使用語言逐漸建構他對軟體的想像。也因為文字介面編寫程式語言的關係,正立下一道深邃的鴻溝在人與電腦程式設計之間,而來自程式語言使用上的艱澀,除非有經過程式訓練和對程式語言熟悉的人,才能對電腦有更多的掌握,不然的話,一般人想對電腦有更多的操作,依然要花時間慢慢建立一種關係,這關係的建立如同在學習外語必然會做的過程,如背單字、學習文法的過程,但是除此之外更重的一點是,在命令列介面的環境編寫程式,它的成就感不容易建立在加上所編寫的程式不容易立即看到結果,造成學習上的緩慢以及最糟糕的情況就是讓學習者終止接觸程式語言。
圖形化編寫程式語言的出現或許正在解決這樣的問題,Max是最早開發出來的圖形化編寫語言,它是在80年代中期的時候由Miller Puckette在IRCAM所開發出來的,當時只能使用在麥金塔的系統上,並且由電腦與鋼琴控制聲音的創作,後來在1999年,由Cycling '74發行Max的商業版。而在1996年的時候,Miller Puckette發佈了一個完全重新設計的自由軟體計劃,稱為Pd(全名為"Pure Data" )。

圖形化編寫程式的操作方式是使用盒子與盒子的連接,也就是拉線的方式,將各個功能連繫起來,其中圖形化介面中的物件連接是屬於資料流動(dataflow)的概念,這影響是來自電路圖、管線等。 它的優點是,協助非程式背景的人員順利進行編寫程式的動作,掌握更多的電腦掌控和邏輯、規劃流程的建立,還有容易見到目前編寫程式的狀態等,但最大的益處是幫助學習者易得成就感。而缺點是非線性的編寫程式,比較難瞭解程式是由哪裡開始和哪裡結束和其他參數來自哪裡,這是因為圖形化的關係,容易將程式散落在工作區域裡,也因為如此,如果沒標示好註解去區分的話,創作者以外的人難以理解程式的流動與運作,尤其在大
型程式中最為明顯。

從實際使用的過程進一步理解文字、圖形這兩種介面的差異,圖形介面使用的過程如同積木的堆疊,而堆積木的感覺是來自高度的模組化,因為從文字介面的方式來編寫程式建構一種功能的話,必須從最基本的地方開始建立,如變數、迴圈、判斷式的運用,總而言之,就是把你要做的事,從頭到尾在講一遍。但是使用圖形編寫程式語言就不一樣了,它把上述的事建立成功能並且包裝成一個盒子,這也就是所謂的模組化,你要使用它的時候,不用再說一次,只要把盒子呼叫出來,加入你需要用到的參數並且用圖形化拖拉的方法,連接到別的盒子(功能)你就可以建立一個於你自己的程式。

而使用文字編寫程式如同捏黏土,會有這樣的感覺是因為來自對於你必須從新打造你要設計的功能,這也意味著能限制你比較少,你可以完全量身訂做專屬你的程式功能,所以這就是為什麼有黏土與積木的比喻,這對照很確切的描述這兩者的差異。

圖形化編寫程式語言也許可以從圖形使用者介面(Graphical User Interface,簡稱 GUI) 與命令列介面(Command Line Interface,簡寫:CLI)這兩種介面發展脈絡裡得到經驗。從介面的發展看來,早期文字介面的使用會使得一般的使用者產生卻步,讓程式的編寫趨向一種高技術、技巧的狀態,但是在圖形使用介面的開發後,因為使用數位工具的難度下降以及功能圖形化顯示的隱喻,讓使用者直觀使用,降低使用的挫折感,提高親切性,讓更多人不必有深厚的程式設計師訓練,就可以更快更順利的使用電腦。

以自己的本身學習過成為例,為了創作作品中互動技術的解決,由actionscript、java、processing、max/msp、vvvv以及最後的自己選擇在puredata這開放軟體工具定下,這一路走來,來自參加北藝大的課程與許多優秀的工作坊所學到與經歷,如李家祥所主持的互動工作坊、中研院的玩趣工作坊、北科大的編曲互動工作坊,這些經驗讓我這非工程師背景的人,由命令列介面到圖形使用者介面的編寫互動程式軟體走了一大圈。結果是我明白編寫程式可以完成你想要做的事,不過文字的方式造就學習的挫折感,圖形介面讓學習容易上手,但是執行效能與創作範圍上的限制,文字編寫介面的執行效能高於圖形編寫,圖形編寫限制高於文字是確實的狀態,端看使用者的衡量。

圖形化編寫程式環境的相異:

該表格的比較的目的並非比較出哪一種軟體工具是最為優秀,而是在幫助初次接觸以patch為編寫程式的視圖形環境的初學者作為一個簡單的釐清,那一套軟體是最適合自己的需要。個人認為每個工具都有自己的長處與短處,而且最為重要的是,工具的最終目是為了實踐創作者的想法,因此找出符合你的工具就好。

就自己的學習經驗,由短時間初學Max/msp、摸索Vvvv快一年多,到最後選擇在Puredata落腳,看起來似乎花了很多時間在三個相似的工具上,但是在這段旅程中,對我而言,自身瞭解到介面設計的重要性以及每個軟體都有各自的精神與哲學。

參考資料:
DirectX
http://en.wikipedia.org/wiki/DirectX
GEM
http://en.wikipedia.org/wiki/Graphics_Environment_for_Multimedia
openGL
http://en.wikipedia.org/wiki/OpenGL

軟體:
Max/Msp
http://www.cycling74.com/
Puredata
http://puredata.info/
vvvv
http://vvvv.org/tiki-index.php

介面:
命令列介面(Command Line Interface,簡稱CLI)
http://en.wikipedia.org/wiki/Command-line_interface
圖形使用者介面(Graphical User Interface,簡稱 GUI)
http://en.wikipedia.org/wiki/Graphical_user_interface

視覺化編寫程式語言
http://en.wikipedia.org/wiki/Visual_programming_language

資料流動(Dataflow)
http://en.wikipedia.org/wiki/Dataflow

Dataflow programming
http://en.wikipedia.org/wiki/Dataflow_programming


集成開發環境 (Integrated_development_environment)
http://en.wikipedia.org/wiki/Integrated_development_environment

沒有留言: