2015年5月5日 星期二

回應「為什麼很多人推薦 Ruby 」。在知乎寫的第一篇文章

這問題我有把握:因為 Ruby 滿足了人性較深的需求:開心。

為什麼開心?因為「親切」與「幽默」。

為什麼擁有這些特質,因為我私心認為 Ruby 是很強化人性(良善層面,如整潔、愉悅、互助)的語言。

這一切,令一些人深信,Ruby is the better language.

許多人從實用的角度切入,都很有參考價值,但我想從「使用 Ruby 很開心」這種人性點來切看看。雖說主要是為了自己開心,不過我覺得,很多事物都可以用人性面解釋,洞察會更深刻,或者說,比較能看見「隱藏世界的邏輯」(哪位牛人說的恕忘)

我想,正如人買愛車,尋找人生伴侶,不見得都考慮實用性最強或CP值最高的,而是因為:開心。

我們不一定明講,也許在解釋我們的決定時,請像用用比較「客觀」的標準來暗示他人,自己的理性與可靠。

不過啊,我們心底的小孩,還是很希望開開心心的呀。

首先(講完了很長的引言後)稍微介紹自己/答題的背景:最近開始學 ruby 。用過c, perl 與 python ,用過超過十種程式語言寫數十到數百行程式。我的簡潔性越來越挑剔。不熟抽象層次高的編程技術,如 OO, FP。因此不是大牛。但由於工作允許我挑選自己愛的程式語言(檯面原因:新、開發速度快、少 bug;深層原因:爽),逐漸開始熟悉學新語言,篳路藍縷卻樂此不疲的感覺。所以算頭異牛吧,哈哈!

我的背景對於回答這個問題的價值在於:可以脫離對現實社會的適應度等利害關係的考量,純粹就「一個人使用程式語言的感受」來回答這個問題,好比人交朋友,學校裡的朋友交心,最深刻最觸動心弦,而出社會交的就難免利益了,駁雜了。

以下列出我對 Ruby 為何令人開心的思考

1. 根本原因:Ruby 的監護人(我喜歡這個詞)樂於助人。

a. 監護人非常重要:正如公司的領導人品格對公司影響巨大,考慮程式語言,就不能忽略他的監護人怎樣維護這個語言。
b. 比如 GvR 監護 Python 語言,產生「開明專制」的效應(PEP 提出後,最終生殺大權在 GvR 手上),意思是這個語言很可能不會滿足每一個人的期待,但會滿足 GvR 心目中對好語言的期待。既然 GvR 是經驗豐富的編程者,他心目中的好語言大概不會太差。

可以說,Python 真的不是太差的語言呢^_^

我認為 Matz 監護 Ruby 的模式,很可能在某方面也類似 Python 。比如,監護人的喜好與善意反映在語言的特質與演進上。有意思的是, Matz 曾說一段話(請原諒我找不到原文),大意是:我打造的是我心目中理想的語言。

Matz 的處世是溫和的。引用他說的一段話:Sometimes you’ll have a hostile person come into the community. When I have a difficult conversation with someone, I have a rule: I remember there must be a reason for them to be hostile.

他是在闡釋 the community is Ruby's greatest asset 時,有關的問題時談到這段話的,這意味到,以上答案說明了他與社群互動時,經常想到/運用以上上的原則。這可以佐證,他是善於與人互動的。

我想, Ruby 其餘的吉光片羽,或多或少,都來自於 Matz 的品格吧!

我非常想探究,這種品格與日本文化的關聯性,但那是另一個課題了。

2. 用 Ruby == 開心。

這個印象得自於
a. why the lucky stuff 那本引人 Ruby(動詞) 的藝術作品。不知怎麼稱呼他,說他是程式語言入門書,他的美學觸角遠廣於此,我個人把他當作藝術品看待,因為它充滿創意,very stylish,奇書一本。

b. Pragmatic BookShelf 出的 Ruby 書 Programming Ruby 2nd Edition 中譯版。很明顯感覺到,作者麼寫書時非常開心的,因此全書帶有自然的幽默感(不刻意搞笑),看的時候很順心。比起看 C 或 Java 書時經常想睡覺,這種體驗是很妙的。我看的是翻譯本,有些地方卡卡的,一些妙處翻不出來可以諒解。但還是嗅得出愉悅感。

插播(why the lucky stuff 很愛幹的事,他的插播可比正文長多了):如果一項工具能讓 user 經常發笑,它的價值真是無可限量啊!有多少人一邊工作一邊經常發笑,還可以賺錢的??

如果我沒看過藝術品&幽默工具書,用起 Ruby 來也許不會如此開心。

另外,能夠讓 user 如此開心地一邊 Ruby 一邊靈感大爆發/幽默處處開,這東東真的神啊!

3. 隨興意味:Ruby gem (功能單位,加gem等於加一掛功能進去) 的品質感覺上比較不嚴謹,偶有過時或小 bug 未修,於是得自己動手整理。

聽起來好像不妙,但也不一定。這樣說吧,想像一群熱心的朋友介紹你用一個好東西,也許東西不是排名頂尖,或者其設計沒有到爐火純青的程度,也許越用越發現一些小瑕疵。比如常有小bug;library coverage小,總有特殊需求照顧不到要DIY或上下求索;語法美麗程度不如小眾語言REBOL。但是,「想到朋友們的笑容,一用它,自己的臉上也泛起了微笑啊」。這種感覺。

在某種程度上,這可以解釋,為什麼 Ruby 擁有活躍的 community 。當然必定有其他因素,可惜我沒有參加 community ,無從分析。

幸好 Ruby 在 DIY 修理方面挺很友善,open source(可改!) ,直譯式(易改!!),而且 class 啦 object 啦可以隨興加東西進去(鼓勵改!!!),其妙處我體會不深,但既然寫書的人很開心地玩了給我看,我就笑笑地敞開心胸接受:雖然我還一頭霧水,但 meta programming 應該很好用,醬子。

談到 open source ,忍不住一提,他是有著強烈互助性格的一種文化。這對 Ruby 達致的人性層面,相信功不可沒啊。

4. 寫 Ruby 時,常感覺到,原來那個最簡潔的答案就是最適切的答案。這一點相當妙,大概暗示著它的設計水準相當高吧!?

5. Ruby 的作者 Matz 曾說: Ruby 像人體一樣,看起來簡單,內部卻極之複雜!這句話我當場心悅誠服了,因為簡單又好用的東西,看起來平凡,但常常要納入大量智慧才能完成的。

原文: Ruby is simple in appearance, but is very complex inside, just like our human body.  https://www.ruby-lang.org/en/about/

進一步考察, 以下這段介紹 Matz 的話,He has often said that he is “trying to make Ruby natural, not simple,” in a way that mirrors life.

如果由於 matz 孜孜矻矻, Ruby 真的有做到 natural ,就比較不該用 terse 或 simple 去形容,而是 natural to use ,好比人們使用雙手,有以下特徵:

a. 易上手
b. 上手後發揮空間大
c. 使用時行雲流水,妙趣橫生

7. Ruby 只在某些地方用括號,不像 C, C#, Java 類語言,以及考慮到熟悉「大括號語言」 user 接納程度的語言,保留大括號特性。因此看起來清爽,好懂,有點到傻瓜的程度,偷偷地說,看起來不夠 geek ,無法激起 mm 崇拜 牛人 的慾望,哈哈。但不考慮人生中無所不在的性考量的話,光就寫程式本身的樂趣, Ruby 是難得一見唷。

回到正題,我想說的是,如果要舉手說舉手就好,要坐下說坐下就好,也許有人喜歡說成 { Action RaiseHand (void right) ; } 但,說成 RaiseHand  :right,也相當不錯啊。

8. 希望:既然很多人說它簡單,那碰到困難時,會想說,如果克服這個,其他就簡單了吧(事實是,坑很多的,可是人性是極喜愛「希望」啊!而且,盼望以後會更好,加上這個盼望很可能實現的話,多麼開心呀!這是快樂的重要泉源唷!)

來 Meta 一下吧!這個回答,我自己喜歡。是期望像「元問題求索者」那樣,將答題視為一種最適切,「間中關聯性」(我又辭窮了只好自鑄怪詞)遠超過問答的思維過程,甚至能發明出新的語言(表達方式,form),寫出一種唯獨適配該問題的「thingy; DSL」來。但,DSL有點難的,只能說這篇文章有點「Ruby風」就是,而且保證全新角度觀照。反正目前先求大家開心就好,如果這篇文有讓你笑了一兩聲,煩請出個聲呀^_^

沒有留言:

張貼留言