1. 程式人生 > >從程式語言的角度看中醫的【藏像】理論

從程式語言的角度看中醫的【藏像】理論

var 鏡子1=“”;
鏡子1=“豬八戒”;
鏡子1=“孫悟空”;

上面的虛擬碼說明,鏡子這個變數的值,變了,所以我們說鏡子是一個變數,名副其實啊!

但是,如果有人問,鏡子裡面到底是豬八戒,還是孫悟空?

這個問題不好回答,因為沒有說是哪個時候的鏡子,是一分鐘前的,還是一分鐘後的?

所以,變數易變這個特徵,它帶來好處的同時,卻增加了更多的麻煩。

其實,要解決這麻煩,我們把鏡子換成照片:

var 照片1=“豬八戒”;
var 照片2=“孫悟空”;

當然實際產生一張照片的過程還是比較複雜,我們這裡將這個過程簡化,認為一張照片就是膠捲上的一張底片生成的,底片用了就不能再使用了,也就是說,照片一旦拍了,就不能改變了,但是照片在使用之前,是可以用來拍攝任意照片內容的,所以,這裡又引出了一個變數的“不變性”問題。

變數的不變性,使得變數的值變得穩定,追蹤變數的值變得簡單。很多函式式語言都支援這種“不可變變數”的,例如在F#中,可以使用下面的方式來證明:

let x = 10
let y = 5
let x = x + y // Compile Error

函式式語言變數的不變性,使得在高併發下程式執行的安全性得到了保證,不用擔心某個執行緒把變數修改了,缺點就是需要更多的記憶體來複制變量值,程式執行效率降低。

符號推理

變數的這種不變性,有些函式式語言稱之為“變數繫結”,變數和它的值一旦繫結後,就不能改變了。這樣,我們討論某個變數的時候,就可以等價的討論它繫結的值。這是一個很有用的方式,比如組合語言,我們用一些彙編指令符號,來代替具體的二進位制機器指令,為編制複雜的計算機程式成為可能;之後,我們又進一步對彙編指令進行抽象,發明了計算機高階語言,為編制大規模複雜程式提供了可能。假如你不是搞計算機的,但你學習過中學數學吧,“代數”,解方程總知道吧?我們用代數來求解複雜的方程,化繁為簡。在物理學中,符號在物理學公式中的作用更加重要了,比如愛因斯坦的質能方程:

E=mc²

方程中,E代表能量,m代表物質的質量,c代表光速常量,質能方程描述了質量與能量之間的當量關係的方程。

方程式的左邊表示能量,方程式的右邊,定義了質量和光速常量的計算關係,通過這種關係可以計算出物質質量轉換為能量的大小。

由於這個方程式非常著名,沒有它就沒有原子彈,就沒有二戰後的和平,就沒有人類取之不盡的核能能源,所以在這個方程式中,這幾個符號的關係就規定好了,從這種符號的關係,可以得到非常重要的理論並且應用這種理論發明各種偉大的或者重要的技術,那麼我們在討論過程中進行的這些活動,站在符號的角度,它就是“符號推理”。換言之,我們在討論能量和質量的關係的時候,符號E “隱藏”著這符號mc²

的關係,這個關係在其他人不能發現,但是愛因斯坦發現了,所以愛因斯坦能成為偉大的科學家,而我們不能。對我們普通人而言我們沒有能力去揭示事務內部的本質的機制,但我們可以從事物之間外部的表象來總結分析,從而去假設事物內部的執行規律,然後再用這個假設來解釋更多的外部現象。如果基於這種假設能夠比較完善的解釋事物之間淺顯的容易證實的關係,那麼這個假設就是“科學”的,這個研究方法就是科學的研究方法。

如果這些符號,不是英文字母,單詞,而是中文詞彙,比如陰,陽,金,木,水,火,土,天干地支,不可以嗎?當然可以,中醫的陰陽五行理論,正是這樣一套符號推理體系。

二、【藏像】理論

【解剖學】的困境

在古代,受限於科學技術的條件,我們不能直接揭示出一些事物的內部機制,但能夠用上面說的同樣的方式,從事物外部的表象之間的關係,來推導事物的內部機制。在中醫的語境中,這種方法理論,就是“藏像”理論。

百科詞條這樣解釋“藏像”:

“藏象”二字,首見於《素問·六節藏象論》。藏指藏於體內的內臟,象指表現於外的生理、病理現象。藏象包括各個內臟實體及其生理活動和病理變化表現於外的各種徵象。
藏象學說是研究人體各個臟腑的生理功能、病理變化及其相互關係的學說。它是在歷代醫家在醫療實踐的基礎上,在陰陽五行學說的指導下,概括總結而成的,是中醫學理論體系中極其重要的組成部分。

為什麼要用“藏像”理論去研究人體?

在西醫中,解剖學是一門很重要的學科,它是外科學的基礎,現在已經發展到了顯微外科學,解剖學通過將人體的組織,器官進行深入的解剖,尋找出人體的詳細構造結構。但是,這種對人體的研究方式,有一個先天的缺陷,人體是一部複雜的活的精密的“儀器”,不太可能對活的生命體進行解剖觀察,因此現有解剖學得出結論不足於真實解釋人體構造執行的規律。

黑盒測試與白盒測試

作為程式設計師,天天跟測試打交道,一定知道黑盒測試跟白盒測試的概念。大部分測試人員,都在做黑盒測試,即通過執行程式,在功能操作中發現你的bug,而不是反編譯你的程式,然後一行行閱讀程式碼,來分析尋找你的bug。作為開發人員的你,都不太可能通過僅閱讀自己的程式碼就發現所有bug,怎麼可能要求測試人員做到白盒測試呢?所以,黑盒測試,是一種被證明了的可行的測試方式,也是軟體工程中必須做的一個工作環節,如果說軟體工程是一種科學的工程學方法,你不能說黑盒測試不科學吧?

既然我們不能要求測試人員來做白盒測試,那麼就不要要求古代的醫生必須要會搞現在這樣的解剖才算是醫生了,他們通過對人體外表症狀和相關關係的分析研究,一樣能夠找到人體健康執行的規律。這種方法,就是“藏像”理論的研究方法。我們不必去活體解剖一個病人,看他內臟有什麼病變,我們通過中醫基礎理論的氣血經絡,觀察發現同一類疾病相關的人體外在的表現,推導此時人體內部臟腑功能的執行情況,然後再從這些情況來推匯出臟腑功能改變的關係,預測出疾病發展轉變的路徑,最後再通過人體外部表現出來的新的病症,來驗證這個理論推導的正確性。

扁鵲見蔡桓公

有一個故事,能夠很好的說明這個過程,這就是《扁鵲見蔡桓公》:

扁鵲見蔡桓公,立有間,扁鵲曰:“君有疾在腠理,不治將恐深。”桓侯曰:“寡人無疾。”扁鵲出,桓侯曰:“醫之好治不病以為功!”
居十日,扁鵲復見,曰:“君之病在肌膚,不治將益深。”桓侯不應。扁鵲出,桓侯又不悅。
居十日,扁鵲復見,曰:“君之病在腸胃,不治將益深。”桓侯又不應。扁鵲出,桓侯又不悅。
居十日,扁鵲望桓侯而還走。桓侯故使人問之,扁鵲曰:“疾在腠理,湯熨之所及也;在肌膚,針石之所及也;在腸胃,火齊之所及也;在骨髓,司命之所屬,無奈何也。今在骨髓,臣是以無請也。”
居五日,桓侯體痛,使人索扁鵲,已逃秦矣。桓侯遂死。

神醫扁鵲通過觀察蔡桓公外部的病症,就知道了蔡桓公此時所得何病,並且還能預知此病的演變發展,同時給出蔡桓公合適的治療方案。無奈蔡桓公煒疾忌醫,不治而亡。扁鵲的這個故事,他使用的方法正是中醫的"藏像"理論的方法。

小結

這兩篇文章是從程式設計師和軟體程式設計角度,來觀察解釋中醫理論的,本篇從變數的表象到變數的內部關係,探討了變數的易變性和不變性,並且由變數的不變性討論了符號推理的簡單原理,由這種推理方式說明了對於複雜問題的解決模式,這就是由表及裡問題分析解決模式,這種模式也是工程學中科學的工作方式,中醫使用的“藏像”理論,正是使用的這種模式。