2010年4月16日 星期五

我們還是差不多先生嗎?

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

不必急著回答這個問題,等我們談FORTH技術時再來討論它。最近忙著自家的事,也忙朋友的事,把所有事情都處理得順遂了,居家生活就充滿了歡樂。
大女兒車子引擎節溫器拆修之事,一次就搞定了,此事原本不急著做,但冬日來臨之前一定得做,近日夜間出現了4度C的低溫,是該採取行動的時候了。我們安排了星期六自行修理,總共只花了30元紐幣,買了新的節溫器及橡膠墊圈,添加過冷凍劑的引擎冷卻水,洩放時回收,修完節溫器再次充回水箱,完成全部工作後,環境保持得乾乾淨淨,又是一次得意的工作成果。
拆除下來的故障節溫器確實是壞了,表示我運轉核反應器(俗稱原子爐)時的系統分析技術仍然管用,兩邊銅質支架都已銹斷,難怪節溫器恆保持為透通狀態,完全沒有節制水流的功效,網文邊附上一張已毀壞節溫器的照片,供您欣賞,換上全新品,維持引擎恆定溫度的功能就可完全恢復正常。

具有汽車引擎專業知識的人,才能體會節溫器好或壞時,所呈現的不同現象,缺乏這種專業知識也能好好的過一生,不想搞懂它也無所謂,就如同您懂或不懂FORTH一樣,不是甚麼大不了的事情,懂了當然有許多好處。簡而言之,它是一個汽車引擎中必要的設計,節溫器毀壞而無功能,對引擎不好,如此而已。
節溫器正不正常?所顯示出來的現象,卻蘊含了一項有意義的學問,值得傳授給大家,這是我們從事於核子反應器運轉多年之後,累積而得的寶貴經驗。一般設計良好的工程產品,如果安裝了重要的指示儀錶,那麼,該儀錶的正常讀數,應該被設計成經常處於滿刻度之1/2到2/3的指示位置,這是全世界相約成俗的設計規矩。如果工程為您所學,教科書中曾經這樣提醒過您嗎?若沒有,您從這裡可以學到這項知識,就不會白讀本文。如果您正從事於工程設計,或者,您就是負責工程設計的老板,您設計的東西不符合這樣的標準,請立刻進行修正,否則會造出違反一般標準使用習慣的丟臉產品。
正常讀數應該落於『滿刻度之1/2到2/3的位置』,這個工程規矩是有緣由的,讀數在這個區域內,人們直覺上就認為讀數比較正常,看起來最為自然,也是儀錶自身所能有效顯示的最精確範圍,所以有此相約成俗的習慣。反過來講,如果正常讀數設計成偏在高或低處,那麼,不用到的那一邊就是浪費的設計,而且讀數已經處於能顯示的邊緣了,稍有變化,儀錶就將因為無法到達刻度之外而失效,不可這樣設計。
當年我挑起運轉核子反應器的大樑時,經常要例行巡視全廠,那裡面安裝的各種儀錶,只能以成千上萬來形容,您若缺乏對儀錶的工程素養,現場巡視就是白走一趟,優秀工程師不用背記儀錶的正常讀數,一眼掃過巡視區域,立刻可以快速識別出不正常狀況,那一個儀錶的顯示有問題?憑藉的就是我在這裡告訴大家的寶貴經驗。
我家車子的節溫器故障而保持恆為透通時,引擎的溫度指示經常顯示在1/2滿刻度以下的位置,每當行駛到大下波的路段,因為散熱太優良而過度了,溫度指示就一路下降到接近常溫的位置。換妥新品後,正常的顯示就在剛好1/2的位置,爬大波時指針會略微上升後再降回1/2位置,這樣的顯示才代表引擎經常處於恆溫狀態運轉,效率最好。
夜晚出現低溫時,許多瓜果蔬菜都會凍壞,常溫低到10度C以下,許多植物也都停止了生長,今年該吃的水果都已結束,有些果樹在落完果後,進行了最後一輪的增長,例如:桃、李、杏樹,現在開始落葉,休養生息,準備過冬了。
院子裡面種植的水果,目前只剩紐西蘭特有的飛餃(feijoa),要吃落果才甜。
我們家菜圃今年又有一次令人滿意的大豐收。您簡直難以想像,一個『大隱於市』的小小菜圃,小黃瓜的豐收期,一天可以收成十幾公斤,並且持續好長一段時日。
今年又收成了上百個甜玉米,大女兒嫁出去了,我們一天只能吃掉三個,吃了一個多月的最新鮮玉米。
佛手瓜是第二年的老株,長的特別旺,現在就是豐收期,有時一天也是收成十幾公斤,收成後到處與朋友分享,它很耐放,可以一直放到春天,供我們長期享用。
今年的南瓜更離譜了,我試驗性的在不同位置種植了三株,一株種在新開闢屋邊角落小菜圃的位置,僅長成一顆大約只有正常尺寸一半大小的小南瓜。第二株直接種在菜圃的任意位置,仍規規矩矩的長成了三顆正常南瓜。第三株刻意種在庭院堆肥(compost)的近旁,收成時得到了26個,很夠我們吃它一整年了,堆存家中時確實有點困擾,還好我的房子夠大,找得到可以存放的地方。辛苦進行了半年的農業栽種試驗,得到了0.5:3:26的經驗數據。

另外有一個意外的收穫,春天菜圃中自然長出了一株西瓜苗,當初我也只當它是種著好玩的試驗品,因為我聽說有華人朋友在此發展西瓜種植,結果因不好吃而全廢棄了。奇怪的很,我們自然收成的幾顆西瓜都好吃得很,我們只讓它自然的生長,不太澆水,模仿台灣的沙質土壤來種西瓜,瓜面的紋路都適度漲開,汁多肉甜,最後收成之發育不良的一棵小西瓜,都捨不得丟棄,可愛極了。

我們特別請小女兒為這些寶貴的瓜果收穫照幾張相,在網文邊與大家分享。
紐西蘭的生活有許多可圈可點之處,享受之餘,該時常記得要修養自己,為了培養耐性,五年前(2005年)立下決定,以栽培松樹盆景鍛鍊耐心,從松樹種子開始種起,目標為種出幾棵松樹盆景來。
當年,從松林中撿回一粒特大號未鬆散開來的松果,用熱水儲水桶直接放出來的熱水(約80度C)泡開此果,聽到松果爆開的嗶擘聲時,立刻從熱水中取出松果,以鑷子挾出種子,篩選了20粒較為豐滿的種子,分別置入各個培養盆中培育,全部育出了松樹,我見到發出來的七針葉苗,長成一年之後,分贈了許多本地的朋友。
五年過去了,我自己留下來的盆景仍然健壯的成長,它們需要充足的水份與陽光,才能長得好。松樹盆景的樹型,要靠人工的扭曲才能成型,英文書本上介紹,可以用較粗的銅線,纏繞長成一年以上的枝幹來輔助成型,我使用廢棄變壓器拆下來的粗銅線,試纏繞了一株,果然有效,但尚未全面下手。我始終記得十幾年前,在台灣觀賞『大陸尋奇』電視節目時,報幕人介紹黃山的幾種松樹樹型,貴在要能顯現例如:裂石而生、攀岩而長、枝幹曲糾、頂平如蓋、針葉粗密…等的樹型,有一天,我會逐個實現它。
我靜坐庭院觀賞盆景而沉思時,曾經想過,只要我肯下決心,我能耐心的種植五年的松樹盆景,我也應能耐心的寫它五年有用的網文,耐心的再度發展五年FORTH程式,耐心的服務社會大眾。
院子裡的松樹盆景,也應該請小女兒照張相與大家見面,它代表了曾經有過的五年耐心,與可能充滿了五年以上的FORTH發展希望。

從小我就喜歡看那單張黑底白字的『朱柏盧治家格言』字帖,我還記得第一次拜訪內人老家時,清楚的見到她家客廳牆面上,張貼了這一張破舊的字帖,卻勝過百萬名畫,當時的直覺反應是:我岳丈是個有修養的人,他的子女肯定有教養,夫復何求?
這幾天,我特地將『朱柏盧治家格言』重新親自打字編輯,規規矩矩的補加標點符號,適度分列編輯,設計成單張A4影印紙剛好可以容得下的格式,自己印存一份,我覺得它永遠具有流傳的價值,所以特別安排在這裡與大家分享。
打字編輯時,我慣用中文標準注音符號輸入法,有許多我原本唸不準的字,我能打得出來,就表示我查過字典正過了音。原來的字帖是從不加標點符號的,我將其唸順了適度加上,便於可以時常閱讀。這一份只差不具有可以臨帖習字的功能而已,大家可以使用網頁貼文的黏貼方式與我分享。它算得上是一份很好的修身養性材料,由於文中帶有男女不平等的歧視字句,所以不能被採用來作為教科書中的教材,其他就無不是之處。女性讀者請不要以這樣的眼光來看待這篇治家格言,那些字句只表示了可以同時反應作者當年所處的時代背景,作者與我均無歧視女性的心態,好文就是好文,教育我們的下一代恆是有用,全文詳列如下:

朱柏盧治家格言

黎明即起,灑掃庭除,要內外整潔。
既昏便息,關鎖門戶,必親自檢點。
一粥一飯當思來處不易,半絲半縷恆念物力維艱。
宜未雨以綢繆,勿臨渴而掘井。
自奉必須儉約,宴客切勿流連。
器具質而潔,瓦缶勝金玉。
飲食約而精,園蔬愈珍饈。
勿營華屋,勿謀良田。
三姑六婆實淫盜之媒,婢美妾嬌實非閨房之福。
童僕勿用俊美,妻妾切忌豔妝。
祖宗雖遠,祭祀不可不誠。子孫雖愚,經書不可不讀。
居身務期質樸,教子要有義方。
勿貪意外之財,勿飲過量之酒。
與肩挑貿易,勿佔便宜,見貧苦親鄰,須加溫恤。
刻薄成家,理無久享。倫常乖舛,立見消亡。
兄弟叔姪須分多潤寡,長幼內外宜法肅辭嚴。
聽婦言,乖骨肉,豈是丈夫?重資財,薄父母,不成人子!
嫁女擇婿勿索重聘,娶媳求淑女勿計厚奩。
見富貴而生諂容者,賤莫甚!遇貧窮而作驕態者,最可恥!
居家戒爭訟,訟則終兇。處世戒多言,言多必失。
勿恃勢力而凌逼孤寡,勿貪口腹而恣殺牲禽。
乖僻自是,悔誤必多。頹廢自甘,家道難成。
狎暱惡少,久必受其累。屈志老成,急則可相倚。
輕聽發言,安知非人之譖愬?須平心再想。
因事相爭,焉知非我之不是?當忍耐三思。
施惠勿念,受恩莫忘。
凡是當留餘地,得意不宜再往。
人有喜慶,不可生忌妒心。人有禍患,不可生喜幸心。
善欲人見,不是真善。惡恐人知,便是大惡。
見色而起淫心,報在妻女。匿怨而用暗箭,禍延子孫。
家門和順,雖壅飧不繼亦有餘懽,國課早完,即囊橐無餘,自得至樂。
讀書在窮理盡性,為官在勤政愛民。
守份安命,順時聽天。
為人若此,庶乎近焉。
庚午仲冬梅城易日佳
知識爆發的時代,學海浩瀚,今世更甚古時,為學有所心得,若能不吝與世人共享,互相砥礪,彼此的成就就得以更為加速增長,此乃今古學者學習環境最大差異之所在,因此,歡迎讀者閱讀本人網文後來信指正與共勉。
本文後續論及的技術,全賴網路提供了知識高速公路的功能方得以實現,如此應用網路,代表一種正面的網路修養,值得大肆鼓勵,我也感謝所有讓我能夠無條件獲得知識與技術的網上服務以及網頁單位的提供者。
從過去這一年網路上的資訊看來,可以說我們中國人已經不太有人再對使用FORTH寫程式感到興趣了,因為大家全都不用FORTH寫程式,都只對FORTH系統高談闊論。
各個以FORTH發表言論的人,看起來都好像另有Charles Moore以外的高明見解,我也很高興大家能有這樣的成就,總想見到台灣能有一些運用高明見解設計出來的東西,至少它還可以代表了一點FORTH的精神,可是,很不幸的是,還沒見到任何完整像樣的產品,但我相信將來一定會有的。
這種網路言論局勢的長期變遷,更使今後能集中火力專談FORTH的份量逐漸減少,最後終歸至零。如果恆不用FORTH寫程式,怎麼可能真正的懂FORTH?許多FORTH專有的技術如何才能傳得下去?任何人都不應因為僅讀過了一兩本FORTH系統的書籍,就認為全懂了FORTH,這又不是瞎子摸象,親身全面的體驗很重要,所以我還是鼓勵大家用FORTH寫程式。
改談C式語言,或廠商提供內容完全不透通的所謂某種發展平台,專談這種應用的討論,現已大量地增加,因為是趕流行,看來會蓋過一切。所以,所有的FORTH組織以後可能應該更名為『C式』組織,不應再掛FORTH之名。這種現象很正常,是大勢所驅(言驅使而非言趨勢),不得不然,FORTH老手也只能徒呼無奈。其實,無論使用那一種程式語言,只要還能搞出成就,改談C而不談FORTH也沒有甚麼不好,一切都事在人為。
台灣是這樣,全世界可不一樣,comp.lang.forth有一篇『programming language popularity』事實統計分析列表報告,過去這一年,純FORTH被提出來討論次數的相對比例卻大幅度增長,大部份此類網文都帶有純粹使用FORTH搞出來的具體成就,FORTH的排名向前跨進了許多,由前一年的排名第12進展到9。當然,C式語言始終恆是大量領先者,這也是不爭的事實。
時勢若果如此,我為什麼還不斷地向台灣輸送FORTH的訊息?道理無它,等到全世界都不提FORTH了,我就會死心,然後自己把玩FORTH,現在全世界不降卻反升,我就欲罷而不能。
4月6日,復活節過後不久,丁陳老師來信,指導我用FORTH計算,驗證耶穌是那一天死的?題目很具有挑戰性,因為從未有人算準過。目前最活躍的FORTH組織,矽谷的svfig將於4月24日討論同一問題,因此,我將老師的來信轉貼到中華民國符式語言協會的網站去了,台灣將在4月17日開月會,我估計不會有人對此問題感到興趣,所以大概不會有相關的FORTH程式發表,我則配合自己的提議,於台灣月會時,利用網文同步發表這一篇很不成熟的見解,老師的答案會在矽谷月會出現,到時您再自行參考。信的內容如下:

Chingtang,

I just sent to Kevin Appert, our program chairman in SVFIG, a programmer's challenge as our discussion topic in the morning FORML session of our monthly meeting. I think you probably will like to see it.
Think about it and see if you can solve it. I will announce my calculation, which may not be correct at all, in the meeting.

Regards,
Ting.

Kevin,

We haven't done a programmer's challenge for a long time. How about this one for the morning session in our April meeting?
Programmer's Challenge: When did Jesus actually die?
Clues:
1. He died on a Friday.
2. Thursday before his death was Passover, which was 14th day of 1st month on Jewish calendar.
3. Passover generally has the first full moon after spring equinox.
4. Passover was Monday 3/29/2010 this year.
5. Spring equinox was Sunday 3/21/2010 this year.
6. A year has 365.256363 days.
7. A month has 29.530689 days.
8. Which year around 30 AD had Passover on Thursday?
9. Integer math and floating point math are both acceptable, but you need six decimal digit precision.
Go figure. Let us compare notes in the morning session. Show your code if you have it.

Regards,
Ting.

這只是一個簡單的計算問題,用別的程式語言也很容易算,但與實際日曆比對,則一定算不準,深入研究卻可以研究出一大堆的天文學問,我將這個問題與FORTH掛勾,而且是與我所設計的ABC FORTH數學計算系統掛勾,讓大家了解這個系統有何特別與眾不同的計算功能?
長久以來,西方自以為是科技先進的國家,常譏笑我們是『差不多先生』,近200年來,西方在科學方面進步的程度,讓他們確實可以這樣嘲笑我們,200年前可不是這樣,今後也應該不是這樣。研究丁陳老師所指導的這個題目,才有機會仔細思考,我們還是差不多先生嗎?
耶穌是那一天死的?帶有過度濃厚的宗教意味,也許會引起某些人的反感。因此,我刻意將問題轉化成:『西元30年附近,何年何月何日為當年春分過後的第一個滿月日,而且必須為星期四?』
解這個問題需要用到天文知識,您才能了解何謂『春分』?如何訂定『滿月日』?以及『某年某月某日星期幾』的真正意義。我一生都對天文學問有興趣,但都只學而不敢發表任何『淺見』,『天文』比『核子』還難學通,不要小看天文。
我在細讀老師來信之後,首先進行的解題方式,採取調皮學生的解法,尋找最為可靠的答案,方法稍後解釋,自己該寫的計算程式則留在最後才進行。
為何如此『先找果』再『後探因』?因為,根據我的天文知識,我早就知道現行日曆已被人為的修改過許多次,不斷地修改是不得不為之的做法,修改後的記錄卻是一團混亂。而且,200年前,西方國家民智未開的程度,比起當時的中國人,簡直就是,『差很多先生』,曆法的計算方式及該有的正規記錄,全都不如中國。我學的不是歷史,史書對我而言都是故事書,我的英文也不好,沒能力查那些混亂的英文曆法記錄,但讀過他們自認為古曆法確實亂且不可考的報導。
您想想看,不久之前,那些差很多先生堅持尊奉一個帝王的大姆指為1英吋,他的臭腳丫為1英呎(天工尺上標了『興旺』,難怪他是帝王,而且腳確實很大,您量量看就知道),而且還一直延用到今天都不肯覺醒、放棄,搞得全世界的螺絲有兩套規格。非十進制的換算方法,連他們自己都經常算不清楚,也因此把登陸火星時的速度計算都搞錯了,結果最近一個四億多美金的偉大太空計劃一次泡湯,因為算出登陸火星時,該用砸東西的方式砸下去,結果東西當然是砸爛了,真是『差太多了』。
難怪超過2000年以上的問題,把我也給搞混了,耶穌到底是那一天死的?始終都算不清楚,還好有一本記錄了比較合理故事的『聖經』,記下了不受影響的『春分後的第一個滿月』及『星期四』,隔天耶穌就死了,享年才大約三十而已,真是『英年早逝』,成就竟然如此偉大!
我先用最為可靠的中國農曆來確定日期,須用可靠的網路技術。搜索網路雲端資源時才驚奇的發現,google新的網路搜索引擎搜索結果,可能屈服於中國大陸政府的淫威,搜索中文網站的結果,與前一段時日的情況比較,有了明顯的改變。改用yahoo台灣的搜索引擎,則變化不大,習慣上找得到的仍找得到。我堅持只搜索台灣網站的原因,是不相信中國大陸政府管轄下的任何資訊,他們曾經竄改歷史,把我父親曾經經歷過的抗日戰爭史實改得不堪入目。台灣才用正體中文,忠實記錄歷史,以自由民主的方式,接受合理的指正,可信也可指責。
如果您也學我的方式研究這個問題,我建議您使用一個最為可靠的台灣官方網站:http://db1x.sinica.edu.tw/sinocal/來尋找答案。這是一個由中華民國中央研究院計算機中心建立的有用網頁,它提供線上直接換算西曆與中國農曆的功能,而且以月曆方式顯示結果,還有精確負責的修正歷史記錄文字說明,有效範圍從西元2年至西元2100年,涵蓋了我們解題所需要的時間,使用時不必付費。
計算機中心現任主任應該是林誠謙先生,他曾經長期支持我們中華民國FORTH語言協會的活動,曾任協會的會長,我們仍然應該與他密切的結合,進行一切研究。他們那個研究單位的運轉經費,是全國人民的血汗錢,建立這樣龐大的資料庫以及繼續維護修補,須要耗費大量的人力工時,但對全體中國人特別有用,工作者擔負的是歷史任務,一般小老百姓就不用再重覆浪費人力建同樣程式,我們FORTH協會的同好,也因此可以省下寶貴時間,專心發展FORTH的其他應用。這種網頁就是正確的貢獻社會研究績效,政府應該再增加他們的研究經費,以便產生更多的研究成果。我希望台灣的讀者能代我通知那個單位的貢獻者,請他們來讀這篇網文,給予他們最大的鼓勵。
查找的結果,顯示了西元30年春分的可能日期,陽曆的3月20日為農曆的1月27日,緊接在後的第一個滿月日,農曆必須為2月15日,陽曆則為4月6日星期四,中華民國歷史記錄為東漢光武帝建武6年庚寅年。星期四是一個關鍵數據,我從西元28年查找到西元40年,確定沒有任何一年的那個滿月日還是星期四了。西元28年以前不查的原因,是耶穌不應該為夭壽,死得那麼早?
漢光武中興的歷史大家應該耳熟能詳吧?那個盛世的天文史官應該不會鬼混度日的,所以記錄可信。林誠謙的為人我長期多次當面領教過,他負責管理的國家電腦資料,當然也絕對可信。剩下的就是『聖經』記錄,有更多的人無條件深信。那麼,這樣的題目答案豈不明確?全世界西方的『差很多先生』與『差太多先生』,實在應該靠我們中國這些『差不多先生』的老祖先,幫您們確定很難搞定的日期:耶穌大概30歲左右(有人說還得加4年,我不想爭論),今人所定的日曆為西元30年陽曆4月7日死的(當時的古人還沒有現代的日曆可用),如果您們不相信,那麼只好否定『聖經』了。我若依朱柏盧先生建言,平心再想、忍耐三思,覺得還是不要得罪所有的基督徒較好,聖經也是對的,大家就可皆大歡喜,世界太平。
我的FORTH功力不如許多當今的好手,我所設計的ABC FORTH數學計算系統,在FORTH界也實在渺小,所以在討論上述問題時,不該以ABC FORTH佔用太多篇幅來影響真正主題的敘述,最後仍免不了要用計算程式來協助解決問題時,我的系統自然就能派上用場。
首先,我還是得藉用台灣中央氣象局的民眾服務網頁,取得2010年春分及後續第一個滿月日的精確時刻,以便純用物理方式推算問題的解答。我們也應該感謝中央氣象局的服務,在這一方面妥善的運用了人民的血汗錢,這個單位所建立的網頁服務,也值得嘉獎與鼓勵。2010年的春分時刻是陽曆3月21日01時32分,後續滿月日為陽曆3月30日10時25分。
接著,根據丁陳老師提供的日、月精確運轉數據,推算回西元30年的春分及後一滿月日精確時刻,該是現用日曆陽曆的那一天?計算時可以合理根據前文曾經介紹過的儒略曆來作為換算日期基準,所得結果再與上述結論比對是否相符?很不幸,完全不對,原因是現用西元陽曆日曆已被『差很多、差太多先生』搞得『差的更多了』。我還使用系統進行了許多大量多位數的直接程式計算,算得都很精確,也已於事無補,對照到人為建立的日曆,就顯示與事實絕對不符,差得實在太離譜了。程式與執行結果詳列如下:

: JULIAN-DATE ( DD MM YYY - - n )
>R
DUP 9 + 12 /
R@ + 7 * 4 / NEGATE
OVER 9 + 12 / NEGATE
R@ +
100 / 1 + 3 * 4 / -
SWAP 275 9 */
+ +
1721029 +
367 R> * +
;

: JD julian-date . ;

18 SIGDIGITS !

\ 以儒略曆為基準,計算所有春分及其後滿月之精確時刻,以日為單位。

\ 2010年春分精確時刻為3月21日01時32分,
\ 令其名稱為SE1(Spring equinox 1)。
\ 執行 21 3 2010 JD 得 2455277,而
\ (1*60+32) / 1440 = 0.063889 ,
\ 故此春分精確時刻為 2455277.063889。

: X1 {{ 365.256363 * ( 2010 - 30 ) }} ;
: X1. X1 G. ;

\ 計算1980年的總日數,令其名稱為X1,
\ 執行 X1. 得 723207.59874。

: DX1. {{ 2455277.063889 - 723207.59874 }} G. ;

\ 以 SE1 - X1 可得西元30年的精確春分時刻,
\ 如上式,執行DX1.可得為:1732069.465149。

\ 計算西元29年12月31日的儒略日數,
\ 執行 31 12 29 JD 得 1732017,
\ 1732069.465149 - 1732017 = 52.465149,
\ 西元30年的1月有31天,因此得春分日為2月21.465149日。
\ 正確日期為3月20日,差了27天左右,為何?
\ 我們硬要比對人為修改過後卻無稽可查的曆法,因此陷入誤謬循環。

\ 下列為另外一個不用儒略日數為根據的計算方式,
\ 最後只計算出西元30年春分到滿月日的日數差。

: X2 {{ ( 365.256363 * ( 2010 - 30 ) ) / 29.530689 }} ;
: X2. X2 F>D D. ;
\ 1980年的總月份數
\ X2. 24490

: X3 {{ ( 365.256363 * ( 2010 - 30 ) )
+ ( 30 - 21 ) + ( ( 625 - 92 ) / 1440 ) }} ;
: X3. X3 G. ;
\ 1980年外加春分後滿月的總日數
\ X3. 723216.968878888889

: X4 {{ ( ( 365.256363 * ( 2010 - 30 ) ) \ 日
+ ( 30 - 21 ) \ 時
+ ( ( 625 - 92 ) / 1440 ) ) \ 分
/ 29.530689 }} ;
: X4. X4 G. ;
\ 得總月份數
\ X4. 24490.3520157924148 say 24490合乎所求,不必加或減1補修正。
\ 經過上列計算得到結果後,才能代入下列計算。

: X5 {{ 29.530689 * 24490 }} ;
: X5. X5 G. ;
\ 總月份數的日數
\ X5. 723206.573610000000

\ X3 - X5 為西元30年春分到滿月的日數為 X6。

: X6 {{ 723216.968878888889 - 723206.573610000000 }} ;
: X6. X6 G. ;
\ X6. 10.3952688888890066 與中國農曆正確記錄的相差17日仍然不符。

\ 以除以每月日數後的餘數直接計算春分到滿月的日數為X7。
: X7 {{ 29.530689 * 0.3520157924148 }} ;
: X7. X7 G. ;
\ X7. 10.3952688888900178 驗證上列計算正確。

\ 直接依據儒略日計算西元30年春分離元旦的日數
: X8. {{ 2455277.063889 - ( 365.256363 * 1980 ) - 1732017 }} G. ;
\ 得 52.4651489999999967 驗證最前面的計算正確。

以設計程式來解這個問題時,因為程序只是從頭到尾的一次性計算結果,大費周章的寫一個大程式就完全沒有必要,反不如就如上列,寫簡短程式直接計算,然後逐步推演下去得到結果,ABC FORTH數學計算系統很適合執行這樣的工作,不但直接而且清楚,輸入數字的位數太多時,有程式就易於檢驗是否有任何錯誤,上列的記錄是用電腦黏貼方式複製過來的,我不用再為完成本文而重新核驗。
精確物理計算與事實相去如此之遠,令我失去了檢討彼此對應關係到底出在那裡的興趣,以上的程式,也只能告訴大家,進行此類計算時,ABC FORTH非常好用。數字用整數、帶小數點數、浮點數全部混在一起輸入時,這個系統都可以接受,計算式就是日常書寫的習慣式子。而輸入位數的限制就是正常FORTH系統的標準規格,整數莫大於10位數,帶小數點數莫大於20位數,浮點數就依FORTH系統原限制規格,此次計算這個天文數字問題,我也還未用到上限,有關FORTH技術的討論就到此為止,我仍應對天文曆法的知識進行解釋。
中國的農曆實際上是一個陰陽曆,憑著觀察太陽的陽象,將全年細分成24個節氣,再觀察月亮的陰象,自訂出一套月份的規則來製作曆書,但很難計算出固定周期,大家請不要嘗試找周期之事,絕對是浪費寶貴的時間。然而,以觀察太陽做依據,就等於年年進行修正,輔以簡單的月亮運行計算,一年內的日期規劃就不會有太大誤差,這是中國人的高明之處,全世界的曆法是中國人的最好。當然,事實也絕非如此簡單,中國歷史上幾乎每百年就又公佈一次曆書修正,以前的中國人比現在的人還謹慎。
春分精準時刻是可以固定的,因為是靠長期觀察天象而與時俱進的修正所得,不容懷疑,立一根精準的竿子,看日照竿頂後地面的影點就能確定,符合天文學上的科學觀察、記錄結果的科研要求。我住的這個都市有一個很有名,由多國捐贈經費而建的花園:Hamilton Garden,裡面有一個有趣的巨型日規,地面上以銅板標記日規的影點,非常精確,網文邊提供幾張相片供讀者參考,照片中清楚的標誌了每年春分的影點,中國古天文根據這麼簡單的方法,也能確定精確的春分時刻。

月亮的朔望變化在短至一年之內的計算,也可以認為是算得準的,長至幾年之後,單憑計算的誤差就會很大,因此,中國人就想出了一套固定的修正方法,例如:大小月、置閏月、定期再修正…等方法,維持曆法對農業活動的永久效用,規則也很簡單,只根據一年24節氣的所謂中氣落於何日?來對應出農曆月,它的仔細換算規矩,一般人並不容易搞得很清楚,我也無法使用這麼短的網文將其解釋清楚。
詳細的天文學基本學識,有一個以中文編寫為主的優良網頁足供參考,讀者可以參訪台灣成功大學物理系蘇漢宗、許瑞榮(抱歉,不知該有的尊稱頭銜)編著的天文學概論網頁,裡面有豐富的天文知識,可以解釋日月運行規則不一致的複雜現象,大家不要辜負這兩位先生公開著作的苦心,想了解天文,就請看這份不用花錢的網書,然後去信謝謝作者,我則刊登這篇網文誌謝。
中國農曆有一最重要的特點,我們的文化對這些不規則的變化,有清楚明確的歷史記錄,而且保留得還算完整,只要國家不被消滅,這些資料就越來越有價值。
南美馬雅文化所留下來的巨石標誌,依我淺見,事實上就是標誌了會與時俱變的月亮運行記錄,或者就稱它為基準月規,此後的月象則不停變動,石頭要巨大才不容易被破壞掉,記錄則要標誌月亮方位,還要記錄當時的年月日,供作此後再度觀察月亮運行時的基準參考點。太陽運行的標誌比較容易建立,日規的精確度就夠用幾千年。兩者之間的關係找出規則,就能建立很好的曆法,可惜馬雅文化被消滅了,他們的曆法記錄,只剩下那些後人看不懂的規則堆置巨石。
英國鄉下地方也有一堆怪石,只是規模不大,道理卻相同,並不是英國傳說中的自以為比別人高貴,所以外星人才到該處參訪,然後留下來的可疑標誌。那些英國鄉下人早就被消滅了,後來才會有一個硬用大姆指和臭腳丫當長度單位的帝王。
我們這裡的Hamilton Garden路邊入口處,最近幾年也由毛利人堆放了幾堆巨石,網文邊附了參考照片,我不知道這些石頭是否也具有上述的這種意義?否則,現代的起重機與大吊車,安放那幾塊大石頭又算得了什麼?如果缺乏了上述的意義,再過幾百年,這幾塊沒意義的大石頭就會令愛考古的人傷透腦筋,依我淺見,現在實在不必如此增建這種落後時代的東西,去增加後人的困擾。

同胞們,維持我們中國人的永續歷史非常重要,否則將來也會落得馬雅文化或英國鄉下人的下場,後代子孫的日曆就永遠也算不準了。如果全體中國人因此而必須寄望於中國大陸的強盛,那也無妨,但請中國大陸政府不要因為政治因素而亂改歷史,你們有很多書我實在讀不下去,看了肉麻,所有中國人民也應該堅定的站立起來,永遠監視政府的作為,不可亂來。
我自覺是一名非常幸運的學生,一生中不同階段的學習期間,都有良師或名師的指導,包括近幾日的學習,也與丁陳老師書信連繫且密切往返,由老師親自指導求解本文中的重點問題:耶穌到底是什麼時候死的?能夠自名師處如此獲益,可能是基於終身奉行不渝的尊師重道精神,學習態度在這一方面,應該斤斤計較到枝末細節的程度,這是中國人講求的絕對美德。所以,在本文中,讀者沒有見到純物理解題方式所得的合理結果,因為那是老師將在4月24日矽谷月會中正式公佈的答案,我尊師重道,不會在4月16日例行換貼網文時搶先發表,若需要發表我自己的程式,也只將安排在4月24日以後附貼網文,本文則提供更多的相關知識與認識。台灣將在4月17日舉行月會活動,大家還可以進行討論,有興趣的讀者請自行注意丁陳老師那邊所公佈的答案。
朱柏廬先生的治家格言告訴我們,讀書在窮理盡性,因此,在為學態度方面,我絕不會在求得真理前輕易妥協,本文的背面,仍有我自己以純物理解題方式,完成之較為合理的計算程式,將現代人所訂定,而一千多年前根本就不存在的日曆棄之不顧,算出西元30年附近,前後幾年,每年春分後的第一個滿月日應該是星期幾?程式可依輸入指定的年份,彈性顯示出一系列演算的結果,這個程式及執行後列印出來的答案,將在4月24日以前寄給老師指正,永遠尊師重道。
老師的英文很好,是虔誠的基督徒,窮理盡性的能力遠高於我,至今仍慎重其事的核查、比對猶太曆的文字歷史記錄,這樣的窮理致知做學問方式,超出了我使用英文的能力,也超出了我現行可以取得的資源範圍,能不尊師重道?
治家格言中言及:『與肩挑貿易,勿佔便宜』,『勿恃勢力而凌逼孤寡』,今天我們學會了一點點天文知識,千萬別因此而嘲笑我們自己更早以前的祖先,搞錯過曆法。今日大家豐富的知識,仍然來自於由錯到對的古聖先賢,您居溫室,祖先曾是肩挑,您有知識勢力,祖先曾是知識孤寡,您笑得起來嗎?
當您細讀古書,見到史實上竟然記載伏羲氏在位115年、神農式在位140年、黃帝軒轅氏在位100年、帝堯在位100年…等等之時,不要詫異,要細究原因。那些時候以前的日子,並不是環境未被污染,或他們身體更為健康,而人人可以活得更久,也絕對不是他們曾經服用過後來失傳,卻可以長命百歲的祖傳秘方,而是此前中國的曆法還沒有健全的建立起來,甚至於還缺乏觀日以建立日規這麼簡單的概念,因此,一次的晴空萬里配上一次的大風大雪,就可能當它又過了一年。您也可以合理的認為,人們根本沒有耐心,硬要等到這麼長的365天,才可當作過了一年,小孩能多領幾次壓歲錢(只是用來形容),豈不高興?所以年就多了。
當時,大多數自然科學方面的問題,都靠占卜算命的人來解釋,只有他們能不工作,靠算個命來糊口,閒來無事才觀天象以壯大算命本錢(領),增添論斷事物時的強烈天象依據,後來天皇氏時代演變出天干、地支的周期性計日技術,再進展到軒轅氏創文字作甲子,開始記錄觀日、觀月、做記號、比對後的所有結果,大禹治洪水時免不了要算一算,產生了一點點工程科學,相關技術再用到觀天象上,此後就有了比較合理的曆法,史實上也才不會再度出現在位百年以上的誤謬記載。您看!後來的三千多年歷史,他們記錄的多麼的好!比任何時代任何其他國家的記錄都好,他們是中國人。
無論有多精確的現代曆法,都只不過是人類自己的時間記錄,比起宇宙的生命就相當渺小了,人類文字歷史所需附帶的時間記錄,『差不多』式的算一算,還能解決我們有生之年的問題,但是要對最先進的科學進行研究,例如:人類始終都還有很多搞不清楚的宇宙天文現象,就非得精確的計算不可,我的ABC FORTH數學計算系統也不夠看,仍須努力,甚至於我們還需要研究出更深奧的新數學體系,才能妥善的解釋更高深的科學問題,為了強盛的中國,我們還能只是差不多先生嗎?

2014/5/31補述

當初刊出這篇網文時,文中列示的簡單數學計算即時操作方式,都是典型傳統的FORTH程式語言很基本的程式設計格式,這樣的程式展示顯示,其中,只不過是中算符的功能較為特出而已。

多年之後的今天,有幸能夠繼續回顧這些網文,自覺FORTH程式語言的性能,絕非只能做到這個地步而已。對初學者而言,上述這些材料,足以用來解釋初級的程式設計方式。對老手而言,則應該更上層樓,把系統設計得更為精簡扼要。

這種系統應用的方式,可以將其歸類成屬於『計算器功能』的程式。如果我已經建立了很好的中算符格式之程式設計方式,那麼,理所當然的,也能利用這種性能,設計出漂亮的計算器功能程式。

我花了幾天時間,逐步地改善設計,最後,完成了編號已是好幾代的計算器功能程式了。截至目前為止,我搞出了兩套比較有用的即時性操作方法:

第一套,僅由兩個指令iPad及uPad組成,它們的用法是輸入iPad後,螢幕上出現start now>>符號,然後,使用者可以完全不受限制的輸入許多列,原本屬於只能在冒號開始定義,及半冒號結束定義之間,才能書寫的程式。想計算什麼數學式子?隨便你寫。想知道計算結果?就得先下命令叫系統拓印出來。寫到不想寫了,可以隨時打住。緊接著,執行uPad指令,系統就會在先印出answer here>>後,繼續將處於iPad與uPad間的所有計算算完,並按照命令,印出所有的執行結果。

別人也能設計計算器功能的程式,甚至於讓您在網上執行,開一個小視窗,弄幾個空格,讓您填數字,選運算符號,點選執行按鈕式方塊,然後得到結果。

我設計的東西完全不同,一口氣就能容納你想算的所有數學計算式子,一口氣就能得到所有的計算結果。只要系統在自己手中,能夠這樣子使用,就叫作執行『實體運算』不去『雲端』。在戰場上即時應用,就絕對可以確保,沒有人能夠劫走任何重要運算數據。

我使用iPad當指令,是告訴FORTH系統,現在由我(i)把東西放進拍紙簿(Pad)區。再用uPad當指令,是告訴FORTH系統,該你(u)表現了,把拍紙簿區的玩意兒,全算乾淨,告訴我結果。

實現這樣的程式設計前,我列出了幾項先決條件,然後才進行設計,條件如下:

(1)這樣的使用,沒有冒號,也沒有半冒號。
(2)式子列錯了,系統也得照顧好,可以給出錯誤訊息,但是絕對不能當機。
(3)還有,算玩之後,不能浪費記憶體,一切都得省著用,我是FORTH的主人,見不得亂。
(4)沒人想用這些功能時,FORTH還是完完整整的原裝FORTH;用完這些功能時,FORTH也還是完完整整的原裝FORTH,絕無絲毫改變。
(5)如果程式需要寫好幾頁程式,才能設計得出上述功能時,我就不設計了,我添加的功能,不到十列程式。

我設計程式的個性,一向如此,這裡面有著相當尊重古聖先賢的意味存在。

實例最能說明一切,列示一次試用之簡單操作如下:

iPad
Start Here>>
[[ ( 108 - 32 ) * 5 / 9 ]] cr ." F to C = " .
{{ ( atan ( ( 8 * sin ( 30 * fpi / 180 ) ) / ( 10 + 8 * cos ( 30 * fpi / 180 ) ) ) ) * 180 / fpi }} 
cr ." Degree = " f.
{[ ( -1 + 2 i ) * ( ( 7 - 5 i ) + ( -3 + 4 i ) ) ]} cr ." Result = " z.
/{{ ( -3 3 8 ) / ( 2 7 11 ) }}/ cr ." Fraction = " /3./
uPad
Getting Answer>>
F to C = 42
Degree = 13.2947
Result = -2.00000 + 9.00000 i
Fraction = -1 & ( 65 / 232 )  ok

上列計算式子,均是ABC FORTH系統可以執行出來的程式格式,最後一列是分數系統的表示式,以前未曾介紹過,此處為初次展示。而且,我仍想繼續發展出更多的獨立系統,如:2維向量演算、3維向量演算、雙整數演算、倍精度浮點數演算等等。我已自行研發出一套發展這些系統的固定程序,讓各個演算系統都成為一個自行獨立的子系統,也能與其他子系統溝通並用,各個子系統有些已經完成了,有些還在努力,可能一輩子也搞不完。

後來,我嫌iPad配uPad的用法仍然麻煩,所列的式子,仍然需要使用各種括號來區分,於是,又發展出第二套計算器使用格式。

此處直接列示程式寫法,同時列出執行結果,讀者就能直接明白其中意義。
指令尾綴Exp者,是表示此後便可輸入數學表示式(Expression)的意思。指令尾綴Ans者,是表示系統可以立即告訴使用者答案(Answer)的意思。

IExp
( 108 - 32 ) * 5 / 9
IAns 42  ok

RExp
( atan ( ( 8 * sin ( 30 * fpi / 180 ) ) / ( 10 + 8 * cos ( 30 * fpi / 180 ) ) ) ) * 180 / fpi
RAns 13.2947  ok

ZExp
( -1 + 2 i ) * ( ( 7 - 5 i ) + ( -3 + 4 i ) )
ZAns -2.00000 + 9.00000 i   ok

/Exp/
( -3 3 8 ) / ( 2 7 11 )
/Ans/ -1 & ( 65 / 232 )  ok

停止撰文於這個網頁之事後,我有了更多的時間來試用並改善自己的設計,系統便有了很好的進展,一方面是精進了內容,另方面則是發展出許多新特色。

我已不想再搞推廣之事,補刊的內容若有創意,就當它也是廣告宣傳,有心的人想跟就請跟,沒人想跟,我也不會覺得遺憾。

我稱自己在發展系統,但絕不是發展那種非常初步的殘障FORTH基底系統,是能繼續從健全的FORTH基底系統發展出更上一層樓之數學計算系統。

我對目前全世界網上到處可見,亂抄亂貼別人已經公開殘破不全之源程式,亂建殘障式的FORTH系統之事,毫無興趣。也已見到許多對FORTH哲理根本就毫無基本觀念的人,網上自吹自擂,號稱建成了自己的FORTH系統,還亂貼抄來的塗鴉碼,誤導群眾,意圖浪得虛名。引誘新來的無知者,浪費生命,跟做無意義的事情。而且,為時已久,令人見了深感痛心。


散佈殘障系統,是污染世界,噴雞規(講大話)誤導群眾,是罪大惡極,這些沒道德的事情不該做。正人君子做事,必等系統已努力發展到不殘障時才釋出,並為後續發展負責。正人君子發言,講話八分滿,不做害死別人的語言罪犯。我搞FORTH,至少也該知道這些做事與發言的基本原則,不要害人。台灣FORTH環境的世風,早已江河日下,所以,我也不想再搞推廣之事,別人要使壞,不關我事。

其實,我的主要創作,是在許多已經完成的大型計算應用程式之中,但沒有必要刊出這些成果。我不是老師,也不想給自己添加那些為了要詳細解說問題,卻帶來了必須寫成通順文章的麻煩,自己解決得了問題才最重要。

長期如此操作網文,可以想像,必能過濾掉沒有耐性與意識形態相左的讀者,想法有點怪異卻正合我意。時間還早,我願意貼文的歷史才6年而已,來日方長,不是嗎?

電腦主要的功能之一,就是可以快速的執行出數學計算。想讓電腦能夠方便的應用於數學計算,則需要人來設計,它無法自理。因此,這個領域的發展是無限的。


50年後,我必早已作古,FORTH系統則很容易讓這些特色永存於世。

沒有留言: