Contents
  1. 1. 緣起:
  2. 2. Elixir 是啥玩意兒?
  3. 3. Elixir 值得學嗎?
  4. 4. 有哪些公司使用 Elixir?
  5. 5. 有哪些專案使用 Elixir 開發
  6. 6. 推薦的 Elixir 相關書籍
  7. 7. 推薦的 Elixir 線上教學資源
  8. 8. 補充一下 Erlang 語言:

緣起:

最近因為新工作環境要使用 Elixir 來開發一個新專案,而我從未接觸過這門程式語言,且新專案的時程相當趕,預計只有一個月的時間…需要我從完全新手到開發完成這個專案… 這實在是相當大的挑戰!

不過既然挑戰出現了,就勇敢的面對它吧!同時聽到主管說他學習一門新的程式語言竟然只花了3天,我的資質駑鈍不如他,那麼多花個6天、9天也許有機會一窺這個新玩意兒,也只能如此安慰勉勵自己 XD

另外聽說藉由專案驅動學習是最有效率的…(特別是這種死線緊湊的效果應該又更好 @_@)

-

由於今天賺到一天颱風假,趕緊花一個下午快速認識一下 Elixir 這個語言,發現中文的文件好少喔,邊學的同時也隨手整理了一下,分享給大家,以下的資訊有助於我快速入門,希望也有幫助有緣路過的你/妳~

既然中文資料還不多,我就來貢獻一篇吧!

Elixir 是啥玩意兒?

沒聽過是很正常的,目前 Elixir 相關的中文的討論還不多,這門程式語言在台灣還不算很流行,周遭的朋友也都沒聽說有人在玩,反而是我在英國工作的同學說他們公司有在使用!這是我身邊少數聽到有在使用這個語言的公司。話說我們公司也只有 CTO 本人有寫過…

簡單來說 Elixir 是架構一個在古老語言(Erlang)上面的一個年輕語言,特色簡介如下:

  • 2013年誕生,相當年輕的程式語言。
  • Functional programming 可讀性高,也更好維護。
  • 基於 Erlang VM(BEAM)之上,完全與 Erlang 語言相容,但是語法更親民且並提供更多的功能。
  • 語法類似 Ruby,因為 Elixir 的創造者 José Valim(葡萄牙文,巴西人) 他也是 Ruby on Rails 的核心團隊成員!難怪有不少 Ruby 的開發者跑來學。
  • 來多認識一點 Elixir 老爸 「An Interview with Elixir Creator José Valim」
  • 有接近 Ruby 易懂的語法和 Erlang 分散式高效能,可算是 RubyErlang 兩個生出來的小孩。
  • 偏向動態強型別語言 (變數型別不會在運算中自動轉型) 如同 RubyPython 這類動態強型別語言。相較於 PHPJavaScript 這類語言則是偏向動態弱型別 (自動轉型)
  • 善於處理 concurrency 問題,利於開發分散式/雲端運算平台。
  • Elixir provides a macro system and polymorphism via protocols, both aiming to make the language more extensible
  • 開發 Web 可以搭配 Phoenix Framework (也是 MVC 架構)

Elixir 值得學嗎?

新技術、新語言那麼多!什麼都想學,有這麼多時間嗎?學得完嗎?

我們該如何評估一門技術是否值得投入寶貴的時間去學習呢?

就像我當年回「大安高工資訊科」和學弟妹分享的簡報:「軟體工程師的3大試煉」,我們可以使用一些工具來評估一門技術目前是否流行,是否值得投入學習。

  • 比如我們用 Google Trends 來檢視看看 Elixir 趨勢
  • 2015 年在 Hacker News 有一些討論,開始被比較多人關注。
  • 台灣社群約莫在 2016 年初開始關注,Facebook 社團「Elixir Taiwan」也是約莫在此時成立。
  • 國內外社群逐漸活躍,生態圈越來越豐富,有一種當年接觸早期 Laravel Framework 整要起步的感覺。

不過說實在的講這麼多,凡是專案要用到的、主管要你用的,你就認命乖乖學吧~ 哈哈

有哪些公司使用 Elixir?

  • Pinterest [ref]
    • 運用在「通知系統」一秒可以傳送 14,000 筆訊息,只需要15台主機。原本用 JAVA 的舊架構則需要 30台主機。而且程式碼檔案大小僅有原本的 1/10 唷!
      (Pinterest’s notification system now uses Elixir to deliver 14,000 notifications per second)
    • 核心 API 也用 Elixir 改寫,運行速度比 Memcached-based predecessor 的反應時間還要更快速。
      (The rate-limiting system for Pinterest’s core application programming interface (API) and Ads API is also now written in Elixir, providing faster response times than its Memcached-based predecessor.)
  • Brightcove [ref]
    • 使用 Phoenix Framework。讓登入後台的使用者可以關注特定轉檔、修改影片等等事件,並且在完成時通知使用者。
  • WhatsApp
  • Whisper
    • 使用 Phoenix Framework。

更多名單請見:doomspork/elixir-companies

有哪些專案使用 Elixir 開發

  • Elixometer // Logging library 由 Pinterest 開發釋出
  • riffed // Provides idiomatic Elixir bindings for Apache Thrift 由 Pinterest 開發釋出

推薦的 Elixir 相關書籍

推薦的 Elixir 線上教學資源

補充一下 Erlang 語言:

  • 1987 年誕生的老語言,由 Ericsson 開發。早期主要應用在電信業系統,經長年證實其穩定性超高。
  • Erlang 老爸 Joe Armstrong 當年的論文中譯版
  • Erlang 老爸也對 Elixir 讚譽有嘉。
  • 主要的特色是 COP(Concurrency-oriented programming, 平行導向程式設計) 強調程式的容錯處理。
  • Facebook Chat 就是用 Erlang 開發
Contents
  1. 1. 緣起:
  2. 2. Elixir 是啥玩意兒?
  3. 3. Elixir 值得學嗎?
  4. 4. 有哪些公司使用 Elixir?
  5. 5. 有哪些專案使用 Elixir 開發
  6. 6. 推薦的 Elixir 相關書籍
  7. 7. 推薦的 Elixir 線上教學資源
  8. 8. 補充一下 Erlang 語言: