這問題我有把握:因為 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風」就是,而且保證全新角度觀照。反正目前先求大家開心就好,如果這篇文有讓你笑了一兩聲,煩請出個聲呀^_^
Para ‧愛聖經‧Coding 工
2015年5月5日 星期二
2015年3月28日 星期六
Trello : 威能巨大的二維 checklist
-- Trello 之於 Check List ,猶如二維條碼之於一維條碼 --
目標聽眾:對使用電子產品管理個人事務有興趣的人、KanBan 愛好者、喜愛以抽象概念討論事情的人、喜愛高知識密度文章的人、不介意無圖文章的人、喜歡看人舞文弄墨的人、隨意看看感覺一下文氣就滿足的人。
Organization !
聖經說,上帝是有條有理的。聖經中的哥林多前書14:33,40:“上帝不是要人混亂,而是要人和諧。”
它的概念基本上是樹狀的:組織(Organization)作頂,一組多板,一版多卡,一卡多物。
組:Organization
板:Board
卡:Card
物:我自作主張稱他為Object ,包括 description, checklist, attachment, comments 以及動作列表等
[Todo: Insert User Case Here]
Trello 到底有甚麼特色?
1. 二維度list:個人認為,這是killer所以killer的地方。目前電腦使用的螢幕,基本上是二維的。因此做出二維list,看來天經地義,但效果非常宏大,可以用發明輪子做比喻:輪子的概念,做法都不複雜,把木頭削成圓形就是,但輪子的發明卻是人類歷史上的重要事件。正如二維條碼能儲存的資訊量(數千字)遠大於傳統的一維條碼(數十字),二維 list 能組織的訊息數也遠多於一維 list 。比如 KanBan,基本上是二維 list 的應用:許多流程同時在 go ,但以並列方式呈現,一目瞭然。這一目瞭然就是 trello 以及其他 KanBan 應用的主要價值所在。
必須一目瞭然的事件,都要包含在 trello 的一個 board 中,最多二維。關於一目瞭然,只用二維夠嗎?如果 KanBan (Toyota使用的工作管理系統) 的二維足以容納一個企業中(至少部分部門)的龐雜任務,二維應該是足夠的。
[User Case 2]
[User Case 3]
多維工作:介面本身容納兩個維度,透過切換 board 的簡易性,或許再吃下一個維度(也許算半個就好,因為他是隱性的);將 checklist 隱藏在 card 中,做為第四個維度;因此,除非你的需求是三個維度通通顯示出來(嚇死人了),否則,二維度介面非常理想。
4. 隱藏複雜度
資訊有簡單也有複雜。簡單如「吃午餐」或「使用 trello 進階功能」一行解決,複雜如學校作業或公司email/公文,圖文並茂加附件,主管同事老師的comment。這些都被隱藏在 trello 的 card 介面裏頭。也許叫他 package 是比較接近實況,但就介面上,確實就只是張卡片一行字。簡潔呀!!
目標聽眾:對使用電子產品管理個人事務有興趣的人、KanBan 愛好者、喜愛以抽象概念討論事情的人、喜愛高知識密度文章的人、不介意無圖文章的人、喜歡看人舞文弄墨的人、隨意看看感覺一下文氣就滿足的人。
Organization !
聖經說,上帝是有條有理的。聖經中的哥林多前書14:33,40:“上帝不是要人混亂,而是要人和諧。”
和諧牽涉到秩序,牽涉到有條有理地安排事情。
作為耶和華上帝的子民,深深體會到,和諧跟秩序,是快樂生活的不可或缺的要素。
不論你是不是基督徒,也許你也意識到,井然有序的生活,帶給我們不少安定感,也不容易因為突發狀況而方寸大亂。
做為一個資訊工具的重度使用者,自然是去思考如何以資訊工具來管理生活的。
(是誰說的,程式設計就是在控制複雜度,意思是盡力把複雜的事情簡單地處理完畢,或者砍掉複雜的事情,也就是說,簡化生活。其實,人生亦若是啊!我推薦後者遠過於前者,前者是人缺少謙遜的證明,後者則是聖經提倡的人生智慧)
這邊介紹一個網路服務,叫做 trello。它的精神,我認為,就在於「大幅控制複雜度」。稍微定量一點說,就是「使用 trello 處理資訊的量/ 使用 trello 付出的心力」,是相當大的,俗話說 CP值甚高也。
它的概念基本上是樹狀的:組織(Organization)作頂,一組多板,一版多卡,一卡多物。
組:Organization
板:Board
卡:Card
物:我自作主張稱他為Object ,包括 description, checklist, attachment, comments 以及動作列表等
[Todo: Insert User Case Here]
Trello 到底有甚麼特色?
1. 二維度list:個人認為,這是killer所以killer的地方。目前電腦使用的螢幕,基本上是二維的。因此做出二維list,看來天經地義,但效果非常宏大,可以用發明輪子做比喻:輪子的概念,做法都不複雜,把木頭削成圓形就是,但輪子的發明卻是人類歷史上的重要事件。正如二維條碼能儲存的資訊量(數千字)遠大於傳統的一維條碼(數十字),二維 list 能組織的訊息數也遠多於一維 list 。比如 KanBan,基本上是二維 list 的應用:許多流程同時在 go ,但以並列方式呈現,一目瞭然。這一目瞭然就是 trello 以及其他 KanBan 應用的主要價值所在。
必須一目瞭然的事件,都要包含在 trello 的一個 board 中,最多二維。關於一目瞭然,只用二維夠嗎?如果 KanBan (Toyota使用的工作管理系統) 的二維足以容納一個企業中(至少部分部門)的龐雜任務,二維應該是足夠的。
2. 無比的條理性:意思是,不管你怎麼用,資訊看起來都是有條有理的。這很重要嗎?很重要!因為 user 天馬行空,想到甚麼輸入甚麼,如果一項工具,「不管你再怎麼亂打,都能夠把資訊有條有理地呈現出來」,它就贏了。這很容易嗎?很不容易。比如說,如果開啟 word ,然後想到甚麼就打甚麼,最後免不了要做上許多排版,使資訊整整齊齊。就算是 EverNote ,恐怕也得想好要怎樣安排資料再輸入。用 trello 呢?開了 board 跟 list ,add card ,打一行 enter ,再 打一行再 enter ,重複 3 次 3 張卡,30 次 30 張卡。想到性質略有不同的 idea ,沒關係「恆」到另一張 list 去。調整順序嗎?用滑鼠「抓」著卡上下橋就是。增加細節嗎?點進去很容易找到增加 checklist / attachment / comment (多人協作)
3. 容易建立流程:意思是,
a. 很容易打字進去並迅速建立一個 list
b. 不管工作流程是甚麼,似乎總能在 trello 找到適當的對應。比如現在的需要也許很容易,弄個 todo list 就好,怎麼在 trello 做出來?想到兩種做法
a. 用 checklist :+board > + card > +checklist
b. 用 card:+ board
3. 容易建立流程:意思是,
a. 很容易打字進去並迅速建立一個 list
b. 不管工作流程是甚麼,似乎總能在 trello 找到適當的對應。比如現在的需要也許很容易,弄個 todo list 就好,怎麼在 trello 做出來?想到兩種做法
a. 用 checklist :+board > + card > +checklist
b. 用 card:+ board
作法 a. 的好處是,符合人對簡易流程的理解:一系列由簡潔文字構成的前面有方框框的清單 。
b. 的好處是,更自然,好操作,上拉下拉,放進圖檔超連結甚麼的,都不成問題。
b. 的好處是,更自然,好操作,上拉下拉,放進圖檔超連結甚麼的,都不成問題。
[User Case 2]
[User Case 3]
多維工作:介面本身容納兩個維度,透過切換 board 的簡易性,或許再吃下一個維度(也許算半個就好,因為他是隱性的);將 checklist 隱藏在 card 中,做為第四個維度;因此,除非你的需求是三個維度通通顯示出來(嚇死人了),否則,二維度介面非常理想。
4. 隱藏複雜度
資訊有簡單也有複雜。簡單如「吃午餐」或「使用 trello 進階功能」一行解決,複雜如學校作業或公司email/公文,圖文並茂加附件,主管同事老師的comment。這些都被隱藏在 trello 的 card 介面裏頭。也許叫他 package 是比較接近實況,但就介面上,確實就只是張卡片一行字。簡潔呀!!
5. UI 很簡潔
回應速度無比迅速。如果UI回應緩慢,十個 idea 也變成沒有 idea ,因為都花在氣 UI 上頭(氣憤會浪費人類的精力,古今皆然)。人類操作 run 順了之後,動作行雲流水,連 idea 都會行雲流水起來,board一直加,順序調整,添新修古,快意無倫。
6. 立體性
事物與事物間的連結,是類似人腦細胞透過突觸那樣,每個細胞與另25萬個細胞結合,千絲萬縷的。不過,人類似乎不太能掌握千絲萬縷結構,倒是比較熟悉樹狀結構。比如組織結構圖,或者電子設備中的檔案排列,都是樹狀結構,也都以井井有條著稱(善用的話)。trello 的樹狀結構有五階: organization /board / list / card / checklist ,可以套下相當複雜的結構。其實一般的結構最多到二維(因此 Excel 中的 smart chart ,幾乎都是二維結構,因此能很好地展現在同為二維的螢幕上),就算把二維表格直排橫排變成大陣仗,成為複數的表格,基本上還是以二維建構出複數維的概念 (表格排成二維,表格內的儲存格也是二維,加起來四個維),真要到這麼誇張也行。如果把 EXCEL 試算表硬是一個一個直行橫列開起來,也可以排成類似 dash board 的型態,某個程度上也能一目瞭然的掌握事情。
結論:談到使資訊條理化, trello 是個極好的工具。不論你要做個人資訊管理,或者啟動一個部門的 project , trello 都是一個極好的出發點,也許能 go 得相當相當遠。
回應速度無比迅速。如果UI回應緩慢,十個 idea 也變成沒有 idea ,因為都花在氣 UI 上頭(氣憤會浪費人類的精力,古今皆然)。人類操作 run 順了之後,動作行雲流水,連 idea 都會行雲流水起來,board一直加,順序調整,添新修古,快意無倫。
6. 立體性
事物與事物間的連結,是類似人腦細胞透過突觸那樣,每個細胞與另25萬個細胞結合,千絲萬縷的。不過,人類似乎不太能掌握千絲萬縷結構,倒是比較熟悉樹狀結構。比如組織結構圖,或者電子設備中的檔案排列,都是樹狀結構,也都以井井有條著稱(善用的話)。trello 的樹狀結構有五階: organization /board / list / card / checklist ,可以套下相當複雜的結構。其實一般的結構最多到二維(因此 Excel 中的 smart chart ,幾乎都是二維結構,因此能很好地展現在同為二維的螢幕上),就算把二維表格直排橫排變成大陣仗,成為複數的表格,基本上還是以二維建構出複數維的概念 (表格排成二維,表格內的儲存格也是二維,加起來四個維),真要到這麼誇張也行。如果把 EXCEL 試算表硬是一個一個直行橫列開起來,也可以排成類似 dash board 的型態,某個程度上也能一目瞭然的掌握事情。
結論:談到使資訊條理化, trello 是個極好的工具。不論你要做個人資訊管理,或者啟動一個部門的 project , trello 都是一個極好的出發點,也許能 go 得相當相當遠。
訂閱:
意見 (Atom)