星期一, 2月 18, 2008

唸病理

之前問書卷學長,進醫院前應該要複習什麼,學長說最好把病理複習一次,所以這幾天就乖乖的在家唸病理。這次複習雖然速度很慢(假期 + 沒有考試=.=),不過在五上真共筆海轟炸過後,頭腦強化加上學了不少實際疾病的介紹和治療,回頭再看病理,那種不知道從何背起,完全背不完的茫然感就少很多,但讀病理還是有種拿頭在牆上撞的感覺,我很好奇班上那些能把Robbins唸完1/3的強者腦子到底是什麼做的....

之前看電腦書裡面提到除錯,突然間靈光一閃,感到病理和除錯也有相似之處,除錯高手除錯,是根據經驗,按照發生率高低窮舉bug的可能位置,然後一一檢查、排除最後把bug弄好。這和醫生必須根據症狀,按照發生率由高到低舉出可能的病變,然後一一檢查和排除類似。要成為優秀的工程師而非code typist,不能把自己限定於一樣技術,必須具備寬廣的視野,知識涵蓋面必須要廣,才能對自己面對的東西有深度的理解,以及真正擁有解決問題的能力。當醫生不想當庸醫的話也是必須鑽研人體各個子構造。從這點來說,當醫生幫病人除錯和當工程師幫程式除錯也不是沒有相似之處。

但當醫生和當工程師還是有差。第一,工程師維護的程式,一般來說都有已知理論作設計依據,作者可能會留註解,沒註解或弄不懂也有可能問作者。醫生維護的人體,系統設計理論沒人知道。看的也不是原始碼,而是逆向工程弄出的dump code甚至假設出來的pseudocode,對設計有疑問也沒辦法問作者(甚至有沒有一個全知全能的作者設計了人體都是疑問)。自己拿了一團漿糊在那邊瞎摸,實在不是很有趣。

第二,因為人體沒有設計文件或原始碼,只有用土製工具弄出的dump code。所以讀醫書就像讀dump code還有一大堆可讀性超低的臨時註解,醫學研究則是替爛爛的dump code產生臨時註解的過程。除此之外,就算是研究機器碼和組語,一般CPU至少會附個指令集介紹或datasheet之類的東西,人體連指令集都要自己去推,沒有設計文件解釋大腦到底接受哪些input,也沒有文件說大腦pin腳要怎麼接才能和各個器官正確連線。可維護性、可讀性再一次大扣分。

最後一方面,當工程師可以自己設計系統,當醫生修改人體,卻相當於硬改沒人懂的萬年binary code,有時候改一改甚至side effect還要二十年後才能發現,所以每次有人對人體做了什麼修改,還要經過三階段的人體實驗降低side effect發生的機率才能在SVN上按commit。所以當醫生也沒什麼設計的戲份,光是避免side effect和在法庭上舉證自己沒有製造side effect就可以用光心力了,創造的樂趣少很多。

寫那麼多,想到當醫生唯一一個好處,就是轉職研究組語或是維護爛code或許會有出乎意料的戰鬥力,上次讀組語已經是國小的事情,改天來讀個Win32組語試試XD。除此之外,以後碰到對工程師自介的時候,搞不好我會說自己就讀於萬年爛code除錯學系,一語道破自己的研究性質XD

讀個鳥病理可以寫這麼多,我一定是讀到病了:( 全文連結

0 意見: