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日星期二

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




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

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

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

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

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

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

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

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

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

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

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


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

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