2011年6月15日 星期三

會講話的程式語言

曾慶潭2011-06-16於紐西蘭
Ching-Tang Tseng
ilikeforth@gmail.com
http://forthfortnight.blogspot.com

這幾年,我在FORTH程式語言方面,長期努力出來的一些成果,都不是很能被大家接受的東西。我也體會到這個程式語言日趨沒落的下場,它本就不易流行,更何況鋒芒已過,處境一年不如一年。
新近電腦技術的發展環境是封閉的,FORTH元老不滿於被要求『跟著用』的方式設計程式或系統,紛紛走避老同好的要求,不願浪費自己的生命,讀那些不能增長技術的程式呼叫參考手冊,改而享受自己的人生,不搞FORTH了。從這個程式語言的發明人,首先開始講:『要這樣搞,我就不搞了』這句話起,過了十幾年,現已有無數的好手跟進,國際網路論壇若偶見他們發言,也是一句『多年不用FORTH了』的答覆。
我自知沒有必要力挽狂瀾,應該面對現實,所以念頭也從還想推廣,跌落到順其自然,再跌落到自己玩玩就算了。趨勢雖不是天道,形勢就是比人強,流行一定蓋過不流行,東西再好,也只能好在自己,就是沒人真心想要。
即使日趨沒落,FORTH還有利用價值,不少人喜歡拿它特有而別人沒有的術語,在社會上招搖,聽者不易反駁,因為沒有人能夠再用FORTH證明任何脫口而出的性能,所以也不用管它是否能被證明?可以隨便地講。這種事情,單純的只是一聽一講,應該都無所謂,不就是討論、聊天嘛?我自己則深知情況,喊出一個術語,要忙好久才能略有收穫。經常發生的,卻是百思均不得其解,封閉發展環境的雷池,難越任何一步。
設計出來的東西沒人想用,看來非常正常,我應坦然面對。現在所能做的,大概就僅剩設計完成的東西是用滑鼠點兩點就可用的產品了。我曾經想為弱勢團體盡一點心力,想要設計一個會講話的程式語言:『啟明FORTH』,免費供給視障同胞使用,發展的歷史與下場,就如上述。發展不出來,不能怪任何人,因為就像是愚公在移山,我卻在搬海。
有老朋友記得我三十年前就在APPLE II上搞過這種東西,教我女兒講話,那時純粹只是好玩,沒有考慮別人。那個年頭,能讓那種電腦講人話,是很值得稱道的事情,原始的程式是好友徐欣志提供的,我們都沒去想到視障同胞。三年前,我開始搞地震早期警報監測系統研究,以超低聲頻為依據,要碰聲音。同時,我見到這裡的視障作家,使用品質低劣的有聲電腦打文章,才觸動了我的感覺,於是,又再開始下手發展。
夜深人靜時,我自己模擬過視障者的心理,回憶起APPLE II上的CALL -151真好,那是進入ROM BIOS裡面游走程式的起點,裡面的東西我們都熟得不得了,來去自如。如果電腦還是那樣,視障同胞就也能夠在電腦的技術領域與我平起平坐。曾幾何時?不能打字了,要用滑鼠,只有視窗。
讀者讀到這裡,心中可能要開始懷疑我這個糟老頭,怎麼老而糊塗到與世界發展背道而馳?且慢,先不要這樣想,我是在為視障同胞著想。
視障同胞也能讀到『彩虹真美麗』的形容辭句,我請教過視障同胞對這句話的感受,他告訴我:『雨過天晴後,這個世界確實比較清新,嗅得到,大概就是您們形容美麗帶來的效果』。我聽了真難過,不該與視障同胞談彩虹,連顏色都不該談,太傷他的心了,尤其是曾經與一個原本正常,後來視力全無的朋友聊天時,我更是戰戰兢兢。
微軟為全世界開了視窗,人人感到過癮,花花綠綠的世界全上了電腦。我們的程式好手,套用別人新開發出來的彩色透明處理程式,就得意的不得了,到處展示,3D更是不在話下,我陪搞出能夠執行程式的同好高興,但時間很短暫。晚上夜深人靜時,我再度為視障同胞難過,他們心裡完全沒有視窗。
有時,我也會趁著家人熟睡不受影響之際,使用搜索引擎,輸入最惡劣、變態的色情句子,逛色情網頁,體會色情之最。您看那些不堪入目的內容,怎能不加速搞亂我們生活的世界?回頭專心思考設計視障同胞能用的程式語言系統之事,應該如何發展?結果,閉上眼睛,卻只體會到視障同胞不受污染的心靈,他們不逛色情網頁,是弱勢團體,弱到不做壞事。
世界發展不顧視障者,視窗對視障者無用,害得我設計系統啟動的方式都遇到困難。我閉上眼睛,能夠打得出CALL -151,能聽得到自己有沒有打錯任何一個鍵?我想與視障同胞平起平坐,因此,懷舊沒有錯。
資本主義只講功利與搜括,從付費信用卡開始,先括走5%,電話線路月租費,網路連線月用費,長期括走每個月大約兩千台幣,ixx又來了,它形同小雲端,又是一筆開銷,以後會擴大,我們的政府說:『都是商機』,但小老百姓必須付出的代價愈來愈多,錢都付給大資本家,否則您就落後。弱勢團體賺錢的本領本就薄弱,相對於我們,他們將來會離這些東西愈來愈遠。
程式設計累了,關機閉目養神,搖椅上休息一下,我就想去選總統,選上了不怕別人暗殺,解散警衛,成立視障同胞護衛隊,立法保護他們,以後還敢欺負視障同胞的人,加重其刑。其實,我自己能力也很薄弱,只能設計能講話的程式語言,用來幫助視障同胞。但我與視障同胞一樣,受難的人那有悲觀的權力?於是想到應該自己努力站起來!能講話的程式語言,就是能夠幫助視障同胞站起來的工具,能讓您用來學習、設計、寫作、溝通、享受…,也許也能用來賺一點錢。
能講話的程式語言可以設計得出來,前面的網文,簡單的強調要『講人話,唸文章,配合視障操作而反應』,我已經實現過了,但沒有人欣賞,我坦然面對這樣的結果。這一陣子有朋友來訪,我隨便展示一下,也許他們慣於誇獎朋友吧,我聽了興起,於是又拿出來加強功能性的設計。
程式語言與人類之間的溝通,不外乎輸出與輸入。我有閒錢時,曾經買過語音輸入系統,試用後才發現,要把房門關死,先做用前語音識別安裝測試,花了不少錢,也耗了不少時間,結果可用率低到無法接受,連配售的麥克風,品質也低劣到一折就斷,斷過兩套,屍體還在。因此,我深知目前語音識別輸入功能的發展,很不實際,距離理想還遠,發展這種技術,並非我力所能及,不要隨便在社會上高談闊論而獻醜。
單純的只要求程式語言能夠輸出語音,並不困難,我也早已完成過設計了。但要程式語言能夠輸出程式執行後所得結果的變化性語音,就不是那麼簡單了。這就是我在前面提到的:喊出一個術語,輕而易舉,做下去,您才知道問題出在那裡?
如果輸出還是只有單純的話語,程式也很容易辦到輸出希望中的組合語句,透過邏輯判斷後的分支就能完成,程式只需設計成合理的模組,互相配合就行。我在發展的過程中,發現了嚴重的問題,想將計算出來的數字插入語句,不是直截了當可以寫成程式的。這一點功能,若不能妥善解決,就算不上是能講話的程式語言。
苦思良久,結果設計出了具有相當規模的程式,問題才獲得解決。數字有很多種,整數、小數、浮點數…等都須要考慮,為了配合文字,程式執行結果打算輸出時,就不能採取就地解決掉資料的方式來進行輸出。比較妥善的作法就是另開一個看不到的終端機緩衝區,將資料送到那裡去集中處理。
這樣的系統規劃方式,程式的內容就等同於另外設計一個編輯器了。曾經自行設計過編輯器的同好,知道程式的起碼規模,我在那裡花費了不少時間,最後設計出來了。
數字要移到新的終端機緩衝區去,與匹配文字正確的組合在一起,才容易處理出完整語音輸出的效果。原來的文、數字資訊,也還要在原來的螢幕上顯現結果。因此,會同時有語音與螢幕的輸出,是兩套並行的輸出設計。試用時還發現,聽力想配合視力時,視覺暫留的效果,時間必須長一點,等同於自己先看了螢幕,等一秒後才聽到聲音,才聽得清楚。換句話說,如果大家都用有聲電腦來設計程式,我的速度是不如視障同胞的,我雖有正常的視力,在視障同胞面前,一點都不夠格得意。
為了設計這些程式,我仍採用許多先聖先賢的程式,數量很多。要把數字傳送到指定位址的規格指令,是一個大程式。類似於編輯器的規劃設計,又是一個大程式。想唸整篇文章的功能,要動用到檔案傳輸協定來設計,也是一個大程式。一堆方便的測試指令,又形成一類程式。為了要將功能添加進我設計的ABC FORTH數學計算系統,也形成另一堆程式。用上了這麼多的程式,才讓這個系統勉強稱得上是『會講話的程式語言』了。
FORTH系統中的指令,很容易賦予適當名稱,這是拿FORTH來設計出能講話程式語言的優勢所在;但FORTH程式語言用了許多符號當指令,這又是拿它來當會講話的程式語言之劣勢所在。問題不是不能解決,只要將來多關心一點視障同胞,就能辦到。我不愛視窗,沒試過觸控,也許那邊有一點好心的設計。
我自知,即使如此,距離能幫視障同胞設計出完整規格的程式語言系統還相當遙遠,我上網讀教育學家發表的論文與論述,知道視障同胞最難讀得的資訊是圖形資料,那怕是一個最簡單的三角形圖形,話語都難以描述得清楚。但我也產生了靈感,我設計過不少數學計算程式所需要的繪圖程式,我知道一些:想繪出理想圖形時,必須提供給繪圖程式的基本要素。因此,有一天,我會將這些要素整理出來,也許就能促成自創的一套,視障同胞派得上用場之圖形描述語言。FORTH程式由指令統一組成新指令的方式,也對這種設計哲理大有幫助。
會講話的程式語言,對大家來說,可能根本沒有意義,但我不覺得如此。反正大家已經覺得FORTH沒有用了,我也已坦然面對這個趨勢,大家說它沒有用就沒有用吧,老手都明白此事,不願再費唇舌。
『啟明FORTH』也許是一個永遠設計不出來的東西,甚至於設計好了,對視障同胞而言,也是個廢物。但因為要設計這樣的系統,能讓我為視障同胞設想一些事情,就能得到一些心靈上的愉快,顯現出FORTH的剩餘價值。至少,我單拿他能唸英文文章這一項功能,交給台東的原住民同胞使用,必能派上用場,能讓原住民未來的英文使用能力,會比你我都好。
發展我自己的構想,確實很需要一點錢,才能使用較好的硬體設備,我原本想寫書賣了換錢,籌一點經費。看到FORTH最終的下場就是這樣,我看還是算了,我自己買我自己的一本,充當發展基金就夠了。書不會有人要的,硬要投資印書,搞不好還弄得血本無歸,想買硬體的打算,反而愈來愈遠。
我看到新聞報導,政府一出手就是五十億,搞個大約只有幾秒鐘提前預警效果的『媽祖』計劃。此前不裝『媽祖』設備,光用傳統偵測儀,不就早已能夠提前幾秒了嗎?系統上也看不出增設了那一項極有意義的測量元件,那五十億豈不是白花的?如果凍結兩年存在銀行,光那些利息,就夠我來回搞好幾筆研究了,就算我若失敗了,五十億本金也還可以還給政府啊!
見到這些現象,坦然面對吧。網文貼了幾年,實做也做了幾年,誰在乎呢?每當我聽到親友介紹啟明學校的視障小幼苗,他們自知視障沒有好的未來,經常令家人陷入愁雲慘霧,從小就爹不疼、娘不愛的過日子,反而愈加堅定自己發展能講話的程式語言之信念。
希望有一天,我可以告訴他們,沒有關係,啟明FORTH可以帶你們勇敢的站起來,你我都要有骨氣一點,莫管誰來嘲笑,我繼續搞我的FORTH,你們儘管用,隨時用啟明FORTH告訴我FORTH的缺點。