如何運用類比了解Ruby#122

Spread the love

createyourownlives-writting-ruby-is-like-writting-story

在笑來老師的文章中複習到這樣的一段話

一般來說,類比是我們在說明或理解時所使用的思維輔助工具,它的使用過程大抵如下:『為了向對方解釋清楚未知的X …… (或者為了理解尚處於未知的X……) 去找一個與X 類似的、但是對方肯定已經理解的A 說清楚它們之間的關係:X ≈ A 把A (或A 與X 相似的地方) 解釋清楚…… 於是X 不言自明……』

可以用類比幫助了解Ruby嗎?

所以我就開始思考了,這個方法真的有效嗎?那如果我要知道他是否有效,最好的方法就是實際用生活中的例子來測試?於是我選擇了目前正在學習的Ruby語言來套用這個方法。而我到底能夠把Ruby類比成什麼?

在練習Ruby數十個小時之後,我越來越覺得寫Ruby其實就是在寫一段故事。而為了寫好故事必然要先釐清以下幾件事
1.你的故事要解決什麼問題?
2.把故事劃分成好幾個部分
3.把每個部分寫得更詳細一點
4.幫助提高了解程度

你的故事要解決什麼問題?

一段故事可長可短,一般來說我們通常可以用短短幾句話就講完一個長篇大論的故事。比如說,哈利波特七集的系列小說,基本上就是在說:『主角哈利波特在霍格華茲7年學習生活中的冒險故事。』,但是這樣的故事沒有人會滿意,因為它顯然沒有解決聽故事的人最大的問題,那就是:『滿足心中好奇的渴望。』,而基本上所有的故事都是為了解決這個問題而存在,並且不斷努力著。

把故事劃分好幾個部分

而為了要把一篇故事寫好,我們一定會有很多大綱或是時間軸,接著再針對各個點去把裡面的細節描寫清楚。就像是J·K·羅琳可能是把哈利波特的生活分成七年來看,先給予這七年都會發生哪些主要的大事件,接著再針對這些大事件一一描述。

把每個部分寫得更詳細一點

把故事分成七年之後我們必然要把故事,一一的詳細寫清楚,否則讀者們是不可能了解情節的發展。此外,有時候故事當中有太多的人物、地點、時空背景等等,作者可能沒辦法或不願意在故事中花太多篇幅的介紹,所以常見的方式是在書的一開始寫上前情提要、主角簡介、時空背景等等。

幫助提高了解程度

一般在寫文章的時候,非常忌諱的就是錯別字太多、邏輯不夠嚴謹、沒有結論。因為種種的這些因素,都有可能破壞讀者閱讀的節奏,最終導致這個故事可能沒有辦法『滿足讀者心中好奇的渴望』。

所以Ruby跟說故事的關係是?

Ruby的存在就是要解決作者或使用者所遇到的問題(可能是寫遊戲、解決繁瑣的問題等等都有可能),而當我們在寫Ruby的時候也必須先完整定義問題(假設我要寫個圈圈叉叉的遊戲)的存在,像是圈圈叉叉的遊戲敘述是長這樣的

%e8%9e%a2%e5%b9%95%e6%88%aa%e5%9c%96-2016-09-10-16-51-17

接著,我們要針對整個流程擬出大綱(像是先顯示板子,接著要玩家先下,顯示板子,3個連成一線就贏了等等)

%e8%9e%a2%e5%b9%95%e6%88%aa%e5%9c%96-2016-09-10-16-51-23

然後下一步,是要把每個流程寫得更加詳盡易懂(白棋可以下在哪?要怎麼避免下在已經有棋子的空格?遊戲可以在3個連成一線就中止嗎?),讓他能夠說出一個完整的故事。(詳細的內容)

%e8%9e%a2%e5%b9%95%e6%88%aa%e5%9c%96-2016-09-10-16-55-37

而為了避免故事太過冗長,或著重要的資訊一再說明或漏掉,一般Ruby或在開始之前,定義很多的Method、constant,讓看的人可以一目暸然,不用每次都花大量的時間看重複的訊息(書籍前面的前情提要、主角簡介、時空背景等等。)(各種Method和Constant)

%e8%9e%a2%e5%b9%95%e6%88%aa%e5%9c%96-2016-09-10-16-55-06

並且在撰寫的過程中,不斷的確認是否有錯別字、邏輯是否嚴謹、有沒有結論。因為這些小小的錯誤,都有可能造成電腦無法理解你的故事,進而無法產生你要的結果。(Error)

%e8%9e%a2%e5%b9%95%e6%88%aa%e5%9c%96-2016-09-10-16-58-11

總結

而既然我們可以把Ruby跟寫故事類比起來之後,對我們來說最方便的就是,透過模擬這樣的思維幫你解決問題。我們開始寫Ruby之前要先定義自己的故事是什麼,然後把每個流程大概分類,接著把內容變得更加詳盡。而在撰寫的過程中,把重複出現的資訊盡量簡化,放在前情提要的部分,避免浪費時間和精力。

如果能夠用這樣的思維思考,或許能夠讓初學Ruby或著操作的人有個大概的方向,減少入門的時間。

不知道這樣的類比有沒有實際幫助理解,如果有差的話可以留言跟我說一下XD

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *