數字的奧妙

石頭成發表了〈數字感之數不過三〉,他認為就人的心理而言,人的本能,只能分辨「1,2,3」這三個數。並從心理學上說明了中文賦予一、二、三等數的意義:一單、二雙、三眾。他提到就本能而言,三以上的數目在分辨時就不準確了,他並引述了老子《道德經》第四十二章中的句子:「一生二,二生三,三生萬物」,指出三常用來表示數量眾多的概念。

最後,石頭成還提到了,九為無限、無窮。十為全。全和無窮的差別在於無限、無窮具有延伸、延續的意義。九是無窮大「∞」,但 ∞ < ∞ + 1,亦即永遠有一個數比 ∞ 更大。「全」則是一個沒有任何數比它更大的最大數。 看了石頭成對數字感的看法之後,同人倒想從《易經》的觀點,分享我的看法。不過,對《易經》未接觸的人,有些內容可能會稍為艱深,當然,我會儘量用淺顯的文字來做說明,不過,有些地方可能還是很難用三言兩語說清楚,所以就請各位自行酙酌嘍。

個人認為,數字的意義其實在於分類上的概念,分類的目的是為了讓我們理解及掌握事物的變化。《易經.繫辭上》有言:「易有太極,是生兩儀,兩儀生四象,四象生八卦,八卦定吉凶,吉凶生大業」,正說明在《易經》的觀念中,數字是從概念上不斷地推衍之演繹與歸納的過程所產生出來的,易經用數字代表了各種抽象概念,並與理象互證,以求宇宙運行的法則。

易經中的八卦正代表了八種不同的抽象概念,可應用在不同的人、事、物上面,以詮釋千變萬化的人事變化。所以,老子說:”三生萬物”,以二進位數字的觀念來看,二的三次方為八,與易經的八種抽象概念其實是相通的。然而,這八種抽象概念是如何推演而來的呢,其實推衍過程並不複雜,是古人觀察大自然變化並以陰陽原則分化及統合而成。同人在此簡述如下:

  1. 太極

    事物整體的概念,未分陰與陽的狀態。

  2. 兩儀

    把事物分成陰陽兩種概念,亦即以陽代表抽象的事物,以陰代表具體的事物。

  3. 四象

    兩儀為事物的陰陽內在性質,本體可再區分為陰陽象徵外在形態,成為老陽(陽上之陽,無形無質)、少陰(陽上之陰,有形無質)、少陽(陰上之陽,有質無形)及老陰(陰上之陰,有形有質)。

  4. 八卦

    四象為事物之形體及性質,依此形質可再區分為陰陽象徵事物所給予人們的不同感受,成為乾為天(抽象之無形無質的事物)、兌為澤(具體之無形無質之事物)、離為火(抽象之有形無質之事物)、震為雷(具體之有形無質之事物)、巽為風(抽象之有質無形之事物)、坎為水(具體之有質無形之事物)、艮為山(抽象之有形有質之事物)、坤為地(具體之有形有質之事物)

以上的分類方式,相信以數學二進制的觀念並不難理解,但易經中的數字奧妙不止於此。「河出圖,洛出書,聖人則之」(《易經.繫辭上》),河圖洛書相傳為《易經》之源。河圖之數為「天一生水,地六成之。地二生火,天七成之。天三生木,地八成之。地四生金,天九成之。天五生土,地十成之。」(宋.朱熹,《易學啟蒙》),一至五為生數,六至十則為成數。其圖形如下所示。
閱讀全文 →

分類: 易經思維, 生活感觸, 閱讀 | 1 則留言

永續物件查詢之設計(其一)

要有效率地處理資訊系統的資料存取,應用系統的實作通常都會需要整合關聯式資料庫。因此,在應用系統之軟體的設計方面,除了業務上的程式邏輯上,也必須考量在系統面上與資料庫技術的整合。而在實務上,為了讓設計儘量簡單及單純,避免業務面需求與系統面技術對軟體功能與品質產生複雜的交互作用。一般而言,會讓業務邏輯的抽象概念與資料庫的實作分隔開來。如此,永續層的抽象概念便應運而生,下圖便是基於此設計想法,所發展出來的設計架構。

persistent.PNG

這個設計架構將應用系統分成四個邏輯概念層,包括服務層(ServiceLayer)、業務層(BusinessLayer)、永續層(PersistentLayer)及永續框架(PersistentFramework)。服務層負責接受外界呼叫者的呼叫要求,業務層則負責依據業務邏輯來處理外界的呼叫需求,而永續層則負責處理將物件儲存至永久儲存媒體(通常為資料庫),並呼叫永續框架達成資料存取的功能。

這樣利用分層負責的概念,讓軟體開發的工作變得簡潔而有效率。不過,在設計上要特別注意,對於 BizDataAccessor 界面而言,其 method 簽章不可以與所使用的永續框架產生相依性,否則就沒辦法達到設計概念與實作細節分開的理想。

例如,使用 Hibernate 的永續框架,BizDataAccessor 的 method 中,就不應該用 Hibernate 的 Session 或 Criteria 來當做參數或傳回值。否則,一旦改用其它的永續框架,BizServiceImpl 將會受到影響而必須改寫,而破壞設計的良好結構。

換句話說,BizDataAccessor 之 method 參數與傳回值型態,應該不能參照到永續框架所特有的類別,像 Hibernate 的物件查詢語言(HQL)或條件式查詢(Criteria)都是不能使用的。

然而,實務上,BizDataAccessor 的呼叫者卻很可能需要用一致的表示方式來代表各種不同查詢條件。舉一個最簡單的例子來說,使用者可能希望在前端勾選不同的欄位來組成查詢條件,系統就能依他所選擇的條件查出符合查詢條件的資料。但要設計出能滿足此需求的功能,在 BizDataAccessorImpl 的實作上將會面臨到兩大難題。

首先,如前所述,Hibernate 現成的 HQL 或 Criteria 不能直接使用;其次,就算可以直接使用它們,對於使用者未勾選的欄位,組成如 ”where selected_attribute = checkValue and not_selected_attribute = null”的條件表示式應該是有問題的,應該組成的條件式理應像”where selected_attribute = checkValue”才對,但不管用 HQL 或 Criteria 都無法直接做到這個功能。

所以,典型的做法會變成把組成條件式語法的邏輯,變成 BizDataAccessorImpl 中的一連串的 if 敍述中,這種做法相當的 dirty 且 ugly,而且條件邏輯一旦變複雜,還很容易出錯,那怎麼呢?同人願意在此分享我在實務上的設計及實作心得,供大家參考。
閱讀全文 →

分類: 分析設計建模, 編程技巧, 設計原則, 軟體開發 | 7 則留言

程式碼的結構、迴圈與處理

軟體設計是一種求取均衡的取捨,而取捨的關鍵視軟體欲解決的問題而定。正如同人在《軟體開發是工藝還是工程》中所提到的,軟體開發的本體並不在工藝,也不在工程,而是一種問題解決的過程。依此觀點來開發軟體,我們一開始會用最簡單且直覺的編程方式把軟體的功能做出來,然後再隨著需求的改變,逐步演進程式碼及設計架構。用複雜性及複雜適應性系統的概念,找到混沌邊緣,組織系統讓複雜行為自然形成卻不致混亂而導致失控,如此演化所產生的系統將具備穩定與彈性。

這種問題解決的過程,如同「庖丁解牛」一般,循著問題脈絡而予以支解,而不是用蠻力大刀亂砍。然而,軟體開發要解決的問題畢竟不如解牛那般顯而易見。一開始,我們根本不知道邊緣在那裡,等到我們跨越了邊緣,到達了極度混亂的混沌時,問題又難以掌控了。所以,在軟體開發的過程當中,我們必須能夠察覺邊緣所在,運用測試先行的實務,我們可以讓程式聚焦於欲解決的問題上,不致發生程式碼發生過度混亂而導致無法掌控的情況。

一旦需求不斷增加,在現有設計無法負荷軟體需求變動時,可以透過程式碼重構來增加空間以容納新功能。重構並不是增加新功能,而是在不改變功能的情形下改變其程式結構,測試程式在此扮演不致使修改結構造成對程式功能的影響之角色,而能保持程式碼的結構不致因紊亂而變壞。
閱讀全文 →

分類: 編程技巧, 設計原則, 軟體開發 | 發佈留言

念頭、信念與實相

昨天去找整骨師,處理壓力所產生的上背部酸痛的問題。我這位整骨師朋友,早年與中華新時代協會有一些淵源,對賽斯資料的內容相當熟悉。昨天與他在閒聊過程中,也藉機會問問他對我的朋友讀《奇蹟課程》卻發現產生與對賽斯思想的疑惑之看法。

我把大致狀況跟他說明後,他告訴我,我的朋友的疑惑應該是因為文字上解讀的問題。對新時代而言,「我創造我自己的實相」是最基本的概念,應該是不會有衝突的,他建議不妨先從若水所寫的導讀開始入門會比較容易些。

我告訴他我的看法:”我們以為我們有所缺,而向外要求填補缺憾而對真理扭曲而造成投射,其實並無法創造出真實的我”。整骨師朋友認同這種的看法,他說:”可以這麼說”。

我進一步的提出另一位網友的解釋,也就是創造實相的是個人的信念,自己的想法是念頭,所以無法創造實相。整骨師朋友卻告訴我說,有些念頭也會展現出相當大的力量,他舉了一個例子。
閱讀全文 →

分類: 新時代, 生活感觸, 閱讀 | 4 則留言

流程與交易的整合(其一)

企業或產業價值鍊的整合,常常會牽涉跨部門、跨組織的資訊系統。在價值鍊活動過程中所發生的交易,需要與價值鍊其它活動相互整合,因此會經歷較長的處理過程,一般稱為長時間交易。這種交易避免鎖定非本地端資源、使用補償作業來處理交易失敗、潛在地聚合較小而具有 ACID 特性的交易、通常利用一個協調器來完成或放棄交易Long-running transaction. (2007, May 20). In Wikipedia, The Free Encyclopedia. Retrieved 02:50, July 24, 2007.。

長時間交易有複雜的處理過程,當交易因故無法完成時,無法以 rollback 的方式,回復異動前的資料狀態,而是必須對此筆交易執行補償作業。例如,如果有人向銀行發送一筆付款指示,付款銀行在扣帳後,卻收到了受款帳號發送了無法入帳的通知,付款銀行就必須執行退款的補償作業以還原付款帳號在交易前之狀態,故長時間的交易亦常被稱做補償式交易。

換言之,長時間交易並不屬於不可分割的交易。在交易過程中,必須根據交易的處理狀態來決定後續的作業,這些作業可能是一組流程或是具有 ACID 特性的交易(這類交易才具有不可分割的特性)。

由上可知,欲解決長時間交易的處理問題,交易的處理狀態將變成很重要的概念。有了處理狀態的概念,長時間交易的設計就變得簡單多了,讓交易過程是非同步的,並非讓使用者枯等交易結果卻不能做別的事,而是當使用者發送交易之後,使用者不須等待交易處理完畢,系統會默默處理此交易,而隨後可由使用者查詢交易處理的進度,或是在交易完成後,由系統發送通知給使用者。
閱讀全文 →

分類: 分析設計建模, 設計原則, 軟體開發 | 2 則留言

矛盾與執著

朋友看了我寫的〈創造與投射〉,她也寫了一篇感想,引起了其他網友熱烈討論,當然,同人也參與了討論。其中 nier 對同人提到”意識心是善於偽裝的傢伙,很容易被它給騙了”有不同的看法。他提到在他的看法裡,沒有小我大我之分,意識與無意識與潛意識都是ㄧ體。既然是ㄧ體又何來騙局呢?

對 nier 這個看法,同人認為容易使人產生迷惑,於是我做了如下的回應:

這樣說似乎指因為是一體,所以根本沒有會有人被騙,所以騙局不會發生,是嗎?

然而,事實上,我們的生活卻不是這樣,我們好像常常被我們自己的意識心所騙,否則,世界上怎麼會充滿了不安與矛盾,使我們心為之所苦呢。

太執著於一體是斷見的迷惘呀,中道是不落有無的,否則,那是高調而是無法落實在實際生活的。

所以同人認為:一體者,即非一體;是名一體。

後來 nier 針對他所謂的一體提出解釋,他提出:

在我的看法裡從來沒有騙局,意識心從來沒騙過我,…(它既是我的一部分,為什麼我不接受它?而要否定它呢?)。

看了他的回應,同人發現 nier 把矛盾與執著混為一談了,也就是說,把認知意識心偽裝自己來主導騙局等同於否定意識心。我認為這種看法把問題過於簡化了,本來想直接回應 nier,但把我的想法打好要上傳時,系統卻回應權限有問題,可能是 session timeout 了吧。我想,這或許代表了在網誌中發表回應會比較恰當吧。
閱讀全文 →

分類: 新時代, 生活感觸 | 1 則留言

Time-Boxing 於軟體反覆演進的必要性

石頭成認為我先前對反覆週期的看法,其評論重點在於”以為「反覆週期要很短」的實踐方式,將會造成程序員為趕進度而破壞工作紀律”。石頭成對此指出,敏捷方法對程式紀律的要求其實非常高,並且強調在使用者「貼身防守」的情況下,開發紀律豈能不好。

換言之,石頭成的觀點認為關鍵在於使用者參與,只要使用者積極參與,開發者的程式「紀律」必定會好。同人認同石頭成所說的,在軟體開發過程中,使用者參與是非常重要的一件事。但卻想提醒:過於強調使用者參與而忽略開發者與使用者之間的彼此承諾,卻是足以讓整個軟體開發的活動,陷入失序,甚至造成無止盡地混亂現象,使得開發團隊無法掌控,因為他們缺乏控制混沌的紀律。

控制混沌,所仰賴的紀律並非石頭成所言的程式紀律,而是 Time-Boxing 的制衡與緩衝手法。因此,Time-Boxing 的做法在反覆式開發的過程中是不可或缺之器。雖然,誠如石頭成所強調,在強調使用者參與的開發方法中,將溝通與開發兩者分開是很奇怪的一件事,但其實 Time-Boxing 的概念,並不意味將溝通與開發分開來看。相反地,而是讓我們更有能力去調適並滿足使用者需求,而不是窮於應付使用者目前不清楚或無法確定之需求。正因為如此,Time-Boxing 與調適性規劃(adaptive planning)正是反覆演進式開發最基本的兩大實務呀。
閱讀全文 →

分類: 專案監控, 專案管理, 專案規劃, 專案風險, 溝通, 管理, 軟體開發, 開發流程 | 2 則留言

創造與投射

朋友對《奇蹟課程》之「正文」的內容發生疑惑,想與我交換看法。她覺得在〈分裂與救贖〉那一章中提到分裂之始中的文字,和她閱讀塞斯及歐林的概念有很大的落差。然而,那一段文字我之前並未看過,於是在仔細閱讀之後,和他進行了一場創造與投射的討論。

正如我所猜想,朋友對投射扭曲的過程包括了「相信自己創造取向操之在己」而感到困惑。新時代的概念不是正強調自己是自己命運創造者-你創造你自己的實相,而《奇蹟課程》卻又告訴我們,相信自己可以創造自己是一種扭曲,是一種投射,我們所熟知的新時代的世界觀難道是虛幻不實的一場夢?而如果這一切都不存在,所有事都不具任何意義,那麼正念又有何意義呢?

對於朋友的質疑,我建議朋友,先暫時不要思考人生意義的問題,因為這問題很大且容易流於主觀認定;況且,我們所使用的語言文字本身有很大的限制,有些時候,很難精確地表達事情的真正涵義。所以,不用太拘泥字面上的意義,以免不小心落入文字的迷霧當中。

我告訴朋友,自己無法創造自己本來就是一種困境,包括所謂的神或一切萬有都無法突破此限制,所以他創造了萬物藉著萬物來體驗全我的存在。同樣的道理,身為萬物的一份子,我們稟承了神的推恩之力,創造的不是我,而是我的實相,我們都是完美的受造物,因此,我們所創造的實相是為了實現我們所相信的事物。當我們相信完美,我們就能體驗到完美;相信自己有所缺憾,我們就會體驗缺憾。但無論如何,真實存在的我本來就存在,是不會受到扭曲真理的投射所威脅到的。
閱讀全文 →

分類: 新時代, 生活感觸, 閱讀 | 3 則留言

星體神話筆記

根據地球歲差的科學現象,可知占星學的歷史至少二千年以上,所以占星學是一門古老的學問。而年代久遠,能被流傳下來的事物,絕對是需要去蕪存菁,能經得起歷史考驗的好東西。歷史的產生需要文字的記載及時間的流轉,早期沒有文字的記載,於是先民只有利用詩歌及神話故事的產生,藉著口口相傳,能將老祖先的智慧承傳下來。因此神話故事的意義,象徵先民的文化,我們可以藉由神話故事的意義,了解各星體的原始意義,甚至可以衍生更多豐富的意象。
閱讀全文 →

分類: 占星, 生活感觸, 閱讀 | 發佈留言

孩子的優質世界

前幾天,從廣播中的 call in 聽到一個故事,是一位爸爸在訴說他對小孩的思念之情。他與前妻協議離婚,然而兒子扶養權歸媽媽,但爸爸有探視的權利。可是事後媽媽卻一直阻撓,似乎對爸爸懷著忿恨的心理,阻止他對小孩表達關愛之情,媽媽甚至還告訴兒子說:你爸爸已經死了。

這個故事,讓同人心中產生了相當深的感觸,孩子的童年常會成為大人爭鬥下的祭品。或許站在大人個自立場來看,陷入爭吵的雙方都認為自己沒有錯:這件事很重要,我必須堅持,對方為什麼不懂得體諒與配合呢?然而,爭鬥的結果,或許表面上雙方都不願輸,但在小孩的世界當中,父母的不合,卻讓他感受到家庭不再完整,讓他無法快樂成長,輸掉的卻是他的童年。

換言之,讓小孩有一個完整的家庭,這個需求和大人的個人需求比較起來,優先順序比較低,所以自然會先被犧牲,而結果就變成孩子必須被迫改變他的優質世界的圖像。看到小孩的這種境遇,怎不令人感到心疼呢?
閱讀全文 →

分類: 心理, 生活感觸, 親子關係 | 1 則留言