這幾年常會聽到「Ruby 已死」的言論,我想這可能與 Ruby 使用率逐年下降的討論有關,真的有下降嗎?如果是這樣,為何國際知名的 Airbnb、GitHub、Shopify 等還在使用?連 Twitter 和 Twitch 早期也是使用 Ruby 架構做為基礎開發。由於 Ruby 大叔就在 Ruby 公司工作,這問題還真的蠻常被問到,我想說:「Ruby 只是一種選擇,但我用了之後再也回不去。」
【圖一】 RUBY 的一個優點讓工程師愛不釋手(圖片來源 / 五倍紅寶石軟體開發提供)
Ruby 是一種通用程式語言,普遍以 Rails 框架應用在 Web 開發上,每次跟非業界的人介紹我是 Ruby 工程師時,他們總會困惑,這不是女生英文名嗎?或直覺是賣精品的那種紅寶石,給人優雅的感覺,我認為若用「優雅」形容 Ruby 並不為過,但怎樣都還是很難跟程式語言聯想在一起。
2004 年 Rails 框架誕生後,Ruby 曾紅極一時,因為 Ruby 的設計原則是「讓工程師開心」,因此強調「不做重複的事」(Don't Repeat Yourself),使工程師能用比較少的精力完成工作,記得在當年,我還沒接觸 Ruby 前,主要寫 PHP,後來被職場同事推坑入手後,覺得實在太好用,因為寫網站確實比其他程式語言快,平常要寫 10 行的 code,用 Ruby 可能只要 2-3 行,光是這個優點就讓我愛不釋手。
討論度沒增加不等於 Ruby 使用率下滑
其實不只 Ruby 被某些文章或媒體「單方面」宣布死亡,每年關於各種程式語言的衰退討論也沒少過,有國外網站做了調查,提到 Ruby 討論度正在逐年下滑,我對這些統計看法採保留態度,討論度沒有增加也不代表 Ruby 使用率在下滑,而是別的語言成長快速,如今其他程式語言都有開發出類似 Rails 的框架可以使用了。
有時朋友會開玩笑說,其他程式語言有「富爸爸」但 Ruby 沒有,雖然這是玩笑話,但以 User Base 來看,Ruby 確實不如其他知名程式語言,相較之下,它的商業推廣力還是較小,每種程式語言作風不同,我認為無法用排行榜來定義 Ruby,或判斷它的好壞,Ruby 只是選擇自己的路,它緩慢但穩定成長著。
Ruby 是能屈能伸的程式語言
Ruby 是一種高效語言,經常被用來開發網站後端,雖然不見得每方面都有人使用,但它好上手、開發速度快,不但可跨平台支援,還能跟不同的語言環境結合;Ruby 能屈能伸,語言特性使它在面對複雜強大的創新環境時,也能用自然的語法完成任務,節省大量開發精力,它很柔軟,不排斥與其他程式語言或跨平台工具的相容,它寫起來舒服,若 Ruby 程式語言寫的好,看起來就像英文字句那般優雅,相當人性化。
Ruby 也並非毫無缺陷,有三點是常被人詬病的,第一,普遍被認為執行速度較慢,10 年前的確有這類問題,但近年的改善非常明顯,雖然我認為硬體可以克服的問題都不是問題。第二,開發面向需要更完善,目前 Ruby 的運用大多數還是發生在 Web 上,它的開發生態圈沒那麼大,但這不代表 Ruby 做不到其他面向(e.g. App、AI 等)運用,而是需要更大的契機與資源投入開發,Ruby 還是一個潛力股的。第三,好上手但不易精通,以最多人使用 Ruby 開發的 Web 應用來說,當想要開發常見的功能,例如會員系統、圖片上傳等,其實 Ruby 10 多年前就有數種非常容易上手且功能完整的工具方便開發,但若需做較複雜的客製,就會需要花時間心力理解它背後的實作方式。
Ruby 不死,學得好就是一技之長
Ruby 是不會死的,至今它還是一個非常實用的程式語言,對於學習,Rails 也是非常理想的框架,只要有網路、大家都還在使用智慧行動裝置,Ruby 就會一直存在,如今 Rails 環境很成熟,有些人或許會覺得用起來很無聊,這有點像在玩一款線上遊戲,有趣的總是從 LV.1 開始的砍怪探索、跌跌撞撞的過程,到最後 LV.100 封頂後,各項技能值都點滿,開始感到無趣,其實等級高才能做更多有意義的事,像有些高手會開始帶新人練或開發其他事物。
有人問:「學了 Ruby 對工作真的有幫助嗎?」當然!這絕對無庸置疑。有些客戶不會在乎廠商使用哪種程式語言幫他們建置網站,客戶在乎的是需要花費多少及能否達成目標,以長遠考量來看,新人只需擔心自己能否好好磨練技術,程式語言不只要會寫,還要寫得好,花時間精通,才能在工作上備受信任。
Ruby 看似簡單卻複雜,像身體一樣
Ruby 雖是國際通用的程式語言,但台灣的 Ruby 工程師還是比較少,大致還是像我待的是以 Ruby 為主的公司,若要問我為何喜歡 Ruby,答案很單純,因為 Ruby 讓我感到快樂。它不僅是程式語言,從中還能感受到來自 Ruby 創辦人松本行弘(Matz)的思想與美德,他曾說過:「我嘗試著使 Ruby 更自然,而不是簡單;Ruby 看起來很簡單,但內部是非常複雜的,就像我們的身體一樣。」學習 Ruby 的過程也能瞭解自己。
這種美德我也拿來落實在工作上,當我在帶新人及實習生時,不會趕鴨子上架,只要求他們趕快做完,或請他們改東西卻不附上實際原因,導致他們因沒學好而感到挫敗,我比任何人都更希望新人可以領會 Ruby 的魅力,所以一定會給予新人有意義的回饋,並讓他們有時間思考及完成任務。
Ruby 不會死,因為還有一群人持續在用它、愛它。之前我們公司還有寫過一篇很有愛的文章:
為什麼我們喜愛 Ruby?有興趣的朋友也可以拜讀!