21 3月 2012

[隱因] 一臂之遙.天涯海角

記得退伍後考上研究所那年,一位之前大學時就認識的教授找我到辦公室談話。印象中,是乎有一段對話是教授提到希望這兩年多不見,我能做出比大學時更好的表現,不要再像大學時答出那種答案,犯下那些錯誤。

我答道:「我還是不覺得我當時的答案是錯的。但是我更希望下次教授覺得我的答案很離譜的時候,可以問我為什麼會這麼做。」

Don't do random. (任何行事背後必有原因) 一直是我的信念!

教授的臉部線條緊繃了一會兒,吩咐我如果沒有其他的事的話,可以離開了。(對啊…我就是這麼白目…怎麼辦…)

今天在調整 Clip Recorder 這支程式的錄音節奏時,為了兼顧到 MS Windows 的跨平台需求,把在 Windows 環境測試中一直出錯的多執行緒的部份拿掉,改成一條線執行到底的架構。

程式的介面長這個樣子:

畫面中的紅黃綠信號燈會依序閃三次,受試者則要在綠燈亮的時候對著麥克麥念出在中間空白處的字的讀音。

預設的節奏是每個燈號會亮一秒,然後熄掉,換下一個燈號。所以程式的邏輯很簡單,也非常好讀。基本上…大概長這個樣子:

紅燈亮
  停一秒
黃燈亮
  停一秒
開啟麥克風
綠燈亮同時開始錄音
 停一秒

如此一來,在綠燈亮的那一秒鐘裡,受試者就有一秒鐘的時間可以發音。如果用本來的多執行緒的架構的話,「開始錄音」的那一秒和「綠燈亮」以後的「停一秒」是同一時間發生的。所以綠燈熄的時候,錄音也會剛好結束。

但因為現在改成只有單一執行緒,所以就變成了開啟麥克風以後,開始錄了一秒的音,麥克風關閉,綠燈才亮,然後又停了一秒。

這時候不管受試者念什麼,都不會被收音了。

考慮良久,再加上 CPU 速度和錄音以後寫入硬碟的速度的因素後,把程式碼改成這樣:

紅燈亮
  停 1.3 秒
黃燈亮
  開啟麥克風 (CPU 大概花了 0.3 秒)
  停 1 秒
綠燈亮
 開始錄音 (含硬碟寫入,大概花了 1.2 秒)
 停 0.1 秒。

時間算起來變得漂亮多了,雖然三個燈號的顯示時間好像設定得不一樣,可是因為每個動作的總時長是一樣的,所以在視覺上完全看不出來背後的設定不同。

但,不可否認的是,麥克風的控制散佈得四處都是…整個看起來就讓人覺得「很醜」。

我突然想到…也許,當別人做出一些我們覺得很糟糕的事的時候,我們會立刻幫他貼上標籤「他這麼做,是因為他就是這麼差勁的人!」就像這段程式寫得這麼亂,寫程式的那個人一定是邏輯有問題或是頭腦不清楚。

但如果,只是如果…有那個機會可以問問看,「你為什麼會這麼做?」就像我自問「你為什麼把程式寫得這麼醜?」一樣。也許…那個隱藏在表象背後的原因,能給我們帶來心靈上莫大的緩解也不一定。

人和人之間,往往即使是只隔著一伸手就能觸及的距離,卻因為少問了一個問題,自作主張地透過有色眼光下註解,而設下了天涯海角的結界吧。

0 意見:

張貼留言