2014年12月30日星期二

DATABASE七日鮮 - OaccPFA2014 建構全記錄 <第二十日/超時第十三日>


今天還是忍不住弄了三個 Matrix Report,分別是 Account Movements,Cash Flow,及 Expenses Analysis。三個 Matrix Report 所覆蓋的期間都是最近十二個月內的資料。

Matrix Report 不難弄,基本上三個 Query 就可以了。首先,一個是用來作 Row Heading 的資料來源,另一個則是 Column Heading (Time) 及 Value 用;最後一個就是把前兩個 Query 整合在一起的 Crosstab Query。



設計好 Query 後,就是設計 Report 的時候。如果你想 Report 可以分組計 Sub-Total,就必須先在 Row Heading 的 Query 中設計好。為什麼不直接用 Table?因為用 Query 的自由度更大,只要個 Logic 無錯或不出現"笛卡兒積 (Cartesian Product)",你可以串聯 Database 內所有的資料。


當你設計好第一個 Matrix Report 後,你就可以用 Copy & Paste 神功去創造更多不同的 Matrix Report 以符合要求。你所要做的只是更改 Query 的 結構及 Report 的 Data Source,Group 及 Sorting 就可以了。


2014年12月27日星期六

DATABASE七日鮮 - OaccPFA2014 建構全記錄 <第十九日/超時第十二日>


聖誕節的歡樂氣氛,使我的懶蟲症大發,一停就是七天。。。今天終於總算走出假日心情。

完成了 Deal Closing (Matching) 的 Printout,修改了一些 Queries。如無意外,明天應該是 User Login Controls,之後整個 Accounting DB 就算是完成了。

是時候計劃一下2015 新 Project。。。


2014年12月20日星期六

DATABASE七日鮮 - OaccPFA2014 建構全記錄 <第十八日/超時第十一日>


今天完成了 Statement of Financial Position,其中最大的挑戰在於如何計算出Retained Profit。為了要得到 Retained Profit,必須要先求出 Opening Stock 及 Closing Stock。計算 Closing Stock 比較容易,但 Opening Stock 則比較困難。

我的方法是不依靠 VBA,而是透過三四層 Query 去求出不同時間值,每一項 Investment (Stock) 的餘數,再乘以相對應的市價。我以前初初學 Access,老是希望一條 Query 可以應付多種需求,但這是一種很錯的態度。我們應該將 Query 想像成一個一個的小齒輪,他們功能單一,容易複製,也可以放到不同環境中使用。這種概念要盡早深植腦中。

以下是 Statement of Financial Position 的部份 Query:

1.) 這是處理 Assets 及 Liabilities 但不包括 Investment (Stock) 的 Query  


2.) 這是處理 Equities 的 Query  


3.) 以下三個 Query 是用來找出最新 Market Price 




4.) 這是用來找出每項 Investment (Stock) 餘數的 Query


5.) 這是用總計每項 Investment (Stock) 市值的 Query



在某程度上來說,如果你可以掌握到如何計算 Stock 的餘數, 價值, 與總計, 那你距離自家制作一個基本 ERP 已經不遠了。

現在只剩下 Deal Matching 的 Printout 是比較複製,應該很快可以完成的了。。。


2014年12月18日星期四

DATABASE七日鮮 - OaccPFA2014 建構全記錄 <第十七日/超時第十日>


今天沒有懶,好努力的從下班奮戰到剛才。每一次從這種忘我的感覺中清醒過來後,我越加相信寫程式是會上癮的。要不是明天還要上班,我想我會繼續的。。。

奮戰的結果是,完成了 Income Statement,而且把正負數也匡正了。除此之外,也把 Dashboard 的 Formula 也修改了,而使到所呈現資料的時間長度為三十一日。

另一方面,Statement of Financial Position 也已經大致完成,就只差將 Profit 細分為 Retained 及 Current 兩種。而這個部份,如果懶蟲不發作,應該今天可以弄好。

下一步就是要弄出 Deal Matching Note 的 Print Out。



2014年12月16日星期二

DATABASE七日鮮 - OaccPFA2014 建構全記錄 <第十六日/超時第九日>


不知有沒有杜蟲藥是針對懶蟲的呢?

今天完成了Cash Flow Statement。現在系統內有了兩款不同的 CFS,一款(上圖左側)是可以自由選擇要覆蓋的日期,另一款(上圖右側)是包括由 Date One 開始所有的 Activities。

有時間性那一款 CFS,包含了 Cash and Bank 的 Opening 及 Closing。為了肯定系統沒有計錯數,所以我比較了 Balance Sheet 的數值 (下圖紅方格內的數值),很安慰地,系統是沒有計錯的。當然啦,電腦又怎會計錯數,要肯定的是我所設計的資料結構無錯而已。:-)

到了這一刻,我心知應該盡快完成 FRS,但我又開始想另一些功能。。。例如 Budgeting,和 Matrix Reports。。。心野但又懶!



2014年12月14日星期日

DATABASE七日鮮 - OaccPFA2014 建構全記錄 <第十五日/超時第八日>


不知不覺已經進入了 User Control 的階段第二天。今天終於將 Voucher Printing 的功能實作出來,就是上圖在 Voucher Editor 背後那兩張 Form 。

很多初初使用 Microsoft Access 的朋友都有一個錯覺,以為要打印資料就一定要用 Report,其實不是的。我個人認為在 Accounting DB 來說,如果不需要用到 Running Balance,就不定用 Report。另外,如果是表格類的打印資料,例如 Voucher,就更加不應該考慮使用 Report 來實作。當然,這些都是我自己的經驗之談,只要你可以做出你想要的東西就好。一如已故的鄧伯伯所說:

"不管黑貓白貓,捉到老鼠就是好貓。"

在上圖看不到的是,在這兩張 Printouts 的底部,是會把總數轉換成文字(英文)格式,相關的程式碼我會在 Fine Tuning 階段完完整整的給大家參考。這不是我大方,而是這段程式碼並不是我的創作,而是一位熱心的英國網友分享出來的,我只是略作修改以符合自己的需求而已。

除了上述的東西,今天也修改了幾個 Form 的設計,加了選擇記錄的 Combo Box,在某些 Text Box 加入了 Double Click Event,和其他的小修小補。

User Control 階段還剩下 Financial Statements 及 Cash Flow Statement 的最後 Printout 版本,Matching 的 Printing 功能,和其他可以提升 User Experience 的小修改。

今天就這樣了,希望明天懶蟲不要發作。。。







2014年12月13日星期六

DATABASE七日鮮 - OaccPFA2014 建構全記錄 <第十四日/超時第七日>



又拖沓了兩天。。。

今日終於完成這扭計骰及其相關的所有 Reports,八種不同的分類,應該都可以 cover 一個現代城市人的生活習慣,它們分別是 Fashion, Quarters, Dining, Transportation, Vacation, Education, Health Cards, 及 Entertainment。

本來想以單一個 Report 配合 VBA 去 Generat Results,但是想想可能使用者會嘗試一次開幾個不同 Categories 的 Report,於是我又土炮一點的辦法。。。就是做八個不同的 Reports 出來,加上在 Query 那鎖定 Certiria,那使用者就可以隨心所欲地開多個來檢視自己的消費習慣。

下一步弄什麼呢?完善 Voucher Editor 的 Functions 而其中最要緊的就是 Voucher Printing。話說當年驅使我設計Accounting DB 原因,就是我手上的 MXOB,竟然不可以將輸入好的 Voucher 打印出來。。。我不明白為什麼要這樣限制。。。

下圖是我在 FB Page 的 Cover Picture,是不是很漂亮呢?嘻嘻。。。



2014年12月10日星期三

DATABASE七日鮮 - OaccPFA2014 建構全記錄 <第十三日/超時第六日>


好懶。。。拖了兩天才願意再繼續。。。

今天最主要的改進就是在 Portal 上一系列的按鈕,這些按鈕是用來開啟不同的 Form。在最右手邊那些是有關資料設定的,例如 Contacts, Accounts, Cash Flow Type 及 Voucher Type 等。除了按鈕之外,我亦略為收縮了 Portal 的大小,令整個佈局更加緊緻。

中間下方的則是資料輸入及報表等,如 Voucher,Matching , Market Price Update, Quick Statistic, Quick Financial Position 及 Printing Manager 等。

其實還有很多 Form 我沒有加在 Portal 上,而是隱藏在不同有關聯的 Form 之中。

明天繼續。。。

2014年12月6日星期六

DATABASE七日鮮 - OaccPFA2014 建構全記錄 <第十二日/超時第五日>


今天花了五個小時,就為了弄出一個 Dashboard,就是上圖那個啦。為何要弄這個?因為人是懶惰的嘛,沒有人喜歡要按左按右才看到一些基本的東西的。這個 Dashboard 分為五部份,現在可以看到的只有其中的三部份。

左手邊是 Investment Items 及其市值,中間那個大圓餅則是提供一個圖像化的每種不同類型 Investment 的分佈比例。

右手邊上部份是 30 日內的 Cash Flow Summary。而中至下部則是 30 日內的 Income Statement。今次的 Income Statement 比早昨天那個有幾點不同。第一,這次是有時間性的,上篇那個則沒有; 第二,匡正了正負數的安排,使得其更加直觀; 第三,既然有時間性,那就要實作出 Opening Stock 及 Closing Stock。

這個 Dashboard 除了作為演示用途外,還將會是這個 Project 的 Portal 之用。希望完成後不會給人太混亂的感覺。

一個人弄這些是很累的,而一累人就會出錯。我知道有些地方我是貪方便走了捷徑,而未有堅守自己設想的完則。唉,更大問題是我真的很不喜歡寫筆記。。。到 Fine Tuning 階段時,這些的缺憾與失責,一定會使我非常頭大。

還有,我真的好想有部 Microsoft 的 Surface Pro 3 來實機測試。My dear Mr. Bill Gates, can you hear me??? 哈哈!!

睡覺發夢去。。。。


2014年12月3日星期三

DATABASE七日鮮 - OaccPFA2014 建構全記錄 <第十一日/超時第四日>



終於都到了這次旅程的一半。哈哈,真的,需然好像一個 Accounting Database 要有的都已經有了,但我可憑自己的小小經驗跟你說,User Interfaces 才是真要命的地方。

這篇的兩張圖,都是基於同一套 Datasets,而這個 Datasets 就是依從上一篇所列的公式。上圖是以 Form 來表達 Balance Sheet & Income Statement, 而下圖則是用 Report。因為時間關係,我並未完完全全的跟隨一般慣常的排法,當然要跟足是可以的,在 Fine Tuning 階段我便會實作出來。

其實,寫 Database 並不是很難,不過坊間很多書都把簡單事情複雜化。我以往也曾花了不少時間在書海中尋找出路。但原來,自己落手落腳弄一個出來,得到的經驗,是書本永遠給不了你的。

歡樂嘅時間過得特別快,又係時間講 Bye Bye。周公急 Call 我了,請呀!!!



2014年11月30日星期日

DATABASE七日鮮 - OaccPFA2014 建構全記錄 <第十日/超時第三日>


上圖的四個 Query 就是 Financial Position Statement 及 Income Statement 的 Datasets. 如果你有基本的 Accounting 底子, 應該可以四個表所對應的不同部份. 雖然看上去一切準備就緒, 但其實還欠缺了一項至關重要的資料, 就是 Stock .

如何評價 Stock 一直是 Accounting 的藝術範圍, 以前我們不是用 FIFO 就是 LIFO, 而且是用 At Cost 來計算 (當然除了藝術中的藝術 - W.I.P.). 近年 IFRS 大力推動以 Fair Values 來計算資產價值使 Financial Statements 更好地反映實際的狀況, 希望使到行內的藝術範圖縮小. 然而, 什麼是 Fair Values 呢? 說穿了其實就是依賴會計師的 Professional Judgement, 換句話說就是 "將藝術理性化".

但是在我這一個 Project 來說, 這些都不重要, 因為在這裡, Stock 就是 Investing Interests, 而這些 Interests 大多是有公認的市價, 那 Fair Values 的問題就不存在了. 或許你會想我是不是計不了市價, 所以才只弄出四個 Datasets. 當然不是, 自動以系統內最新價格來計算 Investing Interests 的功能早在 Matching 那時候已實作了出來. 真正令我停下的, 是如何表現 Financial Position Statement 及 Income Statement.

首先說說 Financial Position Statement 的公式:

Assets + Stock = Equity + Profit + Liabilities

即是如果我知道 Assets, Stock, Equity 及 Liabilities 的數值, 我就可以倒迫出 Profits 出來, 列式如下:
Assets + Stock - Equity - Liabilities = Profit 

由於所有數值都是用 Double Entry 方法來獲取, 即使不計算 Income Statement 中任何一粒數, 我這個 Profit 都不會出錯. 甚至可以進一步擴展這公式去得到 Retained Profit 及 Current Profit. 設以下公式中的 T=Day of Report, n=Days of Period:

Assets(T)-Assets(T-n-1)+Stock(T)-Stock(T-n-1)-Equity(T)+Equity(T-n-1)-Liabilities(T)+Liabilities(T-n-1) = Current Profit 

Assets(T-n-1)+Stock(T-n-1)-Equity(T-n-1)-Liabilities(T-n-1) = Retained Profit 

當然, 實際一點的方法是應該 Closing Account, 把 Retained Profit 以數值形存到 Table 內, 但如果只是個人用的 Accounting, 我想使用者未必需要或懂得如此處理. 用公式去處理 Retained Profit 及 Current Profit 還有兩個更大的好處: 第一, 就是報表時間長短的自由度; 第二, Income Statement 的處理可以切割開來.

Income Statement 的處理都是大同小異, 先看看公式:

Income/Sales - Cost of Goods Sold - Indirect Expenses = Profit 
&
Opening Stock + Purchase + Direct Expenses - Closing Stock = Cost of Goods Sold

即可以簡化成:

Income/Sales - Opening Stock - Purchase - Direct Expenses + Closing Stock - Indirect Expenses = Profit

進一步指明時間範圍就可以得到 Current Profit:

Income/Sales(n) - Stock(T-n-1) - Purchase(n) - Direct Expenses(n) + Stock(T) - Indirect Expenses(n) = Current Profit

以一條公式來檢查 Financial Position Statement 及 Income Statement 在某時間範圍(n)內的值是否相等:

Assets(T)-Assets(T-n-1)+Stock(T)-Stock(T-n-1)-Equity(T)+Equity(T-n-1)-Liabilities(T)+Liabilities(T-n-1) = Income/Sales(n)-Stock(T-n-1)-Purchase(n)-Direct Expenses(n)+Stock(T)-Indirect Expenses(n) 

看到了嗎? Accounting 其實就是套套邏輯. 

寫這篇其實是為了弄清自己的思緒... (>o<)


2014年11月29日星期六

DATABASE七日鮮 - OaccPFA2014 建構全記錄 <第九日/超時第二日>


今日主要是加了三個有關 Investment 的 Form,分別是用來檢視 Market Price History (左下),用來 Update 個別 Security 的 Market Price Updater (右上),及不作區分的 Market Price Updater (右下)。

在寫這篇東西時,突然發覺 Market Price History 的左欄目有點多餘,或許在 Fine Tuning 階段會弄走它,以減少所佔用的記憶體。

在這裡,我想首先解釋一下為什麼叫 Matching,其實這是有點 "精神勝利法" 的意味。以一般小投資者如我,通常我們在買股票時,有一個不經意的預設思想就是:All In All Out,但其實在投資世界中,我們應該把自己的投資視作可隨意分割的餅仔,更重要的是記錄不同的倉位。而 Matching 就是用來實現這些的手段。

假設我上年以84元買入了三手匯豐,今年年頭匯豐卻跌到落76元,但我唔認輸再入三手,即我現在擁用6手匯豐,而平均每股作價80元。可這該死的匯豐就是上唔返去80元以上,死死地停在78元,那點算呢? 

這種情況下,最簡單的就是,全部出清6手,認賠算數,再等下次機會。另一種就是先賣三手,鎖定那三手的利潤,然後再謀定而後動。做法簡單,但如何記錄呢? 市場時時刻刻在變,情況絕不會如此簡單。賣出買入,一隻股票可能來來去去幾十次,那如何準確知道自己此時此刻手持的倉位?

答案就是用 Matching 去記錄不同的買賣組合,並以此推算每一隻持有或曾經持有的股票中未結清倉位。

Investment 相關的 Data Entry,Matching 及 Market Price 都已經做好,接下就是 Balance Sheet 及 Income Statement 的事了。

下圖是增加了三筆投資記錄後的 Cash Flow Statement,可以與在前篇的比較一下有什麼不同。雖然資料還未齊全,但架構已經肯定是 Work 的。



如果你有興趣想進一步了解什麼是 Cash Flow Statement,可以到下列網址參考:



2014年11月28日星期五

DATABASE七日鮮 - OaccPFA2014 建構全記錄 <第八日/超時第一日>


第八日, Cash Flow Statement 初稿完成!! 如上圖所顯示的, Cash Flow Statement 好像很簡單的樣子, 但是, 其原理可不是那麼直觀. 在簡單的背後, 組成 Cash Flow Statement 的物件其實包括了: 五個 Tables, 四條 Queries 及 三個 Reports.

這個 Cash Flow Statement 可以再水平擴展, 顯示每一個 Cash Flow Statement Type 的 In / Out 數, 也可以向下顯示 Cash Flow Statement Type 中的每一個 Account 的 In / Out 數.


另一方面 Personal Quick Statistic Reports 亦已經準備好. 左手邊的那個報表是整體八個項目的統計圖表, 而右手邊的是每一個項目獨立的統計報告.

整個 '扭計骰' 概念就是讓使用者可以快速找出自己的消費習慣, 而無需理會 Accounting 的事情.

好了, 拖拉了好幾天, 明天要回到 Investment 上去啦... 這次是一定的!!!




2014年11月27日星期四

DATABASE七日鮮 - OaccPFA2014 建構全記錄 <第七日>


跳票的情況比我想像中還要嚴重,除了因工事太忙外,我心又真的太多,太貪又太野。。。

上圖的是'扭計骰'相關的報表,可以見到除了 Account Balance 之外,還可以看到在該 Account 內的 Schedule,其實還可以再向下擴充顯示該 Subject 的 Daily Transaction Total。

雖然上一篇說要解決 Investment 相關的報表,但我想我還是會先把 Cash Flow Statement 弄出來,而且會採用 IFRS (ISA 7) 的 Direct Method 來設計。可是昨天我又發現很有趣的 Free Cash Flow Statement,看得我有點心癢癢想試試弄出來。。。

經過多秒的反覆思想,我決定剩下的路線圖要如何走:
1。Cash Flow Statement
2。Investment
3。Balance Sheet & Income Statement
4。User Control
5。Fine Tuning

好了,明天開始'超時階段'。 現在去搵周公先,請呀!!


2014年11月24日星期一

DATABASE七日鮮 - OaccPFA2014 建構全記錄 <第六日>



第六天, 今天花了很多時間在輸入測試用的資料上, 因為是時候要知道最初想的資料結構有沒有出問題.

入了資料, 就可以設計 Report , 上圖是三款最基本的 Accounting Report: General Journal, Ledger 及 Trial Balance. Running Balance 當然是一定要的, 但是在 Microsoft Access 中, Running Balance是不需要在 VBA 裡大費周張地Dim這Dim那, 可也不是簡單地在 Report 的Property中Enable "Running Balance" 選項那麼直接, 就是有一點技巧的啦, 這些都會在之後的番外篇中說明.

基本 Accounting 的東西已經弄妥, 接下來就是回到 Investment 這一 part, 亦是我從未完整實作過的東西. 但正如黎天王的金句: "要贏人, 先要贏自己!" , 不挑戰自己, 又如何推展自己的極限呢?



明天已經是第七天, 看來我的七日鮮鐵定要跳票了...


2014年11月23日星期日

DATABASE七日鮮 - OaccPFA2014 建構全記錄 <第五日>


看來我的七日鮮很有可能變成十日鮮。。。

今日還是在和 Deal Closing 纏鬥,但最後達成到我想要的自動化程度,這兩天的時間花的很值得。這兩次我好像患上了強迫症, 強迫自己不可以走彎路, 挑戰自已的邏輯推理能力... 其實我很享受這種忘我的感覺, 可是我知道很快Access將再給不了我這種充實的感覺...

隨著兩個主要的Interface完成, 之後就是種種玩弄Data的花巧表現及Report, 當然包括昨天提及的"扭計骰"啦.

話說回來, 我又修改了一些最底層的東東... 唉!


2014年11月22日星期六

DATABASE七日鮮 - OaccPFA2014 建構全記錄 <第四日>


第四日, 基本將Deal Closing Form (DC) 整個砍掉重鍊, 現在個Form自動根據使用者的選擇回饋更多資訊, 而另一方面, 在選擇那一筆交易來結清時, 系統會自動顯示那一筆交易尚未結清的餘數, 及該筆交易的每單位價格.

今天洗澡時, 突然靈光一閃, 立即衝出浴室回到電腦前, 弄出了上圖左上角類似"扭計骰"的東東. 那這個東西是什麼來的呢, well, 又是一樣玩弄數字的花巧東西囉.

雖然, 在一開始時, 已經告誡自己不要追求太多花巧的功能, 但心癮這回事嘛, 你懂的... 而結果是什麼呢? 還未達到目標的三份之一, 已經寫了過百行的code (唔計VBA自己generate那些), 半百的objects. 

明天後天, 看來我要開盡個turbo...


2014年11月21日星期五

DATABASE七日鮮 - OaccPFA2014 建構全記錄 <第三日>


昂然踏入第三日,因為工作煩重,所以沒有花太多時間在這project之上。雖則如此,但也不是毫無進展。今日在這兩個最主要的user interface上已經增加了不少自動化功能。

先說說在master voucher有什麼自動化功能,包括double entry的autofill,auto voucher numbering,及眾多可以簡化資料輸入的控制項等。

而在deal closing上,一樣有auto voucher numbering,但功能則主要集中在細部。在細部之中,已經整合了master voucher 的 deal transaction,user只需選擇某一特定的buy或sell,其他資料如 security name, type 及該筆交易未結清的剩餘數量。

我在這些自動化的過程中,並沒有使用太多coding的技巧,反而是大量使用了query 作為dataset,我會在七日後的番外篇多加講解。

2014年11月20日星期四

DATABASE七日鮮 - OaccPFA2014 建構全記錄 <第二日>


雖然理論上,TABLE設好了就盡量不要改動,但有時候 "原則" 還是要放一邊的。。。遠目中

我自已有個很怪的習慣,就是喜歡將Form建立在Query之上,而不是直接用Table,不知道為什麼就是不喜歡。所以你會看到有一堆aaq開頭的Query,那些就是為了我這古怪的習慣而來。

今天主要是弄輸入資料的Form,上圖右手邊的那些就是了。這些我都是用Datasheet來設計,目的是增快輸入的速度,減少使用者不必要的操作,雖然看上簡單,但我也有使用到ComboBox及混合Query來進一步加強便利性。

中間的那一個大Form則是今次設計的兩個主角其中之一。這個Form分為三個部份,最上的是標題資料,中間是會計資料,底部則是投資資料。三個部份都有不少的code要寫,來增加實用性。而在上方的則是我在模仿現在很流行的方塊式設計,這個四方的東西是一個按鈕,來控制底部投資區塊是否出現,之後的列印及其他功能按鈕都應該會用同一style來設計。

有興趣的朋友可以比較下圖與昨天的那一張有什麼不同,然後你就會明白我為什麼一開首就要感歎一番。

明天則會是另一個主角出場,Deal Closing Form。




2014年11月19日星期三

DATABASE七日鮮 - OaccPFA2014 建構全記錄 <第一日>


第一日的工程其實沒有什麼特別, 就是依照心中的意念來設計不同 TABLE. 這一次的設計重點是放在如何記錄金融投資的交易, 而這意念則是來自於自身的經驗.

TABLE的設計要點最主要盡量簡單, 不加插太多花巧的FIELD, 但同時又可以達成以下功能

1. DOUBLE ENTRY 
2. BALANCE SHEET 
3. INCOME STATEMENT
4. CASH FLOW STATEMENT
5. DEALS CLOSING STATEMENT

如果留心上圖, 你會發覺真正要花時間輸入的FIELD其實不多, 我盡量將有重複性的DATA都獨立成一個個TABLE, 即使用者只需輸入一次該等DATA, 往後就可以重複使用.

另一個特別之處是, 我在每一個TABLE都設計了雙重INDEX, 第一個INDEX是系統自動編配, 第二個INDEX則需要使用者自行輸入. 這種設計是為了避開某些RELATIONAL DATABASE天生的限制, 又同時可以享受到其邏輯結構.

最後, 我比較擔心的是, 使用者在設定某些如CASH FLOW STATEMENT的屬性時會感到困惑. 但暫時我又未想到比較好的方法... 唯有邊寫邊想吧.

好了, 明天將會是基本的FORM.



2014年7月15日星期二

自製記帳軟件 - OACC_14.0.4 休假前檢討



大約在五月中旬,我終於鼓起勇氣去開發下一代的OACC。為什麼要鼓起勇氣呢?因為我知道這將會是一個浩大的工程,而且在其中也會有很多困難,不論是技術上及邏輯上的,要去克服。而最大的問題是,我有否這樣的一個決心呢?唔。。。

OACC的第一個版本是為我所工作的公司而編寫的,那次的開發很順利,速度也快。原因就在於我有很多數據在手,而且我也很熟悉自己公司的商業邏輯及需求。簡而言之,第一版的OACC是一個度身定造的軟件。

OACC第二版是在第一版的基礎上進行改良,加入很多泛用的功能,隱藏了第一版中為我司度身定造的特殊功能。其中,我花了很大氣力來實作Inventory的流程,FIFO,倉庫間的運轉與存量,引入Quotation,Purchase Order及Payment Terms。另方面亦加入了Aging Report及Bank Reconciliation等功能。

但是,這兩個版本的OACC都有一個先天性的問題,而這個問題糾結在我心中一直發酵,日夜在折磨著我。這個問題就是OACC並不是一個獨立的程式。這兩個版本的OACC都是使用Microsoft Access來開發User Interface,並使用Oracle MySQL作為後端Database。

當然,很多系統背後都是使用MySQL,SQL Server,Oracle SQL或MariaDB等,但是我的User Interface並不能在第一次使用時自動建立ODBC連線,使用者必須自己手動建立,雖然過程並不複雜,但是感覺就是不完美.可是,不完美在這裡卻代表了高靈活度.在設計OACC的EER時, 我自覺地只使用了INT,DECIMAL,DATE及VARCHAR等數種最基本的SQL Database資料形態.雖然只使用數種形態會浪費了Server上的儲存位元,但是可以大幅地提高OACC在不同品牌SQL Server之間的可移植性.

而使用Microsoft Access來開發User Interface使我糾結的原因在於:第一,前景不明;雖然在可見的將來Microsoft都不會放棄Access這成功的產品,但是要是有一天真的發生呢?那OACC將不可避免地被牽連.第二,單一平台;Microsoft Access發展了這麼長時間,Microsoft 從未如Excel或Word在其他平台上發布,在現在連Android都有了Microsoft Office Mobile的時候,Access依然缺席在其他平台之上.所以我決定使用另一種Program Language來開發下一代OACC, 雖然暫時心目中所想的是C#,但是這次休假我會好好去研究應該採用那一種Program Language.

除了這些問題外,最重要是我想做得更好,使OACC可應用的範圍更廣.這就帶出了另一個更重要更嚴肅的問題:到底OACC要走多遠.

Double Entry,Multi-Currency,Inventory,Aging,Bank Reconciliation,Cash Flow,Balance Sheet,Income Statement,Departmental Accounting,Financial Analysis及Investment Portfolio等等都已經在之前的兩個版本及另一個Database中實現了出來.那未來要走到那裡呢?Payroll,Human Resource, Group Companies Consolidation Statements,Customer Managing 如何實作這些都已經在心中成形,但是我還有一個更具野心卻未成形的想法,就是將Audit Procedure自動化.

將Audit Procedure自動化的困難有兩點:第一,Normalization; 第二,Flexibility.而這兩點是互相矛盾的.

關於Normalization的問題應該不難解決,只是我暫時未找到一個好的切入點.但是Flexibility則複雜得多.如果你也是從事會計行業的,就應該知道Accounting Standard的變化有多頻密,一年一小變,三年一大變.對Bookkeeping來說,很多這些的變化是可以置之不理,但是對Auditing來說,這些Standard就是生命的一部份.可對於一個Database來說,這些頻密的變化卻是非常要命的,因為經常地更改底層架構是不可能也不實際的.於是我要想出一個方法去應對.

”入數即核數 ”是一個夢想,縱使知道整個System的複雜度會因此而大幅提高,但我還是覺得值得的.

2014年7月1日星期二

交易費用與《老子道德經》第三十八章




在《老子道德經》第三十八章中有如下一句:

故失道而後德,失德而後仁,失仁而後義,失義而後禮;夫禮者,忠信之薄,而亂之首。

以下是台灣林安悟教授就上句的譯文:

失去了大道之源,而後只好強調內在德性;失去了內在德性,而後只好強調感通之仁;失去了感通之仁,而後只好強調正義法則;失去了正義法則,而後只好強調禮儀規範。那強調禮儀規範的,正可見忠誠、信實已然澆薄,禍亂災害,已然開始!

"失道,失德,失仁,失義,失禮"看上去甚有禮樂崩壞的亂世意味,但其實這是不是在反映著,當一個社會發展得越來越複雜,群體越益龐大之後的必然現象?而背後使人們失去這些東西的力量又是什麼呢?這就是本文想探討的現象。

由"道"到"禮",是一種由主張個人修為逐漸演變成主張集體行為的過程。很多人都懂得說:道可道, 非常道。然"道"是什麼呢?根據《道一論》,"道"即是世界美好的本質, 行大"道"即是順於世界美好本質而行。因此如果每個人都順著世界美好本質而行,大同世界即可實現。可是,人之初性本善還是性本惡,早在二千多年前已成為一項無解的爭論,而爭論的焦點其實在於世界本質是什麼。如果"道"是難以界定的東西,即"以道入世"的交易成本定必非常之高。當社群不大時,"道"容易受到眾人認同,這是因為傳達訊息的成本較低,而速度亦較快,是以統合意見的能力較高。但是,當社群擴大以後,抽象的意態如"道"將無法應對情況,因統合意見的能力與社群大小是呈反比的。於是前人開始發展出更加容易管控意見的"德"出來。換句話說,"失道而後德"即是社會由"道"的純粹唯心論主導架構,轉化成唯心與唯物的混合體"德"成為主導架構。

"德"也是主要強調個人修為,但是和"道"不同的是,"德"是一種向自己內心發展美好的一面為主張。從修"德"這比較實在的追求來回應"道"這抽象的追求。其立論是在"人人",即是如果天下人人修"德",這眾"德"定必能夠與"道"切合,因人人就是世界。 所以"眾德"(個人美好的集合)即為"道"(世界美好的本質)。可是,如果有人失德呢?凡夫俗子失德,我們可以輕易驅逐之;君子失德,我們可以眾口羞辱之;但君主/領袖失德呢?那可是動搖一眾之本,其後果之嚴重,代價之高昂,實非"德"能承載。於是一個由下而上的, 更向唯物靠攏的東西就此應運而生。此物曰:"仁"

"仁"是一種捨棄單向的單獨的內心追求,轉而向外在表現的社會發展的體現。而"仁"也是一種由下而上的權力管控(即今日所謂的"向上管理"),其發展因自"德"的高交易成本。"仁"的體現必須存在兩個或以上的個體,而這兩個個體的權力地位必有高低之分。如果權力是絕對的,那有權者必定是殘暴的;因為這是在沒有外在制衡之中,役使另一方的最有效手段。然而,當群眾規模擴大,有權者的權力不能有效控制所有人,於是代理人便出現了。代理人的出現即代表了權力不再絕對,因為外在制衡的因素已經出現。為了實現代理人政治,及理順上下新的權力關係,於是種種"外在制衡"因素逐漸匯集演變成"仁"。君臣行仁,臣民行仁,父子行仁,複雜的社會結構開始成形。然而"仁"在更大的團體之中,尤其在大團體之中出現眾多小團體時,其缺點即開始曝露。

"仁"既是一種由下而上的權力制度,那上者在如何回應下者的要求勢必成為問題。小團體時還可以依靠向外擴張來滿足下者的要求,但是當一個大團體開始分眾時,這些內在的小團體如何向外擴張?小團體旁邊就是其他小團體,如果大團體的擴張比率不及其內的眾多小團體的擴張比率,那小團體間定必出現零和遊戲。然而有誰願意默默無聞地被吞噬?充斥山頭主義的大團體定必躁動不安,當社會交易費用急遽上昇之時,也就是"仁"失效之時。當由下而上的制度失效,一種相對的,由上而下的制度"義" 因此出現。

"仁"比"德"所擁有的唯心成份更少,但是與"義"的唯物觀相比,則"仁"還算是一種半自發的抽象行為。因為"義"其實就是純粹唯物的古代版功利主義。其邏輯源自於"君父對臣民行仁",因此,作為對應的就是"臣民對君父行義"。雖然"義"成功地壓抑了臣民對君父的無盡索求,並強化了不同階層間的紐帶,卻也同時強化了山頭主義,但其最嚴重的後果則是扁平了社會中的各級階層。一如所有功利主義一樣,"義"最後變成了權力交易的錢幣,有能力付多點"義"的必然要求更多權力。隨著君父權力的矮化, 導致了上層權力架構變得脆弱,而這種脆弱將會如漣漪般向社會擴散。孟子的"上下交征利而國危矣"正是言於此事之上。"義"的功利主義雖然能有效控制比"仁"更大的團體,但當團體成長到某一地步,"義"的交易費用也會失控上升,於是另一種能以更低交易費用去控制更大團體(即更有效率)的制度必定出現,而此新制度曰: 禮。(我認為老子說的"義"並不是後世所謂的"正義",而是更近似日本的"義理")

"道德仁義禮"之中,唯有"禮"能以實際的面貌示人,亦即表示"禮"已經完全脫離抽象,成為一種可實際操作的社會管理工具。可實際操作的好處在於傳播容易,社會上各階層各安其位,使人人合而成一,即是管理社會的交易費用能夠大幅降低,對於國家的建立與發展有莫大益處,而代價則是個體被扁抑。在"禮"之下,人的個性志向喜惡註定變成不值一曬的雞毛蒜皮小事。因為如將個體置於"禮"之先,則"禮"不成"禮",而建築在"禮"之上的國家亦必定將步入分崩折離的命運。這就是老子所言的"夫禮者,忠信之薄,而亂之首"。但是,我們要問的是,"夫禮者"是註定出現的,還是可以避免的?


在老子時代,還未出現交易費用這觀念,因此老子在分析"禮"之出現是由失"道"開始,之後層層逸失,到最後以"禮"為"亂之首"作結。可是如果以交易費用來分析,就可以發現"道德仁義禮"是由抽象到實在,由唯心到唯物。試想想,如果我們安排一班無知的人觀看畢加索的名畫《格爾尼卡》,在不告訴他們此畫的歷史肯景下要求他們對該畫作寫出自己的感想,然後要他們討論各自的感想並得出一個大多數人認同的結論,他們有可能做到嗎?如果無知人的人數是十名,或許很快就可以得出一個結論;但如果是一千名呢?甚至是一億名呢?再進一步想想,如果我們同樣安排一班無知的人觀看梵谷的名畫《向日葵》,然後同樣在不提供資料下要求他們寫下感想並得出一個大多數人認同的結論,那你認為看《格爾尼卡》的人群可以比看《向日葵》的人更快更容易得出大多數人認同的結論嗎?是的,我是以《格爾尼卡》代表"道",以《向日葵》代表"禮"。

現代社會的物質充沛,或許使"道"與"禮"的交易費用高低的影響不太明顯。但在物質貧乏的古代社會交易費用的高低卻可能是一個族群的存忙之別。在我看來,"夫禮者"並不是失去了"道",而是"道"不適用於那時那刻的社會發展而遭"夫禮者"捨棄。即是在交易費用的壓力之下"夫禮者"是註定出現的。




2014年5月10日星期六

邏輯思辯 (四)

在第三篇之中,我指稱人是沒有自由意志的,是因為我們不能意志我們所想要的意志,而我們的意志只是一種透過自身感官日積月累堆積出來的資訊集合。但,雖然我們沒有自由意志,可我們每一個人都是獨一無二的個體,獨一無二則源於我們在往南走時的路徑不同。或許你會說同一個家庭的兄弟姊妹,都是在相同環境下形成核心,擁有同一份最初的地圖(父母),而北風都是來自同一源頭的,那兄弟姊妹之間應該是沒有那麼獨一無二吧。要回答這問題,或許我們應該用同卵雙生的兄弟/姊妹來想像一下深層的光與水,在兩個彼此生理上完全相同的個體之中扮演了什麼角色而又導致了什麼後果。

同卵雙生的兄弟/姊妹比一般兄弟姊妹更有值得研究的地方是因為他們面對的父母是相同的.這裡不是說什麼同父異母,同母異父,或養父養母,而是時間值差異的問題。先讓我們自問,今年今日的你跟昨年今日的你是不是完全一樣?當然你還是你,但真的一點改變也沒有嗎?如果相隔兩年,三年或更多年,我想你不會繼續堅持自己是一成不變的吧。如果我們會成長會改變,那為什麼我們的父母不會呢?想想看,頭生子女所面對的父母,跟第二名子女所面對的父母是不同的,我想最少育兒經驗上是不同的吧。因此,雖然父母是一樣,但兄弟姊妹所面對的父母其實是不同的。這裡就可以指出研究同卵雙生的兄弟/姊妹是更有效去論證每一個人都是獨一無二的個體。

讓我先虛構一對同卵雙生的姊妹吧:Alice及Betty。她們跟所有其他家庭的兄弟姊姊一樣,在嬰兒到幼兒時期的經歷都是相似的,因為外部世界被他們的父母擋在其外。到兒童時期,外部世界開始透過學校,遊樂場,電視,電影,互聯網入侵她們的小世界,而由於深層的光與水如此相同,而且這些外來物品一般來說都是可以共享的,所以她們表現出來的喜好,行為,反應甚至是學習能力都是相似的。到現在為止,Alice及Betty的人生路徑都是相似的,即代表她們的意志都是相似的。為什麼只是相似而不是一模一樣?想想這樣吧,在Betty六歲的時候,一晚被惡夢驚醒了,而Alice還在夢鄉之中, 在黑暗之中的Betty感到非常恐懼,所以她把Alice弄醒給告訴了自己的惡夢,使得Alice也被嚇怕了, 到最後兩姊妹相擁而睡。雖然最後兩姊妹都被同一個惡夢所驚嚇,可這是Betty是親身經歷,而Alice只是聽眾。或許這只是小事一件,但是分別還是存在。別忘記,生活是一連串事件。(是的,我是在沾經濟學大師 Irving Fisher 的光)

這一年,Alice及Betty已經十六歲,長的婷婷玉立。某夜,姊妹倆一同參加學校舞會,Alice一個轉身與Paul四目交投(誰是Paul無關宏旨),Paul 鼓起勇氣問了Alice 的電話號碼,而 Betty還在那邊看著台上的樂隊演奏。。。後面Paul及Alice所發生的事我就不繼續說了,我舉出這個例子只是想說明,隨著年齡漸長,外部世界所發揮的力量亦越大,而外部世界與你所發生的互動則是隨機產生的。因此,現在的我們這一刻所擁有的意志其實是我們深層的光與水與這一刻之前所曾經歷過的外部世界隨機事件的乘積之和。可是,我們難以斷定這些外部事件的值,而我們也同樣無力去量度這一刻自己意志的值,所以每一次事件的乘積都是隨機未知數,因此我們這一刻的意志就是一堆隨機未知數之和。如果我們的意志可以定義我們,那我們就是一個個隨機未知數。

作為一個隨機未知數的我,當遇到另一個同樣都是隨機未知數的你,會發生什麼事呢?這樣說或許太抽象,那我用形象化一點的東西吧:隨機面數形狀的幾何體。。。好像也是很抽象,但總比隨機未知數好。當兩個隨機面數形狀的幾何體走的接近時有什麼後果?碰撞,受傷,排擠/被排擠等等。如果這個外來的隨機面數形狀的幾何體是自主或非自主無法拒絕的,那我們會怎麼辦?我想唯有改變自己的隨機面數形狀去希望減少受到傷害的機率,雖然我一直在說我我我,但要記著這個過程是相對的,即是當我們以為自己很辛苦去迎合其他人的時候,其他人其實也是在迎合我們。。。或許有人會說隨著地位不同,這種遷就是有程度上的分別的,但是作為隨機面數形狀的幾何體的我者和他者,真的能夠說出這種程度的不同嗎?所謂程度的不同,其實只是反映著我們自己自以為的意志,對他者來說一點意義也沒有,因為他者也是用他自己的意志來量度你的程度!形象化一點,即你用一條沒有刻度而無窮盡長的尺去量度兩點之間的直線長度,有意義嗎?

家庭,朋友,學校,幫派,公司,團體,國家,種族等通通都是把我們這些隨機面數形狀幾何體不停地壓向彼此的容器,我們逃避不了,我們只能壓抑自我去融合其他人的自我,反之亦然。而我們逃避不了的原因,就是我們恰恰構成了這些容器。

"他人就是地獄"是由法國哲學家 J. P. Sartre 提出的,但是他是立論在自身與他人各自的自由選擇所產生的對抗。而如我前作所論斷的,我們根本沒有自由意志,而沒有自由意志又何來自由的選擇?雖然如此,但是對我來說"他人就是地獄"還是成立的,原因是我們沒法逃離,而逃不開的後果甚至使我們沒法意志我們所要意志的!想想看,我們壓抑自我的表現,是我們自主的結果還是我們沒法不為之?我們真的可以肯定嗎?到最後簡單總結一句:他人就是地獄,在他人眼中的我們就是他人。

你在看著地獄的血盤大口中顫抖,誰不知地獄也是在恐懼中看著你的血盤大口!

很累,"超人說"就留下一篇吧。

2014年4月21日星期一

邏輯思辯 (三)

第一篇否定了"形容詞",第二篇打倒了"事實",來到第三篇我將嘗試把自由意志的邏輯也擊破。要削弱自由意志的存在感,有一個很簡單的方法,就是從宗教角度入手。可是在我個人來說,以宗教切入來討論邏輯是有作弊之嫌,而且往往會把整個討論帶往不理性的絕境。而且,就是從宗教角度切入,最多也只是能指出自由意志其實是用來解釋 '純白無暇牆上的黑垢' 的手段,然而作為手段的這個身份,並不可以質疑其背後可能擁有的邏輯。

但是自由意志是什麼呢? 要回答這個問題, 或許先要從心智系統的建立說起。我們的心智系統的基本模塊就是我們對身處的這個世界的種種認知, 而認知則是我們感官受外部世界剌激或互動時所產生的資訊的記錄集合。不同的認知的集合則構成了我們各自的事實。因此, 感官資訊, 認知, 與事實成就了我們各人各自的世界。是的, 雖然我們生活在同一個星球上, 呼吸一樣的大氣, 飲用同一樣的水, 食用差不多材料製成的食物, 但我們之間是如此不同。就是夫婦二人間的相處, 在碰撞之處的激裂程度往往猶如星球大戰的戰爭場面。

在第二篇中, 我提出了一種單向的被迫的認知建立時期, 就是我們生活在母親子宮中的胎兒期. 或許你會說那時期太極端, 而且為期短及毫無記憶留下, 因此影響不了我們日後的生活. 但是現代心理學及醫學均有研究表明, 母親對胎兒的影響就是嬰兒出生後仍然繼續存在, 甚至是我們性格形成的一部份. 如果這種單純的, 單向的剌激可以影響我們最早期的認知, 這種認知也就建立了我們最早期的喜惡。因為我們本能地近喜遠惡, 這種偏執將會塑造我們的記憶, 最後形成我們的世界。

形象化一點說明吧。胎兒就像是在太空中的太空人, 你看的地球就是一片模糊的藍. 而這艘母親號太空船只會將你降落到北極那一點上, 從此以後你就只能往南走。當然, 有些人往西佰利亞, 有些人往格陵蘭, 有些人穿越加拿大的北部凍源, 有些則是到達芬蘭。。。但你就是只能往南走, 毫無選擇餘地。為什麼每人走的路線都不同呢? 那是因為各人被授與的第一份地圖都是不同, 而這份地圖就是我們的父母(不論有血緣與否)。那我們可否留在降落點不走呢? 答案是不成! 因為北風每天都吹著, 即使你一步也不移, 這北風也會把你往南送去。你猜對了, 北風就是你不停成長的身體.

在南遷的過程中, 途上風景味道感受通通透過我們的感官轉化成記憶,  記憶集合成認知, 認知最後形成心智系統。由於心智系統的建立是一個日積月累的過程, 因此我們可以說越早期建立的認知就越接近這個系統的核心, 而核心則是形成於母體之內。

如果上述論點成立, 我們就可以看出, 核心, 被受與的地圖, 北風, 這些深層的光與水全非我們可以抗拒的力量! 組成自己的心智系統的基本模塊既非自主安排, 又非自主可抗, 那自由意志從可而來? 或許你會說隨著人逐漸長大, 可自主的事情越來越外, 然而是真的嗎? 先不說核心所構成的喜惡如何影響我們的選擇, 在成人的過程中, 另一更強大的不可抗力將日漸發揮其力量, 日夜壓迫著你的核心, 否定你的喜惡, 忽視你的存在. 這個力量就是社會。

在人的一生中, 我們每天為了生存而掙扎, 而為了生存我們不能自絕社會之外。很多人說自由意志的體視就是選擇, 然而心智系統核心所塑造的喜惡是不是自由而來苦無定論, 父母無從否定否認,身體成長也非可控,社會這個由他人所組成的系統又如此忽視我們, 那我們所作出的選擇真的是自由意志的體現嗎? 還自由意志只是鏡花水月的安慰劑嗎?

走筆至此, 或許我們應該明白了那叔本華的名句: “你可以按自己的意志行事,但不能意志你想意志的。” 換句話說就是意志本身就成為自有的界限,雖然你好像自由地行使自己的意志,但卻不能超越這個界限; 即這個看上去自由的選擇,實際只是一些業已存在的選項,你只是在已有的選項中作出選擇,因此你其實並沒有自由意志。

那我們到底是什麼呢?明白人類本沒有自由意志的我們,就像那個被騙的國王明白所謂的新衣根本就是子虛烏有一樣,感到被愚弄又不知所措,不想承認卻又無可奈何。或許是時候我們另尋溪徑去完成這個個人版本的'人類補完計劃'。

下一篇讓我們看看 '他人就是地獄' 及 '超人說' 能否賜我們一套實際存在的新衣。

2014年3月25日星期二

邏輯思辯 (二)

上一篇我以自由意志的不可侵犯為據, 推導出為何形容詞在陳述意見中是不可取的. 而這篇則是要嘗試把'事實'也打倒在地.

當我向受眾說:"張靜初是男人",想必受眾不會接受這是事實,而當中定必有人出言質疑我的陳述。那他們是如何肯定我所說的不是事實呢?受眾又如何斷定張靜初不是男人呢?

先來想像一下受眾會如何駁斥我這個陳述。最簡單直接的就是堅持張靜初必定是女性絕不會是男性。但這只是另一項陳述,與我的陳述在本質上並無不同。受眾為了証明張靜初是女性。於是列舉出一系列的表徵來論證他們的主張,例如玲瓏的身體曲線,尖細悅耳的嗓音,精緻的五官,思想行為都俱有女性特質等。但是要問的是,是不是有齊以上徵象的就一定是女性?我想不是所有受眾都肯定這種定義吧。爭論繼續深入,一些更深層次的性徵如性器官,月經,生兒育女的能力,性行為對象的性別到最後染色體都會被拿出來檢視。可以上種種都有其缺陷,雖然要反駁其中當然比反駁前述的表徵困難得多,但還是可能的。最簡單而又最薄弱的爭論就是要求受眾拿出證據去證明張靜初有以上性徵,而另一種爭論方法就是提出反証去証明擁有上述性徵的個體也可能不是女性,從而使到"張靜初是男性"這陳述不被完全擊倒。

說到這裡我們應該可以看出就是我們眼中的所謂 '事實',即簡單如一個人是不是女性,其實是來自於我們一系列的認知。即是說 '事實' 是認知的集合。如果大家的認知不同,各自所得出的 '事實' 就會不同。那如果我們擁有各自不同的 '事實',那 '事實' 還是不是 '事實' 呢?而認知又是什麼呢?認知就是你所認為是事實的事實。我們眼中的世界,其實只是一個個彼此交纏的'事實'的無窮迴圈,而這就是心智系統。

人的心智系統如何建立?要回答這問題或許要先問人的心智系統是從何時開始。拜現代醫學所賜,我們得知當胎兒一發展出感官時就會立即對這個世界作出反應。母親的喜怒哀樂與聲音,心跳的韻律,外來模糊的聲音,甚至穿透肚皮的陽光在在刺激著胎兒。而現代流行的胎教更進一步提早了胎兒認知的建立,但從這種不自然地由外界強加於胎兒的認知的行為中,我們是不是在影響了另一個體的自由意志?暫時我且將這題目放下,繼續有關心智建立的討論。

很多人都視嬰兒的種種行為本能的反射,嬰兒本身是沒有認知的。但是有研究表明心跳或母親的聲音能安撫剛剛出生的嬰兒,那為何其他聲音不可以呢?這其實是告訴了我們嬰兒也有他自己對這個世界獨特的認知,雖然這種認知非常簡單狹隘,但在本質上和我們自以為對這世界的認知並無二致。

隨著身體的發展,我們越益透過感官接受更多的外來的資訊,這些資訊儲存在腦海之中後就變成我們的認知,亦即是我們的事實。父母們應該都會發現年幼子女間常常都會為一些小事爭吵,而我們一般都將這些行為視為自制力薄弱的表現。但是這些行為是不是反映了不同個體感官認知之間的碰撞?年幼孩童的感官就是他們的事實,他們不了解各自擁有的事實是有分別的,所以堅持己見。從這個角度看,大人們對事實的爭論與小孩對感官的爭吵是沒有分別的。

如果認知只是我們透過感官產生的資訊的集合,那自由意志是真有其事還只是感官的反映?如果自由意志是真的,我們是不是可以超越感官去認識這個世界?還是我們只是被自己的感官所牢牢囚禁的孤獨靈魂?

下一篇將會論述自由意志的邏輯。


2014年3月24日星期一

邏輯思辯 (一)

圖片來源: tpwang

執著於邏輯,輕蔑形容詞。

我一直再三的說少點形容詞,多點邏輯。是因為形容詞是空洞無物且有毒,不會帶來任何助益之餘更會分散焦點,使人更難看清被種種表象所遮掩且躲在最深處的邏輯。

有網友責問我為何老是追問別人?因為道理沒弄清啊!很多人在訴說自己的喜惡時都喜歡加上一點原因,好像使自己更加理直氣壯,其實只突出了其本身的虛愜。舉例來說: 我喜歡張靜初。一句簡單的陳述完整而且不可擊破。但是一旦改成了: "我喜歡張靜初因為她漂亮。" 那這就不是statement 而是 argument,所以有可能被擊破,亦因此這句子的力量比不上簡單一句陳述句。背後邏輯來自於 “自由意志”。

承如前述,"我喜歡張靜初" 是一句簡單而無可擊破的 statement, 其背後邏輯是源於 '自由意志',即是我喜歡什麼是個人的自由,而且這種自由是不應該被侵犯,而不被侵犯的原因是在我陳述這句子時並沒有侵犯受者的自由意志。

而 "我喜歡張靜初是因為她漂亮" 則是一項 argument。而這 argument 可以被質疑的原因是其中包含了一個主觀的形容詞 '漂亮'。什麼是 '漂亮' ?每個人都有他主觀的認定而且無從辯證。如果你將這句說話留在心中,旁人是無從得知,換句話說就是你的自由意志與他人的自由意志在這時沒有衝突。但是當你一旦宣之於口,言者與受者各自的自由意志就會起衝突。

或許你會說你只是告訴人家你的想法,並不是要影響他人的想法。但是如果真是這樣,那為何不簡單的說: "我喜歡張靜初" ?或更進一步的問: "為何要宣之於口?"

人類語言有兩大功用,一是交流資訊,二是社會活動。這兩者是難分彼此的,但不代表我們可以含糊其中分別。在社會活動中,很多時候我們的目的是得到旁人的認同。而使/被認同與自由意志是互相衝突的。當你要解釋你的行為時,你就是在尋求認同,而你的受眾就有權要求你明確你的解釋,因為你的自由意志是在試圖影響他的自由意志。

回到 "我喜歡張靜初是因為她漂亮" 這 argument,從中可以看出我是在解釋我的行為,而目的就是尋求他人認同我的行為。於是受者就有權要求我定義何謂'漂亮'。然而 '漂亮' 是一種不可量度的感覺,任我窮盡世上所有言語都沒可能去明確表達出我心中對 '漂亮' 的定義,當然我可以用其他形容詞去描述我對 '漂亮' 的感覺,但這只是於事無補的行為。

在受者的不認同壓力下,到最後我只有祭出一個無可否認的答案,就是 "我喜歡張靜初是因為她漂亮,而這種漂亮是符合我自己心目中對漂亮的定義"。這個答案其實就是 "我喜歡張靜初" 的變體。但是這答案卻無法達成我想要的認同,因為我把 '漂亮' 限縮在我自己的自由意志內,這是無從挑戰但同時也無法影響受眾的自由意志。對渴求認同的挫敗,往往才是一般討論變成惡言相向的真正原因。

下一篇我將討論簡單的 statement 是不是全都是無可爭辯的。如果我說: '張靜初是男人', 我的受眾會有何反應?這是一句簡單的 statement,根據我自己以上所說,這應該是無可爭辯的。但明顯地對這句話,大部份受眾都不會同意。這是因為我的自由意志與大部人的自由意志產生了衝突,這就引伸出一個邏輯問題: "什麼才是事實?"

2014年2月27日星期四

艇仔是罪人嗎(下)

圖片來源: fundacionbases.org

拖拉了兩個多月都不願意下筆這"艇仔最終回",原因是之前兩篇已經清楚地論證了"艇仔"是交易費用的產物,而非租值消散的現象。所以從經濟學上來說,本應已再沒有發展空間。可是會計這一行業帶給我的實在太多,情感上我是希望所有執業會計師都是大肥貓,舒服而自在地享受十年寒窗所帶來種種應有的榮耀。為了帶出本篇的重點,我想先說說兩種會計師之間的經濟地位的分別。

在"上篇"與"中篇"之中,我是沒有很清楚地區分"執業會計師"與"註冊會計師",而且我是自覺地偏重執業忽略註冊。這是因為在整體社會中,前者擁有壟斷權力而後者沒有。其背後的道理很簡單:試想像如果執業與註冊之間可以自由轉換,當執業會計師收入較高則會吸引註冊會計師轉業,而由於法例沒有規定所有機構必需聘有註冊會計師,則次一級的專業會計人員將會填補因註冊會計師流失所造成的空白。這效應會一直傳播到最低層的會計從業員身上。當情況倒轉的時候,執業會計師進入機構當僱員,排擠效應(即坊間所說的"學歷通漲",而且是超級的)將會出現。而在沒有外力干擾的僱傭關係中,資訊的不對稱是會對資方有利,那將使到整個會計行業的議價能力大為削弱。但是,實在很難想像壟斷權力的經濟效益會下降到負值,因為這代表了社會已經不再需要會計來降低交易成本。

要扭轉社會在尋找更低交易費用對會計行業所造成的壓力,擴大執業會計師及增加註冊會計師的壟斷權力是唯一的辦法。最簡單的莫如立法使所有機構,不論是否法人,都必須出具經執業會計師簽發的核數報告;只有執業/註冊會計師才可被個人或機構委任為稅務代表;所有機構都必需聘請一名或以上的註冊會計師作為會計部門的主管;及其他可能需要的商業邏輯知識的產品或服務都需要執業/註冊會計師的認証,例如ISO的簽發。不要以為我在天方夜談,在某些國家已經開始有相似規定出現。

壟斷權力的擴大是有使尋租行為及租值消散出現的風險,而這種強行增加交易費用的行為,是否為社會所容計也有所疑問。但這是我唯一想到的辦法。最後,樂觀一點說,就是擴大會計師的壟斷權力會自自然然的消滅所有艇仔。沒了艇仔,罪人當也無從說起。



後記:選擇 Hayek 作本篇圖片是有另一層意思,或許喜歡經濟學的朋友會明白。



2014年1月8日星期三

歷史學家的經綫


本書的副題是"歷史心理文集",或許你會問歷史那來心理,但寫歷史的歷史學家是人,歷史記載的也是人;是人就會有心理,而心理則成形於人的內外兩個世界衝突。於是,歷史其實不是簡單的記錄,而是一種以後人眼光回望先人事蹟時的心理記錄,換言之,解構歷史心裡是了解歷史真象重要的一步。

本書從"五四運動"前後,中國的啟蒙時代說起,指出當時中國的知識份子受法國大革命的影響,遠比受俄羅斯十月革命的影響要深,從而解釋了一些受後期共和國政治思潮影響,在解讀歷史時所產生的矛盾。然後是人種學說使西方學者中產生"南北中國"的印象,而這種印象在傳入中國本土時,卻產生了"中國殊異論"。雖然"中國殊異論"現在已經息微,但是"南北中國"的論述卻方興未艾,而且更走進了尋常百姓家。末世紀思想潮流也在近代中國文化思想界佔有一席之地,雖沒有留下形象化的符號,但作者在當時諸般文章中還是看出了當中的脈絡。

魯迅,作為中國近代思想的代表人物,在本書中佔有相當篇幅。老實說,在未讀本書之前,我接觸有關魯迅的事情就是中學時期的幾篇文章,而且早已還給了老師。但本書卻燃起了我對魯迅的興趣。在書中,魯迅是一位很有立體感的人物,雖然作者的著眼點還是"吃與被吃",但從魯迅的經歷中可以看出在十九世紀未的中國知識份子所經過的一段從科舉到西學,從家族孝道到個人主義,從地方到國家的非常時期,其變革之深廣及影響仍然在我們這一代中迴響著,這是我從未曾思考過的。

本書後部的焦點是在美國文化身上。作者先從美國學者的中國研究開始,逐漸解構美國人的"殺母文化",而在殺母之中,由於東方人的文化特性,使"東方"成為女性化之意象。這部份羅列了大量的流行文化符號,而美國的流行文化當然地是指電影。而近二十年中被奉為經典的"沉默的羔羊"即集了"殺母"與"東方"於一身,指出"殺母"在美國是男女共有的心理特質,而異化者定必受"東方"所惑而墜落。這部份其實是相當有趣的,光是這後部的篇幅已經使本書值得電影愛好者收藏閱讀。

在孫基隆教授的"解構中國深層文化"一書中,你會感到他的筆觸是充滿了火藥味,書名雖曰"解構"但是"凌遲"的感覺溢於文字,那種希望以筆代刀,歷千刀萬剮也要把中國文化從自己身上剥離的激情撲面而來。相對之下,本書則像是一名異鄉客在遊遍桃花園後,對家鄉窮山惡水的感受影像。借用辛棄疾〈青玉案〉中最著名的一段作本文的總結:

"眾里尋他千百度 驀然回首 那人卻在燈火闌珊處"

ISBN: 9789628884193
作者: 孫隆基
出版: 花千樹出版社



2014年1月3日星期五

外交十記


這本由我國前國務院副總理錢其琛所著的<外交日期>成書於2003年,至今已經有足足十個年頭。作為一本工作敘記,本書可說是四平八穩,當然其中也沒有什麼動人心魄的破格披露,但總體來說還是大致持平,並沒有宣染意識形態。而作為一名中國共產黨黨員達六十年(以成書日計)並曾官拜外交部長及副總理,自不然在字裡行間中處處透視出我國政府在面對種種外事內事所持的觀點,而這些必然與我們熟悉的西方觀點有所不同。

本書著實花了不少篇章來解釋我國外交政策的成因,歷史背景,及就國家及或黨的利益所作出的考量。從這些或國或黨的角度,可以說中國共產黨的確是以"黨國"這樣的倫理來治理域內的人民與山河,這是讀這本著作時要了解的。與其他回憶錄相比,作者與工作伙伴及對手互動所佔的篇幅是比較少而且深度略為不夠,使我在閱讀時感到本書並不是單純的回憶記錄而是有其政治任務的。那本書的政治任務是什麼?就是從一種比較軟性的角度,向外宣傳中國共產黨的世界觀。

本書以1982年為起點,從中蘇關係開始,到1997年-1999年港澳回歸共十篇記事,再加上四篇演講稿所組成。而我個人來說本書最有亮點是其中的五篇:第一篇的<中蘇關係政常化>;第三篇的<飛往巴格達>;第六篇的<黑雲壓城城不摧>;第九篇的<涉台外交的兩次鬥爭>;及第十篇的<港澳回歸>。選這五篇是因它們有各自的代表性,往下我會逐一簡略地說明。

從革命到執政
第一篇的<中蘇關係政常化>記錄了中蘇在上世紀八十年代初,為了因應各自的考量而把雙方關係從罵戰,熱戰,冷戰轉到正常軌道上的過程。從文章的側面則可以看出,中國共產黨在已故領導人鄧小平的帶領下,逐漸從充滿激情的革命黨轉變成為冷靜理性的執政黨。

現實中的中美關係
第三篇的<飛往巴格達>作者所記述的是在六四陰影下,中美兩國如何在中東問題上合作。雖然這已經是二十多年前的往事,當時我國的影響力更非今天可比,但是雙方已經有共同的利益與目標。而這種"暗渡陳倉"式的外交合作與角力,或許在今天這個熱點處處的世界更加頻密地上演。

合縱連橫
第六篇的<黑雲壓城城不摧>說的就是我國如憑藉善用自身的優勢來化解在六四後國家在國際事務上所面對的困境。這篇堪稱本書中最富謀略的一篇,閱後可以更明白什麼是"弱國無外交"的真諦。

力量與外交
第九篇的<涉台外交的兩次鬥爭>用了大量形容詞來修飾作者所要表達的觀點與世界觀,及其所代表的政府的正當性。可在這些修詞背後,我們還是可以看出外交鬥爭的主軸根本就是力量的較量,正義之詞只是為了"出師有名",讓自己的感覺良好而已。

黨國
第十篇的<港澳回歸>。身為香港人的一份子,在重讀這篇時不禁感嘆非常。我認為所有對香港未來政制發展有興趣的人都應該來讀讀這一篇,你或許會驚訝現在許多街頭鬥士所批評的東西,其實在這書成書前早已經被詳細討論。我想香港的政治人物在這個重大的轉折期中,要好好深思及接受"黨國"這一詞的真意及盡早發展自己的政治理論與邏輯,而不是照搬西方的一套來與中國共產黨爭鋒。畢竟中國共產黨是一個有七八十年鬥爭歷史,備有完整而且不停發展理論的政黨,一般閒雜人士和熱血青年是難以成為其對手。相比之下,香港的泛民主派雖然在人民心目中培養了民主自由意識,卻不明白這代表了他們是有責任提供相關理論來引導人民的。最令人不安的是,香港整體從未就何謂"民主""自由"而進行理性的思辨。我個人的恐懼是泛民在吃了免費的道德政治午餐之餘又把動盪諉過於自由意志,這是非常不道德的,因為這將是香港未來的禍源,無論我們是否有民選特首或議員。

ISBN: 9620423372
作者: 錢其琛
出版: 三聯書店(香港)有限公司