Thursday, 15 March 2012

收穫

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

( 一 ) 庭院收穫

三月是紐西蘭秋天的起始月份,也是正要開始農忙的秋收時期,我們大隱於市的菜圃,也在這個時候準備要結束今年的種植,保留還能成長的作物,只剩蔥與椒類了,習慣上,我種植了青椒與辣椒,它們算是年度菜圃中最後的一批作物,現正興旺的成長,結實累累,但還不夠大到值得摘食。
檢討今年的收穫,大致與往年相同,都能算是豐收,虫鳥之害也都完全杜絕,一家人享受過所有的收成。崔保忠學長自去年年底起定居此地,我們幾乎每星期固定來往,他們夫婦倆經常與我交換家庭園藝心得,今年,我從他們口述中得知,因土地太乾而要為玉米澆水時,只能澆土,不能澆濕玉米桿,以避免黑色細小的芽虫積聚在快成熟的濕玉米上而破壞收成。
今年收成的甜玉米全數無虫,我又特別愛吃這種五分鐘新鮮度的玉米,因此,今年刻意在栽種的季頭種了一批,季尾又種一批,季頭那一批已經全數享受光了,季尾這一批是12月10日播的種,需要100天才足以健全的成長,這個月底就能開始收成,又是一批享受。
我先以定距離插好細竹枝標誌,然後才直接埋入種子的方式種植,一包40粒的玉米種子,售價紐幣3元,發芽率接近100%,成活率也是100%,每株玉米桿從最上方的一片葉子往下數,第6片葉梗處會長出主要的一枚玉米,下一個葉梗處也能長一枚次要的玉米,次要玉米當然沒主要玉米長得好,若太小了,我們就當它是玉米筍,煮進排骨湯,就讓收穫全不浪費。
向我租地耕作的霍約翰(John Hodge)告訴我,本地玉米種子能夠全數發芽,是因為供應種子的公司,進行過全數的人工授粉。農民採用將整排桿頂公花彎下到隔鄰玉米母花鬚鬚處的方式人工授粉,所以發芽率接近100%。供應種子的公司,農場大部份設置在首都威靈頓(Wellington)附近。這裡也賣澳洲來的種子,但是紐西蘭自產的比較好,供應種子的公司,必須面對現場100%發芽率的考驗,都會誠實負責的供應種子,不曾違背商業道德。這些資訊與知識,都很可貴,也令我特別喜歡栽種玉米。
不幸,今年我們買來的小黃瓜種子卻全軍覆沒了,只好接受菜圃中自然發芽長出來的大黃瓜。小黃瓜的供應商Yates Australia,就是澳洲公司,我為區區只有4元的一包種子,不想去要求索賠,但是明確的體會到,去年蜜蜂大量的消失,影響了大批農作物的繁殖。我有多年長期栽種小黃瓜的成功經驗,知道它的瓜花微小到難以進行人工授粉的操作,所以必須全憑蜜蜂來協助授粉。
今年的這種情況,我能未卜而先知,靠的就是細心觀察過自然現象,去年才敢下今年的結論。讀者可以回頭參考我在2011-01-16貼出過的網文:『如何挑選瓜果』,舊網文能證明我所言不假。文內有下列這麼一段話,一年前我就預卜了今年會發生這種現象的結果,那是我愛農業研究的一點可貴心得,但不太受人重視。

『同理,如果我是一名農政官員,應該可以預卜出與小黃瓜相關的年度政策,這兩年蜜蜂的消失率高達百分之九十,因此,不苦瓜的產量應該會大量提升,而瓜種的培育,就得加強人工授粉的勞務,確保明年瓜種的來源不至於匱乏。如果我是一名法官,在接受農民提告,泰勞摘了他們的瓜花,炒菜吃掉之後,應該現場視察一下,看看泰勞是不是根據泰國習俗而只摘了公花?然後教育原告與被告兩造雙方,只吃公花是好事一樁的知識,平息他們的紛爭。我當官時,絕不會以官位高人一等而欺壓善良,能有現代諸葛亮般高人一等的知識時,只應用來博愛大眾。』

秋天的收穫也潛藏了堆肥增加的問題,您可以視其為負擔,也能化腐朽為神奇。另外,庭院內產生了一些長過了頭的植物,也應該在秋收落葉時期順便處理,這樣便能節約處理庭園廢棄物所需要的時間與程序。今年,我選在這個時候,將發展到隔壁鄰居家中的『瓶刷花』大量修剪,這是為了要敦親睦鄰而經常該做的事情,平常可以全面享受庭院的美好,卻不宜享受植物亂長之自由。
現代政客老愛濫用『自由』一辭而行『亂來』之實,經常欺負大家不敢團結起來給予痛擊而隨便亂來。自由的定義是『不影響別人的自由才能自由』,『亂來』之人,根本不應該享用影響了別人的浮濫『自由』。可是,尋常老百姓,卻因為講不出這樣的道理,只好老是任憑政客『亂來』而一直受害。
我寫網文,應該散佈這些能夠提醒群眾認清自由真諦的正確論調,否則人民不知如何打倒『亂來』的政客。您看那個被關進監牢的貪污罪犯總統,還有那些藉機製造社會動亂的『亂來』政客,把我們的社會搞成了甚麼樣子?國家的立法與司法機制不夠健全,才會有這樣的社會痛苦,正確執法消滅他們,就不會再有這種社會痛苦,問題是何時才能正確?整個社會充滿了惡性民主、惡性選舉、惡性立法、惡性執法,就如同是永無終止的惡性循環,不得善了。
我在談收穫的同時,更希望我們的未來,能有更好的收穫,是永續性的正面收穫。享受一些好的作物,只是小收穫,植物亂長的自由不是自由,必須人為剷除。意思是,我更希望國家社會能有全民的正面收穫,不能姑息而讓餘毒留下來。人身上的惡性毒瘤,該割除時不能猶豫,就該割除,否則只好等死。



( 二 ) ABC FORTH系統通告之十二 2012-03-16

敬告ABC FORTH系統的使用者:

細心的FORTH同好讀者,應該再度讀過了我在2012-02-02網文:『Advanced BASIC in Charming FORTH』文末補述的整個完整程式了。只要您有從我這裡獲得的Win32Forth(XP/W7)635.exe系統,理所當然的能夠直接執行該程式,並獲得文中所述的任何結果。
我本無再度細述該程式的責任,想用的人應該親自操作,去體會那一套知識,台灣不想用的人居多,所以在補貼程式當時,我就沒有進行進一步的解釋,但沒料到國際來訪的觀眾較多,也出現了大方引用該文的其他網文。
其實,程式中仍然有著應該寫成ABC FORTH系統通告的材料,既然公佈了,就不該偷懶而不寫,現在就當它是為反省網文而再度補寫。我經常如此反省回顧已貼出的網文,是負責任的作法,也能增進自己對事物的認知,不是壞事,也不必在乎因此而添加了麻煩。

首先第一個要強調的程式特殊設計方式,是有關於ABC FORTH系統中變數的用法。
請大家仔細觀察程式中設計的SHIFTUP、SHIFTDOWN、MOVELEFT、MOVERIGHT四個指令,它們都共同的用到了一個被宣告為複數的Z(CENTER)變數。

●在傳統FORTH程式中,直接使用這個變數之名時,就能得此變數的值。

●若想得到這個變數的儲存位址時,只需為變數加上轉入複數運算所需的特有符號指令,也就是設計成 {[ Z(CENTER) ]} 的格式,便可得到位址。

這樣的用法,我並未在使用說明中明確的列示出來,反而在使用說明P.14、P.15、P.16三頁中,另行設計了七個功能相同的指令:ADDRESS-OF、IARRAY、IMATRIX、FARRAY、FMATRIX、ZARRAY、ZMATRIX。事實上,這七個指令完全可以不要,您只需按照這次公佈之Mandelbrot程式中的用法,就能順利的獲得任何變數的值或變數的位址,包括陣列與矩陣的單個元素。

不用額外符號時,都能得值。

想得位址時:

● 整數用 [[ …… ]]
● 實數用 {{ …… }}
● 複數用 {[ …… ]}

這三個指令的明確用法,請參考使用說明中的P.20、P21、P22。

FORTH程式語言一向被誤認為是一種符號式的語言,所以有人將其譯成『符式』之中文譯名,我一直對此譯名深感不以為然,因為FORTH根本就能使用任何全長名稱來作為指令名稱,只有幾個指令,係為了便於即時性的操作,而設計成符號,因此,FORTH完全沒有符號的意義。否則,現行許多程式語言,都應該被稱為大括號語言,因為大家都採用{ …… }來設計程式,但也與此符號沒甚麼鄭重關係。
FORTH就是FORTH,沒甚麼好翻譯的,有些程式語言的名稱,實在不宜中譯,否則硬把『C』語言翻譯成『丙等』或『丙級』語言,會氣壞了喜歡C語言的人,他們不認為他們所喜歡使用的語言與使用的習慣有那麼低等、那麼下賤。還有,若把gcc譯成了『髒兮兮』,又把『C#』進一步譯成了『丙半』(丙等的一半),豈不是更加侮辱人?就算把『C++』翻譯成了『丙上上』,也仍然還是得了個『丙』等,實在是太傷人了,不能這樣翻譯。所以,FORTH就是FORTH,在實質意義上,FORTH不是甚麼符式,『符式』只能算是比較接近的音譯名稱。
當初,為了強調值與位址的觀念,我才避用符號而另行設計明確的文字指令加入系統,現在檢討起來,純粹是多此一舉,沒有必要。習慣於看FORTH傳統程式的使用者,只須記得此處重新強調的值與位址之獲得方法,便易於直讀出程式的意義。

其次,應該向使用者發佈的另一觀念性通告,為複數在浮點堆疊上的處理方式。
系統中,複數實際上是用每兩個一組而成一對的浮點實數來表示,因此,浮點堆疊處理複數時,浮點堆疊頂部放的是虛數,而第二個單元才是實數部份,表虛數的i,不用放進浮點堆疊。請注意,這個代表虛數的i,並不是只當符號使用而完全無內容的東西,它有我所設計的執行內容,才能讓老師在黑板上的寫法,能順利的進出ABC FORTH系統,但使用者可以不必管我是如何完成設計的問題。
這個i還與傳統FORTH系統中使用的迴路指標I指令用名衝突,我讓它們同時存在系統中,不出問題,下列程式完全可以正常執行,得到正常結果:

: TEST 10 0 DO I . {[ ( 3 – 5 i ) ]} Z. LOOP ;

我很高興,國際上討論FORTH系統的複數輸出 / 輸入格式時,現在已經全面改成類似我所設計的格式了。此前,包括其他程式語言,一直使用a (+/-)i b的格式來表示複數,那是別種程式語言,不便於處理複數進出系統情況下的變通使用方法,情有可原。我從一開始設計ABC FORTH數學計算系統時,就明確的指出,FORTH能夠很容易解決複數輸出 / 輸入問題,完全可以按照教室課堂上,老師寫在黑板上的數學表示方式,設計複數表示格式,因此,三年前,領先大家設計出了最為合理的複數表示方式,現在見到普及現象了,所以高興。
如果您經常逛與數學計算相關的FORTH網頁,您可以見到最近才有人討論以FORTH求解四次方程式的程式寫法,程式必須算出複數之根。如果我記得沒錯,三年多前,我就已經公佈過解任意高次方程式的FORTH程式了,該程式也包括能解出係數就是複數的任意高次方程式之能力。我仔細讀過該網文內詳列之陳之藩博士的科技著作,書中介紹了純粹為華人所自創,求解高次方程式的數值分析技術,相當高明,我讀通之後,才能設計得出該大型程式。
一直到昨天,國際最熱門FORTH網路論壇上,FORTH專家才群起討論S>F與F>S指令的標準化問題。我所設計的系統中,三年前就將問題設計成埋入系統的方式,提供大家使用了,因此,大家可能體會不出這種作法的先進意義。國際友人也常來逛我的網頁,從我公開的程式中,他們能見到我在系統中處理這種問題的方法,事實上就是比較先進。大師兄陳爽最近在設計他的雲端FORTH系統時,也讓系統能接受各種格式的輸入數字了,裡面就得用到這類指令,把它埋進系統。
能擁有超前世界技術水準幾年的系統,絕非普通系統,國人同胞卻不欣賞,我並不在意,所以我就撤掉該篇相關網文了。此處重談這些現象,只是基於應永遠負起說明系統性能的責任而談,不作它想。
您想不想用我所設計的系統?悉聽尊便,萬勿勉強。因為,這個系統可能是一個全世界只有我自己想用的系統。最近,我仔細想過一些相關現象:

我能見到的十個人當中,大約只有一個人要用電腦。
我能見到要用電腦的十個人當中,大約只有一個人要寫程式。
我能見到要寫程式的十個人當中,大約只有一個人要用FORTH。
我能見到要用FORTH的十個人當中,大約只有一個人要寫數學計算程式。
最後,全世界豈不是僅只有我一個人要這樣子寫數學計算程式?
難怪,我跟大家談這個系統,不太有人理會。
此後,我用自己設計的系統解自己的問題就夠了,何須自找麻煩白費心機?

為了信守已售出使用說明的責任,則應對這些使用者,繼續永遠的服務。我也開始慎重考慮,此後應改採高價售出系統使用說明的方式,來減輕負擔,心意不誠者就不會隨便購買。

第三個該向讀者說明的程式設計方法,不屬於ABC FORTH數學計算系統的範疇,但面對使用FORTH設計程式已經全面弱化的今天,我還是願意介紹這種簡單程式。
在Mandelbrot程式中,最後一個可以直接執行的MAIN指令內,出現了八個怪異的數字,它們代表鍵盤右邊的幾個鍵碼,程式中雖然附加了背斜線後方的文字標示說明,新進的FORTH使用者,可能仍不熟悉這些碼的獲得來源,我把需用程式放在這裡,全用標準指令設計,沒有難懂花樣。深一點的難懂程式,您可以留著以後才搞懂,這一個程式,現在就應該搞懂,而且,我不宜解釋程式內容,您應該自己實測後了解,它在設計互動式(Interactive)程式時非常、經常有用,最近,我常用,這個程式本身就是一個標準的互動式程式。

: KEYCODE ( -- )
BEGIN
KEY CR .” Key code of the “ DUP EMIT .” is “ DUP .
27 =
UNTIL ;

執行KEYCODE指令之後,要壓Esc鍵,才能跳出循環迴路。希望您了解我提供這個簡單程式的用心。

( 三 ) 其他發展

為了想出寫網文的題材,我經常會專心的動腦筋,想一些超出網文需求的古怪心得,這次也不例外。我在語音處理方面,已經累積出了一些可觀的程式,但並不會因此而滿足,經常還是繼續的產生新構想。
就如同我在『獨特的語言經驗』該文中所述一般,我還有許多語音見識,是眾人難得一見的,我在文章中簡明敘述時,通常並不單純,您請自己體會。我在旅居俄羅斯期間,經常要到店裡面購買磁器用品,您知道俄羅斯人如何賣這種東西嗎?全國一致,店家都使用一根像筷子一樣的金屬短棒,輕敲磁器邊緣,讓買賣雙方都能聽清楚了回音,確定磁器絕無裂痕,然後才包裝好出貨。許多人都去過了俄羅斯,您觀察過這些現象嗎?您聽得懂回音的差別與意義嗎?何不親手試一試?我的見聞是否經常與眾不同?您是否因此而能明白俄羅斯人能建造世界上靜音水準最高的潛艇?
同理,我想設計能夠直接輸入類比信號進入電腦的程式時,我也開始有了古怪的想法,我不想去碰封鎖內容的USB結構,自問何不轉從麥克風輸入的方式下手?能夠得出結果,效用將更為驚人。事實上,所有的A/D輸入要求,都能經由此一電腦的露出接點來實現,我應該可以找出取得輸入數據的應用程式介面(API),FORTH就能直接叫來使用。
相對於電腦執行指令的速度而言,電腦週邊的硬體訊號處理速度是非常慢的,慢到差了好幾個數量級,因此,只怕電腦抓不到訊號,而不必在乎抓訊號需耗時多久。
那麼,何止是一般慢速的類比輸入信號,只要我也能精確掌控前一篇文章中介紹的精準標準時基,一般聲訊也就具有分析意義了,我便可以直接進入語音識別分析的領域進行研究,在這方面,國際上與此相關的電腦產品也都還不上道,只要我想搞,搞出它來,我就能讓FORTH程式語言更進一步領先群雄,讓大家望塵莫及,最先成為一個能聽、能說的電腦程式語言。
如果不想處理聲訊這麼快速的訊息,那麼,讓足夠遍佈全中國的有限個電腦連成網路,定時傳送出定點的環境氣象資料,作為最基本的群眾數據資源,我能很快的設計出程式,輕易描繪出即時氣象分佈圖來,不規則座標點送來的訊號也能處理,就用我最近正在研究的各種插值(Interpolation)程式技術進行處理,便能獲得規則座標上的數據。相關於這方面的研究,我還花了點時間思考3D環境的插值技術,把它設計成完全自動的互動程式,就會是一項非常有意義的設計。這些問題,現在用我的ABC FORTH系統來設計,是多麼有趣的事情啊!透過網路自動傳出與自動接收進入FORTH系統的程式,我都已經寫好了,接下來就積極想出各種應用題目,實現應用程式,可以進一步發揮的題目,多得很。
現在,大家都不會寫FORTH程式了,網文內談深奧一點的程式,反成為沒有意義的事情,我們只好改談這些已經部份完成的程式,後續程式則都在我自己設定的發展方向中繼續進行,將來能展示的具體結果,大概就是網貼幾張實際的圖,讓親朋好友觀賞一下就算了。

( 四 ) 64位元電腦的新收穫

這半個月,我在64位元新電腦上,最大的無意義收穫,就是下載完Ubuntu 11.10版作業系統後,將原本控存在XP作業系統中的雜牌FORTH系統,全數改裝進Linux環境,安裝時出現了不少問題。
有不熟悉系統操作的問題,多練習幾次後就摸出了竅門。
有不能通過編譯的問題,就直接將顯示的錯誤訊息打進Google方塊,搜尋網頁。
竟然發現世界上還真有不少網頁,都在胡說八道類似的問題,經過一番努力,也能發現幾處較有幫助的網頁,提供解決資訊。幸好技術問題偏重於英文,國際網頁也比較可信,我才容易看到解決問題的辦法。
至於出現的大陸網頁,就不用去逛了,標題都很漂亮,卻把問題討論成不知所云,大部份一看就覺得難受,看了也浪費時間及眼力。
這樣子解決FORTH方面的問題,完全無法增進任何電腦技術,勉強裝好了能跑的FORTH,只會令我啞然失笑。如果天天都這樣子用電腦,十年之後,保證還是呆子一個。因為:

出現的錯誤訊息,大部份都是系統缺了某些東西,所以只好輸入

sudo apt-get install ………

進行自動加裝。
換一套Linux系統,就會再出一次狀況,而且還有很多個狀況所需要的待裝程式,還沒有被免費提供出來,問題就無法解決。
搞了半個月,我卻對任何加裝的檔案程式沒有任何了解。
沒能從網上獲得之程式,我自己也不會設計。

難怪全世界還想學寫電腦程式的人越來越少,還勉強留在這種程式發展環境的人,逐漸的都沒了同好,沒了可談同伴,也沒了想學的跟班,結果就都擠到歷經40多年卻永不衰亡的FORTH領域來搗蛋,強要跟FORTH老手談那些毫無可談價值的程式語言。
國際網檀上的狀況就是這樣,很多人喜歡用他自己慣用的程式語言侮辱FORTH,FORTH老手卻懶得理他們,他們連能罵自己的網頁領域都沒有了,才來FORTH網頁搗蛋。這種流浪孤兒越來越多,因為他們原來的爹娘都不見了,FORTH老手看這些人,實在是煩不勝煩,只好任由他們在FORTH網頁鬼混。
世界上沒有可以收留他們的其他程式語言論壇環境,確實是令他們感到悲哀,我也為他們悲哀。但願台灣的FORTH網頁論壇,不會落得也被搗蛋的下場,現在是有不少菁仔種(台語,那壺不開提那壺的意思),在FORTH網頁,打著紅旗反紅旗。
FORTH老手不在乎此情此景,心境完全不一樣,FORTH的特點本就是一人也能獨搞,上不上網去『論談』倒不是那麼重要,我自己就是一個典型的例子,終身從未經由『論談』得到過任何新的程式技術,能獲得的程式技術,也必然還是來自於FORTH高手,來自於純只討論FORTH的領域。
通常,沒有論談的網頁,才有可觀的寶物,只接觸這些東西,就足夠幫助自己以FORTH飛速創作。
我從不管它那裡又發展出了甚麼XYZ語言,未經長時間考驗,我就不認為那能算得上是語言。通常,不需要等待多久,回頭檢討,很快就能發現,它們全都不見了。已經證明了40幾年的事情,不需要老提證明了。
除了搞好那些雜牌FORTH,我也裝好了Swift FORTH試用版的系統,在W7環境直接執行沒有問題。它的缺點就是在想要顯示中文時,令人感到痛苦,組合語言一直要倒過來寫,我看還是在非得探索技術不可時,才去試用吧,否則我實在不敢恭維這個系統。
升級Ubuntu系統,一口氣下載了將近1400個程式,一下子就搞光了這個月的網路傳輸使用限量,此後半個月,必須忍受慢速網路的使用品質,有時,上網後,實在受不了網路傳輸的窒息現象,就關機散步去,消消火氣。
會傳影像檔案給我的同好,應該考慮我的處境,或是任何別人的處境,少傳大容量的影像資料給我。普天之下,並不是人人都願意花錢像流水般的過日子,節儉過日子絕對是美德,我雖不像您們那般大方的花錢使用電腦,對電腦的使用效率卻遠高過大多數人,我的電腦內從不儲存影片或無用圖像,也從未有過下載的電玩程式。用了8年的XP系統,40G的老硬碟,已經裝了36G的程式與資料。現在要從頭開始發展W7電腦了,也體會出一些Linux作業系統使用者的痛苦,以後再視情況,看看我能不能為Linux盡一點力?來改善那裡的FORTH環境吧。
從操作新裝備的經驗中,我才知道世界各大企業的商業競爭,想盡辦法令對手發行的系統功能,無法在自己發行的系統中使用,結果就是令使用者受害。我的個人網頁,最近有一點改變,設法安排了一個小角落,讓訪客能直接點擊下載程式。但能完成這種安排的操作,此前沒有出現過任何困擾,最近,則必須使用特定的網路瀏覽器才能完成。這就是企業競爭,打擊對手的一種現象,這種問題會永遠存在,使用者永遠受害。
這是雲端應用概念中,固有的致命問題,因此,我始終懷疑所有的雲端服務。任何人經營雲端企業的真正目的,都只想貪婪的掠奪錢財,根本沒有服務誠意,企業發展初期,對使用者略施小惠,心態就像先免費供您吸鴉片一樣,讓您中毒上癮,後續才能任憑宰割。
我專搞FORTH,最近起了想選擇性發展實端運算(Real computing)服務的念頭,專門對抗惡劣的雲端運算。