為什麼我要學習 Ruby

從我開始學習 iOS 開發已經有接近2年的時間了,剛開始使用 Objective-C,但遇到 Swift 之後,很快就被我拋到腦後,全部投入 Swift 的懷抱了。

我開始利用 Swift 深入學習 iOS 的各個基礎方向,按照 Ray Wenderlich 的四本基礎教材來學習,同時還自己琢磨了2只 App,并上架了其中一個來測試。同時不斷研究各個開源項目,Alamofire, Kingfisher, FolioReader, Argo 以及數不清的文章等等,都擴展了我的視野。最後我又對語言範疇感興趣,從 OOP 轉到 POP,再去思考 FP 的一些東西,非常有意思。對於 Swift 的基礎知識我還算比較了解了。我在3月份的時候寫了《答卓同學 Swift 面試題》來測試一下自己目前的 Swift 水平大致是什麼樣。

踏入程序開發這個領域,我其實是對產品非常有興趣的。使用代碼來編寫出一個一個產品,又可以從外表到代碼內部,細細打磨著每一個角落,完全是一種享受。但是,現在公司上的業務需求已經越來越不好玩了,我自己的話語權又得不到重視,平時又因為業務是在太多,又沒人手,管理上又有各種問題,不夠足夠多的時間讓我來探究更加深入的東西,不僅似乎拖累別人,又拖累著我,已經讓我產生疲憊感了。

我開始思索可以琢磨哪些東西。UIKit 不開源,不知道裡面怎麼寫,總是需要依靠猜測和搜尋來探究問題,還不一定能得到解答。我開始轉向研究 RxSwift 以及 Rx 的思想,同時開始按照設計模式的方式去思考程式的寫法。再後來將項目中的網絡層抽離出來後,又開始對測試產生興趣,同時領悟到設計模式、架構模型對於測試來說有多大的幫助,以此就更能明白“為什麼當初要被定義成這麼寫”的原因了。實在是非常有意思。

我從 Swift 1 的時代就開始學習,到現在 Swift 4 就要出來了,我還訂閱了 Swift evolution 的郵件。在這個美好的時代去看到一門語言一點一點的變化,真是讓人激動的事情。

但是我後來一想,我依舊局限在了 iOS 的視角當中。Swift 目前是有在被推動至 Server Side,但我對於 Server 端并不了解。於是我想到 Cocoapods, Fastline 都是用 Ruby 來寫的,我還想到池大提到學習編程就要學習一門具有元編程能力的語言,於是我想到了學習 Ruby。它正好可以補足我對腳本語言的不了解,同時也是一門優雅的語言,還能玩 Rails。我又驚喜發現學習 Rx 又可以玩 RxRuby。

在玩 Ruby 的過程中,我又對 Shell 產生興趣。我還去比較了一下到底是學 PHP, Python 還是 Ruby,但最終還是選了 Ruby。

總之,學習 Ruby 的過程中,開闊了我對程序的認知。對我這樣一樣文科生畢業的人來說,是非常有意義的事情。不過,今天這篇並不是來寫感慨的,主要還是來整理一下學習目標。

2017/03/26 學習目標

以下按照《軟技能》中所提到的“十步學習法”來嘗試歸類。

—— 本次“十步學習法”適用於我這個完全不懂 Ruby 的人。

了解全局

本次學習用書為《Ruby 程序員修煉之道 第2版》(The Well-Grouded Rubyist)。

確定範圍

本次學習的範圍需要理解動態語言的含義,掌握 Ruby 的語法規則,區分靜態語言與動態語言的差異。

定義目標

本次學習的目標為在 Terminal 中運行,以及在 irb 中的基礎使用。并比較 Swift 與 Ruby 的差異,同時區分與規範自己在兩者的語言風格。

尋找資源

本次學習的資源全為《Ruby 程序員修煉之道 第2版》。

創建學習計劃

本次學習計劃完全按照《Ruby 程序員修煉之道 第2版》的目錄來循序漸進。

工作日則在每天晚上抽出2小時左右來學習。週末則可以拿出更多時間。學習案例都會丟到這個 repo 上。

篩選資源

本次學習資源範圍依舊是《Ruby 程序員修煉之道 第2版》。

開始學習,淺嘗輒止

如題。

動手操作,邊玩邊學

如題。

全面掌握,學以致用

如題。

樂為人師,融會貫通

目前仍以自己教自己,自己給自己出題和思考為主。


附註:

ruby-repo 地址

《答卓同學 Swift 面試題》