小松鼠嚇了一跳,有了魔法眼鏡後,這世界看起來完全不一樣了

2013年8月5日 星期一

真相の方程式

圖為真夏方程式劇照
這是事故,還是殺人? 真相究竟是——
被當成意外死亡的屍體,以他殺重啟偵查。與政府對抗的群眾,與過往案件的牽連,充滿悲傷的疑團。交錯著殺意、親情、守護、罪惡感……各種人性掙扎,最後,又該由誰付出代價? 在這個炎熱的夏天像煙火一樣的記憶
 前幾天在 COSCUP 結束後,集結前往凱道時,有年輕的朋友問我說,像我這樣的六年級這個世代,對於洪仲丘這個事件的看法。
 身為一個專業級的 outlier,我不太有自信能代表其他人的想法,所以我反問他原因。 原來是因為他父母(六十多歲)有與他不同的看法。
社會上的確有一些與泛二十五萬人不同的聲音,比方像是這隻烏鴉銀正雄的言論等等。這些想法讓多數年輕朋友覺得不可思議、甚至以為是反串。


 前一陣子看了真夏方程式 小說,其中有一句話
「你討厭理科沒關係。不過我希望你記住這件事,『不知道就沒辦法』這種態度,有一天會害你犯下大錯。」
這句話是湯川學跟小朋友說的話(圖中兩人)。
哪個地方不死人?
起訴太陽好了。 
這些態度其實就是所謂的「不知道就沒有辦法 」,或者說長期以來這種態度養成的結果。

因為調查真相太複雜了,就當成是意外好了。
因為怕得罪人,不想知道真相,就當成是事故好了。
因為怕負責、就當成沒這件事好了。
因為不知道不然要怎麼訓練,就當成是沒辦法的事情好了。

類似這樣的態度你一定也有過。
回想一下這樣的經驗,然後想像一下,假如你毫無自覺,然後把這種態度當成理所當然,二十年後,你會變成怎麼樣的人?
電影預告
你會覺得太陽底下無新鮮事,這種東西以前就有過了啊!
也許不是毫無同情心,但你更害怕「改變」。
沒有探究原因、真相的習慣,你已經盲目耳聾了幾十年了,生活在充滿迷霧的世界中,每天沿著固定的路線活動。
一旦知道有人要改變這個世界的樣貌、吹散迷霧,已經看不到、聽不清楚的你,會不會感到驚慌害怕,找不到路?

甚至, 你會害怕你過去的人生都被否定掉?
我的意思是,過去這種事情一直在發生,你沒有作為、默許,
甚至可以說是某種程度的共犯,今天有人跳出來,不就顯得你過去很沒用嗎? (推薦參考東野圭吾的惡意 。不好意思,剛好這兩年東野圭吾讀比較多本。)







希望這樣解釋,可以讓年輕人了解一些老人的思路(雖然他們不見得意識到自己意識形成的過程)。

其實這樣的事件屢見不鮮,比方這也可以解釋陳為廷的禮貌問題(「太複雜的事情不懂,所以也沒辦法,但禮貌這個東西我可是小有研究喔」這樣的心態)


電影預告截圖
 一開始的文字,描述的是真夏方程式的故事,也是描述台灣這個夏天的故事。
在小說中,湯川學為了防止「某人的人生被扭曲」,決意揭開真相。
「任何問題一定會有答案。」
「但答案不見得能立刻導得出來。換成人生也是一樣。今後你會碰到很多無法立刻提出答案的問題。每一次煩惱都有價值,但沒有必要焦急想要找出答案,很多時候自己必須成長才找得到。所以人一定要學習要努力要不斷磨練自己。」
當你決定要開始追求答案時,答案不會自己跑出來找你。只有自己動手驗證、了解,答案才會是你的。
所以湯川學帶著小孩一起動手做實驗。
但科學有極限,人也有極限。找到答案的過程也許很難,也許辦不到,但像是湯川學這樣的科學家會告訴你,你不是孤單一個人,有很多人都跟你抱著同樣的問題,一起煩惱下去,直到找到答案為止。


 (鄉民關心你)

[COSCUP2013] Python, F#, Golang and Friends 投影片


我這次在 COSCUP 演講的投影片。


[COSCUP2013] Python, F#, Golang and Friends from weijr

當天因為時間改變,差了十分鐘,所以沒有把重點表達完整。

我主要想說的是,大多數想在 Python 做的邏輯流程,你都能直接在 F# 裡面用類似的思考流完成(Scala 也是)。
例外是 F# 中迴圈沒有 break,沒有 return,也沒有多重繼承。但習慣後就知道如何轉換。
反過來, F# 有了一些思考單元,在 Python 中則要被迫展開。
Go 則完全不同,如果你用 Python 的思考方式常常會不容易實作。通常你也不應該這樣做(雖然我之前就這樣做,但能做不表示要做,hack 本來就是要嘗試不該做的事)。
Go 的思考流跟 C 比較像,而且拿 C 的想法來寫 Go 會很輕鬆,因為可以寫得更簡潔。當然原本就是用 C 的想法寫 Python 的人就沒差(用 C++ 想法的人有差,物件導向)。


所以當你只常用一種語言的時候,思考其實是被限制住的。更可怕的是,你根本不會察覺這一點、根本不知道你失去什麼。

就像我在演講中舉的例子, 那些語言中只有絕對方位(東南西北),而沒有相對方位(前後左右)的人,有著絕佳的方位感。
一般語言習慣用相對方位的人,根本不知道自己失去了什麼。
(又如馬戲團被圈住的大象那個故事,或者語言中顏色名稱的種類)
所以不只要追求好的語言,有時甚至要刻意嘗試一些看似無用、怪異語言。
 

2013年7月2日 星期二

追求卓越 成功就會隨之而來


標題這句話來自電影三個傻瓜,是該片主角的名言。
在 PTT 電影板看了一些討論,意外發現,不管喜歡或討厭這部電影,幾乎沒有人真的懂這句話在講什麼,有一些人大致上模模糊糊了解,但一些關鍵點說得不是很精確。
比方下面引用某討論
: 看一部電影我通常都會想一下他想表達的是什麼  
: 三個傻瓜很明顯就是在諷刺教育體制的問題  
: 諷刺社會刻板印象與填鴨式教育中所培養出來的人 
  再說一次,導演想表達什麼大家都知道
  問題在於他的表現手法相當糟糕
: 為了考試而讀書(無聲屁)
  讀書是手段,考試是中間過程,功成名就賺大錢是 他的目的 當他的志向是如此,又怎麼能說他的方向是錯的呢?
  到頭來只是回到表面高尚的問題而已
不管正反兩方都沒有搞清楚那句話的意思,甚至還有人記成類似「追求自己想要的,成功就會隨之而來」。
先不論這句話是否正確,電影是否過於浮面膚淺,總要先了解這句話在說什麼吧!
我用下面這個實驗來說明(很遺憾,我找不到資料來源,就當成是個故事好了)。

有心理學家找一些人來做實驗,讓受試者做一些測驗,讓受試者們來比賽。想當然爾,名次好的會有獎品。

這些受試者被分成兩種狀況。
第一種是完全不讓他們知道其他受試者的目前成績或者任何資訊,只讓他們埋頭苦幹。
第二種,則是給他們即時的敵手資訊,包含做了幾題,得到幾分等等。

顯然有了競爭對手的得分、排名資訊,可以幫忙調整策略。 比方如果時間快到了,分數還差很多,顯然就需要冒險挑戰分數較多的題目,才能擠進得獎圈。
現實生活中,有大型比賽經驗的人,多少都會看一下別人積分,然後調整自己的策略吧。

所以第二種的受試者,明顯有利,看來實驗結果只告訴我們這些資訊的幫助有多大而已。
結果很意外,第一種的受試者反而表現的比第二種要好。
最簡單的解釋就是,這些額外的資訊反而會干擾受試者的表現。專心提昇自己的分數,反而更有效果。

當你的目標是世俗所謂成功的時候,就像老梗笑話講的一樣,「我不需要跑得比老虎快,只要比你快就好了」。你自然會想卡位、攻擊對手。因為你的焦點本來就是擊敗對手。
但是反過來,你的目標是提昇自我,成就偉大結果,那你的焦點會放在遠方的目標上,會放在自己身上,而不是對手身上。也只有這樣,你才有可能跑得比老虎快。

所以電影中無聲屁為了追求第一名,不只是自己唸書,而且還想辦法讓別人考不好。最後還千方百計的想要證明自己過得比藍丘好。

不過,以上只是單純解釋一下這句話。
不要忘了,電影中的所有學生都是有天份又努力的人,現實生活跟實驗條件也不完全一樣。

2013年7月1日 星期一

超人:鋼鐵英雄觀後感

(可能內含電影以及東野圭吾小說「時生」的情節)
到了我這個年齡,周圍的朋友都有了孩子。問及生下孩子的原因時,所有人的回答都是「順其自然」之類。但我更想知道的,是他們能否在孩子面前自信地問:「作為我們的孩子,你覺得高興嗎?」孩子是否會回以「我非常慶幸有你們這樣的父母」,其實是永遠的謎。我一直想解開這一謎團,這便是《時生》的源頭。——東野圭吾
小孩出生後,就很少進電影院了。上一次進電影院看的是賽德克巴萊。
昨天難得的去看了一場電影。因為很難得進電影院,所以選了應該有很多特效的超人來看。
最後的打鬥的確符合期待。令我意外的是,前半段的情節能打動我,讓我感動。這種感動有種似曾相似的感覺。回家回想了一陣子後,發覺原來近似於閱讀東野圭吾小說「時生」時的感動。
時生這部小說講的是主角的小孩患有天生疾病,即將去世前,穿越時空回到了主角年輕時,與主角相。
年輕時的父親與兒子經歷了一段旅程後,更加了解對方,而且一同成長了。
主角本身無可避免的有自身的包袱。他是一個從小被遺棄的養子,對自己的生母不諒解。
故事主軸,圍繞著孩子是父母的未來這回事(包含生父母以及養父母)。
「未來不僅僅是明天而已」。
某種意義上來說,這個未來包含了父母對於理想的寄託。

有興趣的話,可以找小說來看,或者搜尋一下網路上的書評,因為我的描述過於精簡而且不精確。

從這個角度來看「超人:鋼鐵英雄」的劇情,就很容易了解了(我情節有可能記錯,不過以下是我的理解)。
開頭的一大段,說的就是超人父親 Jor-El 如何將未來寄託於超人(Kar-El) 的故事。
Jor-El 認為有希望、有不同的可能性才有未來。除了象徵極理論意義外,超人的母星也實際上因為超人種族採取僵化的制度而即將滅亡。
很多小朋友會吐 Jor-El 很腦殘的被 Zod 刺死。其實 Jor-El 的未來都已經寄託在隨著小艇出發前往地球的 Kar-El 身上了,他也認為自己和所有這個星球上的人早已死了,所以自己的生命根本不重要了。
打個比方就像是你跟對手下一盤很重要的棋,最後你贏了,把王吃掉,比賽結束。你會在意對手惱羞成怒,翻桌把棋盤砸爛嗎?
這是一個標準的別人笑我太腦殘,我笑他人看不穿的典型範例。
當然 Jor-El 大概沒料到電影為了曾增加緊張氣氛,讓 Zod 命令屬下攻擊小艇,所以其實他還沒有確定成功。不過就算他還活著,也沒有辦法改阻止 Zod 他們,他已經達到他能完成的最好結果了。
電影中多次強調 Jor-El 夫婦認定克里普頓星上的人都已經死了。不是因為星球即將爆炸(後來他跟實際上還活著的 Zod 說過同樣的話),星球爆炸只是一個「果」而已。而是因為他們因為僵化的社會、文化,而失去了希望與未來。
「未來不僅僅是明天而已」。用 Jor-El 的話來講,就是活著不僅僅是活著而已。

另外一個被狂吐的點就是超人的養父 Jonathan Kent 之死。

Jonathan 時常叮嚀 Clark 不要顯露他的能力,因為 the world is not ready.
很多人會覺得你就像正常的超人一樣不就好了?到處救救人,成為超級英雄,大家不就會相信你了?搞什麼悲情捨身救狗,簡直太腦殘了。
其實捨身這件事情,有點像是干將莫邪的捨身煉劍,有種藝術上的必須性。 Jonathan 心中的 Clark 就是將來必有大成的偉大寶劍一樣。原料是有了,但是靈魂還沒有完善。
如同 Jor-El 一樣,Jonathan 也將 Clark 視為未來,自己信念的延續。
Jonathan 問 Clark,難道種種田不也是幫助人嗎?為什麼一定要用超能力來救人?
他的意思並不是要 Clark 待在小鎮一輩子不出去。
他的問題就只是一個問題。 如果 Clark 連這麼簡單的問題都無法很有信心、很清楚的回答,那他還沒有準備好。
世界還沒準備好沒錯,但世界永遠也不會準備好。 問題不在於世界是不是準備好了,而是你有沒有準備好面對這個不理想的世界。
可能有人會說,能力那麼強,是要準備個什麼啊。
打個比方,每天能治好一個人的疾病,什麼病都能治好。這能力夠強了吧。但你要怎麼決定哪一個人該活?先不論到時候黑道特務什麼的把你抓走,脅迫你這回事。你先要面對的是自己的良心,我真的選擇了最該幫助的人了嗎?
好吧,你可能會說,這是能力不夠強的緣故。那讓我加強一下你的能力。你每天可以選擇跟以前一樣救一個人,或者救最多十個人,但之後三十天都不能救人。這時候當有人求你多再救一兩個人的時候,之前你可以攤手說抱歉,剛才用掉了,明天請早。現在要怎麼說?因為你還不夠慘,一個月內還會有比你更需要幫助的人的機率是 0.673。
要不要再讓你更強一點,可以選擇一天都不救人,把名額存起來,可以給你利息喔!
能力越強,煩惱會越多。心理如果不夠成熟,最簡單的作法就是完全把良心丟掉,很簡單的訂個價格,一千萬起跳下標,價高者得。 額外名額三億起跳。
對巴士見死不救,也許有點慘忍。但重點倒不是救或不救,而是他是否有辦法承擔自己的決定。


更何況,前面還只是自己內心部份。直到電影最後,軍方都還對他不完全信任。
所以小時候的 Clark 會害怕的把自己關起來,說世界太大了。他的養母給了他不錯的回答,後來牧師也給他不錯的回答。他的養父也以生命做例子,告訴他堅守自己的信念,可以到怎麼樣的地步。但養父不直接給他答案,因為只有他自己去找,才能找到自己的答案、自己的定位(而不是被指定的答案,被指定的角色。不然就像原克利普頓星人一樣了)。
當然很離譜的是, Clark 居然能遇到這種干將莫邪等級的養父母。也許就像時生一樣吧,父母其實也會與小孩一同成長。

雖然情節還是有許多不完美處,深度上,我也比較喜歡「時生」給我的感動,但看的時候,的確能趕受到電影中傳達的情感。

2013年6月24日 星期一

ㄈㄈ尺正夯

 男人對 CCR 的恩怨情仇不是一天兩天的事情,我老爸年輕的時候,就做過拿石頭丟路上散步的 CCR 情侶這種熱血愛國的事情。
不過還在用 LKK 這種詞的 LKK 可能不太了解這些新詞,所以下面做個解釋整理。

  • CAR: Cross Automobile Romance 的簡寫,以前叫做車震。少數人當成 Cross Age Romance,但現在通常用 Cross Generation Romance。
  • CBR: Cross Brotherhood Romance 的簡寫,超越兄弟情誼的羅曼史。可視為甲甲或 BL的通稱。
  • CCR: Cross Culture Romance 的簡寫,有些人堅持稱為 ㄈㄈ尺(因為平常沒有其他機會展現過人的機智與知識)。
  • CDR: Cross Dimension Romance 的簡寫。通常是指二次元及三次元之間的戀情。由於跨次元通訊技術相當困難,所以通常是單方向。
  • CER: Cross Evolution Romance 的簡寫。Ex: 新聞
當然 CFR - CZR 也都有,不過由上面的舉例,相信大家應該都能舉一反三。
由於 PTT 上只有 CAR 和 CCR 有板,顯然不公,所以常常引起其他族群嫉妒與攻擊。

2013年5月26日 星期日

我的 PyCon Taiwan 2013 投影片

2013年4月27日 星期六

用正常人的方式在 Go 裡面做大數運算

Go 裡面沒有 Operator Overloading 的功能,所以雖然內建 Big Integer,但長一點的計算會變得很醜,比方說你要算個 (5*2+3*6)%10 好了,樣子就會有點像是
a := big.NewInt(5)
a.Mul(a, big.NewInt(2))
b := big.NewInt(3)
b.Mul(a, big.NewInt(6))
a.Add(a, b)
a.Rem(a, big.NewInt(10))
更複雜一點的算式就更難懂了。其他像是矩陣、分數、向量、多項式或者任何自訂的計算 type,下場都一樣悲慘。
底下是利用內建的 parser,壤我們可以用正常人的語言在 Go 裡面計算。
雖然有人會說什麼失去了編譯時期靜態檢查的特性,但真要比除錯,寫個 E("(5*2+3*6)%10") 絕對比上面一串外星文出錯的機會比較小一點。
可以到 http://play.golang.org/p/Toqkc4XY2J玩玩看。