為台灣加油打氣專欄 (66) 我們已有自己製作的繪圖系統

以工學院的老師和學生而言,我們要繪圖,都會利用來自外國的軟體。我們國家應該有一種想法,那就是我們應該盡量地自己發展軟體給別人用。如果我們永遠都只能利用別人的軟體,在經濟上我們會有很大的問題,且如果我們要創新,就會變得很困難,因為軟體不是我們寫的,它極有可能做不到我們想要做的事。

現在我在這裡給各位看兩張圖,這兩張圖都是由我們國人自己發展的繪圖軟體所畫出來的。

圖一

圖二

如果大家看不懂圖二的話,我要說,這是一個放大器,也是我課堂上教的一個放大器。

我們通常用的繪圖系統是visio,但我本人已經可以使用這個國人自行發展的繪圖系統了。這是令我非常高興的事。歐巴馬總統的一句口號「自己的軟體自己寫」,我們總算往這個方向前進了。

大家不要以為繪圖系統是很容易的,要製作一個繪圖系統一定要有多方面的知識,一與數學有關,二與作業系統有關,三與軟體工程有關,最後還要注意使用者經驗。

以下這些規格都與數學有關:

(1) 我們要讓使用者能夠畫直線、曲線、圓以及矩形

(2) 我們要讓使用者能夠放大或縮小一個圖形,但是圖形要保持原狀。

(3) 我們要能夠移動一個圖形,也能夠旋轉一個圖形。


以下的規格與作業系統有關:

(1) 使用者可以使用滑鼠來畫圖

(2) 使用者可以利用系統所建立的圖標來選擇他要畫什麼樣的圖形,比方說,有一個圖標,上面有一個圓,使用者將滑鼠移動到這個圖標上,然後按下左鍵,就表示要畫圓。

(3) 使用者可以儲存所畫出來的圖形。

(4) 使用者可以將畫出來的圖形嵌入文件。

(5) 使用者在畫圖的過程中可能產生一些中間過程的圖,這些圖會自動消失得一乾二淨,只留下最後的結果。舉一個例子,當我們畫圓的時候,其實我們會產生相當多的小圓,這些小圓對使用者而言,乃是驚鴻一瞥,一下就不見了。

(6) 使用者可以將一些圖圈起來,變成一個群組,然後可以在這個群組上操作。

(7) 使用者可以消除一個所畫出來的圖。


以下的規格與軟體工程有關:

(1) 良好的擴充性。從所有繪圖功能中整理出共通的界面,當擴充功能時,只要實作該界面即可達成目的。

(2) 遵循軟體物件導向的規範。除了讓程式碼可以繼承共用之外,更重要的是讓程式更簡潔容易維護。

(3) 使用者的操作,可以回復與重做。所有操作指令都有記錄,因此使用者可以回復到前一狀態,增加系統使用的便利性。


以下的規格與使用者有關:

(1) 提供所見即所得的操作。所有的操作必須即時讓使用者看到正確的變化。

(2) 使用者可以反覆的操作修改。所繪製的物件經過點選,可重新調整其位置。

(3) 自動編排與對齊。使用者可以很容易繪製出對齊的線條。


世界上並沒有很多繪圖軟體,要發展出這麼一個繪圖軟體,我們必須要有一些能力,否則我們是不可能發展出一個好的繪圖系統的。

(1) 要做到符合有關數學的規格,當然我們要相當有學問,尤其在畫曲線的時候,我們必須要知道最新的發展。

(2) 要做到符合有關作業系統的規格,我們必須要非常了解作業系統的細節。尤其這個系統是Word的擴充功能,要做到與Word界接,對Word的界接規格也要充分了解。

(3) 更重要的是,我們必須懂得軟體工程,因為我們發展的是一個非常大型的軟體,不是寫一個小程式。比方說,我們不能貿貿然地寫一個畫直線的程式,然後再寫一個畫圓的程式,而應該事先將畫直線程式和畫圓程式的共同程式先發展成功。


這一種研究並不是非常學術性的研究,可是對於我們國家的技術發展卻絕對有意義,因為我們的學生可以經由這種研究對某一個作業系統非常地熟悉。我們所發展的程式,有些與作業系統毫無關係,但有些有密切關係,比方說,通訊軟體就和作業系統有密切關係,所以我們的大學從事這種研究,乃是表示我們的教授願意往下扎根,不完全在教學生理論,也教學生非常實際的學問。這些學生將來畢業以後,當然對國家會有很大的貢獻。

這個系統是由靜宜大學的吳賦哲教授和清華大學的張君天博士指導學生所發展的,學生們的確學到了很多有關繪圖的數學知識,也學會了很多有關於作業系統的知識,使他們知道如何利用作業系統所提供的軟體。我們必須感激科技部支持了台灣一些教授的研究,科技部過去只注重學術性的研究,總希望研究的結果能夠發表論文,能夠支持這種往下扎根的研究,是一件可喜的現象。

我們應該鼓勵國家的教授們肯下苦功,我們的教授們不能只靠教科書,如果他們有實作的經驗,上課教起來當然會更有趣。一般繪圖的教科書多數只談到繪圖的數學知識,但是如何將一個圖在電腦螢幕上展現出來,就不是件簡單的事。有這種經驗的教授,教出來的學生當然更有競爭力。我們應該感謝國家已經有這種教授肯做這種往下扎根的事。