Linux, 工作, 生活, 家人

Embedded, Linux

Voodoo Programming

Voodoo Programming 中文又稱巫毒編程, 我在一個偶然的機會下看到這個名詞

原意是講, 不知道程式怎麼運作, 結果就下去寫程式, 然後就不會動了, 或是得到一個可以動,
但是不知道為什麼會動的結果… 後來也有引申 compile 第一次不過, compile 第二次就過的意思..

不過我比較喜歡這個解釋

當遇到程式一直跑不出來又找不到原因, 感覺很鬱卒時就隨意改些程式的變數之類, 期望程式可以正常跑.

搞 Embedded Linux 時, 常常碰到一些靈異狀況, 很多莫名奇妙的情形, 看 Code 也不見得能夠了解為什麼,
甚至常常程式改寫之後, 某一個功能就爛了.
這時候就會自己開始亂改程式, 期望他能夠出現我要的結果, 或是前後亂動, 甚至是這種指令都出來了
“# mv .config .. ; make mrproper ; mv ../.config . ; make dep ; make zImage”
我想 Linux 在修改程式後, 期望大家都要 make clean 再重編一次, 有時候或許就是這種 Voodoo Programming 發生功效了吧.

有時碰到看起來程式都對, 只是就是會發生問題的東西, 心中真的是有一股咒怨, 連寫出來的 code 都帶有怨氣, 例如:

int fuckvar;
char *shitstr;
char damearray[SHITNUM]; …….
int *asshole(…..)

整個程式就是一種詛咒, 這時候的 Programmer 己經變成了 Voodoo Programmer XD

能不能預防這種事情發生呢? 以我做 Embedded 的經驗來說, 還算是很難, 畢竟 Embedded Linux 常常碰到一些奇怪的狀況,
有可能是 IC 發生問題, 像是電壓輸出的問題
有可能是 IC 內的某一個 IP 出問題
或是有可能是版上的某些線路, 例如 PCI 的線路拉出來都是一樣的, 為什麼 A 會, B 不會.
甚至是 Code 一樣, Performance 都不一樣.

這時候就是靠非常有經驗的 Programmer 去解決這樣奇怪的問題, 或是抽絲剝繭, 一步一步查出問題
雖然是苦功夫, 卻是解決問題的好方法.

發佈留言