Ruby 2015 年回顧
Ruby 2015 年回顧
我們來到了 2015 年末,今年對于 Ruby 來說是重要的一年。我想回顧一下今年重要的主題和其中的故事是很有必要的。就像來一次敏捷過程回顧,我將把 2015 年的工作劃分成幾個主題,以此回顧下我們做的怎么樣。
為了保證我們想法的一致性,我將會先定義幾個要考慮的主題。其實每年評價 Ruby 是否成功的完成了沖刺,都會通過以下幾個方面是否來評價。
-
語言的改進
-
社區的發展
-
跟上編程業界的其他方面
這些就是我預先定義的主題。為了衡量 Ruby 社區做的如何,我將回顧本年度上述主題相關的一些重要的博客、文檔、視頻。我相信肯定會疏漏,同時我也相信小伙伴兒們肯定會在評論里補上的,對吧?
最后,這一年里與 Ruby 相關的任何值得回顧的事件都可以來交流下,今天我有充足的時間來和大家討論。我猜肯定會有好多機智的讀者想向我的列表里加東西的。
語言的改進
Ruby
Ruby 2.2 大約一年前就發布了,但我將把它算在今年里。2.2 版本添加了很多的語言方面的東西,下列的文章就對此進行了介紹:
-
超級元數據方法的加入使調試更加容易。
-
垃圾收集標志給 Ruby 垃圾收集器一個巨大的性能提升,這可能是很長時間內最好的語言改進之一。
-
當然,另一個內存垃圾回收方面的改進是增量回收,保證了垃圾回收時性能一致性。
-
還有一些較小的語言改進也不能被忽視。
-
今年圣誕節當天 Ruby 發布了 2.3 版本
-
,下面是關于這次發布的一些介紹:
-
你可以通過一個命令行選項凍結你所有的字符串,然后看看還要做多少工作來處理代碼中的字符串。
-
如果你還沒有聽說過安全導航操作符,那么你肯定是生活在石器時代。
-
所有版本都會包含 bug 修復,但這篇文章講的就是一個不太好的(譯者注:2.2 版本引入了一個內存泄露的 Bug)。這篇文章詳細介紹了 2.3 版本中這個 Bug 是如何修復的,值得一讀。
有時語言的改進意味著告別舊版本。Ruby 停止對 1.9.3 版本的支持就是這樣的。《晚安吧,Ruby 1.9.3》,我們會記住你的。
所有 Ruby 解釋器改進中最值得期待的也是最重大的是 JRuby 9000:
-
這篇公告列舉了一些主要的改進項。
-
JRuby EU 主題視頻很值得一看,看過你便知道 JRuby 9000 有多重要。Charles Nutter 和他的團隊值得大大的支持和稱贊。
提高對 Ruby 的掌握的另一種方法是學習新鮮而且和有用的東西。下面是很多這方面的文章:
-
這篇 Reddit 上的文章《你最喜歡的 Ruby 技巧是什么》,吸引了很多人的回復。
-
認真學習下《使用 rack-mini-profiler 進行性能評估》如何?真的,你必須得看看。
-
這里還有一個很棒的網站《酷斃了的 Ruby》,全都是關于 Ruby 的東西。
-
你永遠無法真正了解正則表達式,你可以嗎?
基于下面的文章,我認為 2015 年是屬于 Ruby“深入,性能相關文章“的:
-
Richard Scheeman(今年的另一個關于 Ruby 的 MVP 博客)寫的兩篇關于 Ruby 中堆轉儲的文章,第一篇,第二篇。
-
這是一篇關于如何在 Ruby 調試內存泄漏的文章。
-
你有沒有被 Ruby 垃圾收集器設置煩到頭大?我也是,但是也許我們應該這樣做。
年度之戰
最后,當一個語言給它的社區提供選擇,它的水平就上升了,RSpec 和 Minitest 之間的戰爭就是一個很重要的例子:
好吧,好吧,也許“年度之戰”只是一個噱頭,但我真的希望這一年關于 Minitest vs RSpec 有更多討論。
Rails
像 Ruby 2.2 一樣,Rails 4.2 也是大概在去年 12 月底的時候發布的。我也準備再次將此消息當做 2015 年的存貨,因為其發布所帶來的反響也是直到經年才真正升溫起來的。如下是它所帶來的東西:
-
當然,想了解發生了哪些變化,最好的地方就是發布事項了, 你會在其中看到像ActiveJob,Asynchronous Mails,以及 Adequate Record 這些東西。
-
ActiveJob 容易上手,也讓隊列系統的運用變得易如反掌。
-
發送異步消息郵件這樣的普通任務也變得更加容易進行測試和實現了。
Rails 會隨著后端網絡環境的變化而變化。下面是一些建議,用來幫你緩解即將到來的轉型壓力:
-
Rails 越來越多的被用來創建 API,而這里是一些做好這項工作的建議。哦,這里還有更多。
-
有沒有很棒的 Rails gem 的合集? 保準你的甜心 Ruby 這兒就有。
Rails 主要的一個問題來源總會是安全。這次發布對此也有了一些改進:
-
理解最常見的一些攻擊方式,像 CSRF 和 Rails, 它們能長久的改善你的工作。
-
很明顯, 4.2 有幾個發布點大多數都是關于安全和 bug 修復的。詳細信息見發布事項。
當然,也有很多討論 Rails 性能方面的文章:
-
《業界觀點》推出的四篇《關于優化 Rails 內存使用》的系列文章。
-
你在讀上面這幾篇文章前,你肯定得理解《Rails 性能的衡量方式》。
-
一旦你理解了性能特征,你最終還是得看看《ActiveRecord 調優》,這是一個兩篇的系列文章,由另一位社區 MVP 賈斯汀 維斯(Justin Weiss)發表。
Rails 4.2.x 相比于 Ruby 來說在性能方面其實并沒有太大的改進,但是為 5.0 打下了基礎,我相信在 5.0 版本中性能將會有重大提升。
Rails 之外
不消說,其它基于 Ruby 的非 Rails 的框架和庫從各個方面也提升了 Ruby。下面是一些 2015 年里很酷炫的新東西。
-
Lotus 迎來了它重要的一年,如果你需要一個面向對象的強大的非 Rails 的 web 框架,Lotus 值得一試。
-
對于 Opal 來說,2015 年也是很重要的一年,Opal 是一個廣受歡迎的 Ruby-to-JavaScript 編譯器。
-
跟 Opal 比較相關的是 Volt,Volt 是一個 Web 框架,它通過 Opal 來讓開發者使用 Ruby 進行 Web 前臺和后臺開發。
-
Pakyow 是一個新的 web 框架,它的目標是使實時應用開發更容易,的確值得一看。
壯大社區
任何一門想要繁榮發展的語言都需要讓越來越多的人知道它。對于那些 Ruby 新人,有一些博客可以幫助你早日成為 Ruby 家族的一員:
-
我們親愛的 Kingsley Silas 的博客,成為 Ruby 家族的一員。
-
Nihal Sahu 寫在 SitePoint 上面的向 Ruby 語言新手介紹 Ruby 社區。
技術的多樣性毫無疑問成為了熱門話題,像 Rails Girls 和 RailsBridge 都是用來發掘 Ruby 語言的多樣性的,下面也是一些相關的故事:
Stephanie Burns 分享了她在 Ruby 訓練營的經驗。各種編碼訓練營正在如火如荼的舉辦,這種形式吸引了很多人加入社區。
一些組織,比如 Makers Academy 為在他們那上課的女學生設立了獎學金。
Hello Ruby 一書的出版真的讓我欣喜萬分,它可以吸引小孩子編程的樂趣。如果你還沒有買這本書,強烈建議你買一本送給小朋友。
總的說來,今年 Ruby 多樣性的發展還不錯。這里預祝在 2016 年這些項目能夠獲得更多的支持。
跟上時代
對于任何編程語言,與語言本身之外其它技術相得益彰也是語言持續發展的關鍵。Ruby 在核心設計上就遵循這個準則,它的兩個解釋器(MRI 和 JRuby),使其能夠拓展到外部運行時環境。下面是 2015 年的一些與 Ruby 相關的重大技術話題:
Docker
容器化在 2015 仍然十分流行,下面是一些有關 Ruby 和 Docker 的博文:
-
來自 Travis Reeder 的博文介紹了為你的 Ruby 應用建立最小化的 Docker 鏡像;
-
Marko Locker 介紹了如何利用 Docker 簡化 Rails 的測試;
-
Nick Gauthier 提供了如何利用 Docker 進行并行化測試的參考。
確實,如果你在 2015 沒有看到 10 篇以上有關 Docker 的博文,就會顯得力不從心。有時間學一下 Docker 吧,它真的值得。
Slack
你正在用 Slack 嗎?所有人都在用呢!它真的很棒,對拉動發達國家的 GDP 都起了作用。Ruby 配合 Slack 也很不錯,看看吧:
-
用 Rails 建立一個 Slack 服務,挺有趣的;
-
或者用 Sinatra 來做,Slack 喜歡各種框架;
-
還有一個 Ruby gem,為你做了從 Rails Post 到 Slack 的所有工作。
其它編程語言
用 Ruby 的人經常回去學習和利用其它編程語言來進行更好的編程。下面是一些關于其它編程語言的故事:
-
Parse 從 Ruby 遷到 Go 從而獲得更好的效果;
-
Rust 在今年贏得了很多關注,這篇由 Robert Qualls 寫的博文展示了怎么利用 Rust 來與 Ruby 共同編程;
-
Ruby 屆的新寵毫無疑問要是 Elixir 了,看一下這篇博文,來看看大家為什么賭 Elixir 會是下一個大事件。
最后,還有兩件影響 Ruby 的兩個事件:
-
React 現在是 javascript 框架的又一選擇,可以學習一下如何利用它和 Rails 交互;
-
如果你用 Ruby 寫 web app,而不是 DHH,不如看看最近很火的微服務架構。這篇博文展示了如何微服務架構你的 Rails 應用。
哪些還不奏效
大凡回顧,都要花點時間總結一下過往的疏漏。這方面的事情容易使人消沉,如此就得大費周章了,而我在這兒將只提一提幾項:
-
把 Spring 加入到 Rails 開發流程中過去的反向總是褒貶不一。 許多人總覺得該作者像是要整個放棄 Spring。
-
Adam Hawkins 就社區需要作出的完善還有要制定的高級別的路線圖提了一大堆事情。
-
前面我已經提過微服務了,相當多的人對此持抵觸態度。Nick Sutterer (他是許許多多 gem,以及 Trailblazer 框架的作者) 對這一塊進行了大刀闊斧的設計 ,讓你在把整個微服務弄得一團糟之前能用上好的設計。
-
最后,不管會發生怎樣的改良? 會有人用它們嗎? MVP Candidate Starr Horne 用了,不過我并沒感覺有許多人用了。不知道我們應不應該用。
我確信在 Ruby 的領域還有更多東西以失敗而告終,尚未提及。你可以在評論中告訴我。
還有….我們的遠景!
2015 還有幾天就過去了。它對于 Ruby 這門在我看來仍然有一個光明未來的語言而言是重要的一年。未來的 2016 會發生什么呢?你怎么看?你可以把你的想法放到評論中或者論壇上。讓我們攜手并進,在 2016 讓 Ruby 和我們的社區變得更好吧。新年快樂!
本文地址:http://www.oschina.net/translate/a-retrospective-on-ruby-in-2015
原文地址:http://www.sitepoint.com/a-retrospective-on-ruby-in-2015/