2011年10月18日 星期二


遇到一個跟自己很相似的人,當然不是指面貌,而是個性
那算是最「現實」的自己吧,而我沒辦法到那麼現實
所以我說「相似」,而不是「完全一樣」
這讓我有些恐懼,原來趨近於「現實」的我會長那樣
或許這個人的出現是給我一個警惕

看到小橘和雅卿提到如果一開始Source Code就出錯的觀點
老實說,我沒想過這個問題
正確說法是,我從一開始就沒有假設過Source Code會是錯誤的情況
如果加上這個情況,我想再複雜一點
當然,這份Source Code只能有語意錯誤,不能有語法錯誤

把運算當作是人與人之間的行為,把變數當作人本身的想法
因此,變數的值不定時,運算的結果自然也會不同
當人際關係越廣時,所可能產生的運算就越多,變數也越多
而這份Source Code也會隨之成長而龐大

在這份龐大的Source Code中,自己也是一個變數
你要讓自己保持著何種「想法」,才會讓Source Code執行出你要得結果?
不透過Compiler分析,你只能猜
而猜中的機率比被隕石打中的機率還低
那猜錯呢?錯就只能一路錯下去,沒有重來的餘地

除非你穿插在這份Source Code各的地方,可以隨時改變
可是按照時間和空間的概念來看,你是不可能在同一段時間內身處多個地方
而這也是現實Source Code和虛擬Source Code的差異
所以你不做分析,通常猜錯就只能一路看著錯誤而懊悔

那麼現實的Compiler又是什麼?就是你決定想法前的「思考」
Compiler要做什麼?他必須去考慮到每個變數可能出現的值
也必須考慮可能產生的結果,而結果對後面影響是什麼
當然也會有一部分的Source Code是沒影響的,像就是你不熟的朋友

而這份程式碼不會一次就寫完,因為你沒辦法一次過完一輩子
你一定是每天活一點,把這些一點累積成一輩子
換句話說,你必須每天去做這些分析,你不可能一次分析一整個人生
當然你也可以做那種大略性的分析,而這種分析多少都會有誤差,至於大小沒人知道
而能接受誤差的有多少人,也沒人清楚

Compiler的分析當然需要一些資訊的提供才有辦法做
而提供這些資訊的,當然就是自己
至於資訊從何處來,我想就是從自己身邊的人
除非會影響你結果的變數不在你身邊,那就另當別論

試想一下,如果自己是一個結構的變數呢?
這並不表示你可以同一時間存在多個地方,而是表示有更多的變數為你所用
因此,你也存在更大的機率可以引導這份Source Code執行出你想要得結果
所以我想,任何人都不得不承認Compiler是一門偉大的學問

「我以為我會被困在這用淚水建立的牢籠一輩子。」

沒有留言:

看到Facebook上,提醒我幾年前的貼文,裡面包含了一張明信片  我打開位於左手邊最上層的抽屜,裡面有三張明信片,三張都是同一人寄來 其中一張,就是Facebook提醒我的 我把三張明信片都拿出來,在手上端詳了一陣子 他們分別來自2016的日本,2017的冰島,以及2018的...