本文僅代表我的個人觀點,歡迎各位批評與指正。
如果有人說上帝是全能的,似乎會被別人笑死。為啥呢,因為似乎“上帝沒法創造一個他自己都搬不動的石頭”。這問題在哲學上引起過廣泛的思考。但是如果是一個程序員,似乎完全不會糾結這個問題。上帝必需是全能的。為什么呢?因為,上帝擁有命名權,所有人對語言的解釋權只要在上帝手里一切都好辦。
“上帝能否創造一個他自己都搬不動的石頭?”,用程序員的角度來思考,把這句話斷個句:上帝能否創造一個“他自己都搬不動的石頭”?答案當然是能啦,上帝隨便找個石頭,把他改名成“他自己都搬不動的石頭”。恩,無論人類怎么表述這句話,只要上帝稍稍改改名就行了。如果拿中國的來說事呢?
“上帝能夠畫一個方的圓嗎?”當然也可以啦,程序員表示完全木有壓力啊。計算機是不知道圓是什么形狀的,那么無論我是把一個矩形定義為圓(Rectangle circle = new Rectangle();),還是把一個圓定義為矩形(Circle rectangle = new Circle();),這都是成立的。
所以說,創造者從某種意義上來說是永遠全能的。因為,他能夠掌握被創造者對語言和邏輯的理解,即時是再荒謬的語言,創造者也可以通過更改對語言的語素和語義的理解而達成任何一個“凡人”看上去無法理解的命題。程序員作為程序的創造者和實現者,對於自己的某個程序,程序員也應該是全能的。如果使用這種全能性,就成了程序員必修的一門功課。
使用全能悖論往往可以給一些人造成不小的麻煩。比如,我常做的.net應用程序,這貨有個工具叫Reflector,反編譯代碼完全無壓力有木有啊。有些程序員使用花指令,混淆變量名的辦法來阻止我們閱讀源代碼。這也就是全能悖論的一種應用。但是,我更喜歡的就是使用別人先入為主的辦法,把所有類的名字改一下,改的有意義但是又無法組合的情況就可以了。因為,即使是花指令也是有一定的結構,而邏輯無法理解的變量名是無法阻止我閱讀源代碼的。但是,一個有邏輯意義的單詞往往可以讓閱讀代碼的人痛不欲生,由其是關鍵類名的名稱改變。
還記得說慌的最高境界嗎?十名話里有一句是假的其它幾句是真的,這才是最高境界。而阻止別人閱讀代碼的最好辦法,也不外乎就是如此吧。恩畫一個正方形的圓。
public class Circle
{
public int r
{
get;
set;
}
public void Draw()
{
int w = 2 * Math.Cos(Math.PI / 4);
//Draw
}
}
因為只有一個思想,所以也沒有細細的去寫那個代碼,但是 我想即時是使用畫圓的方法也可以畫出來吧,本身嘛,一個圓的內切正方形只有一個,這個其實不算什么。但是,由此可以引發的其它感想還是蠻不少的。恩最后,我想說的是:
今天,你全能了嗎?
