5分鐘快速認識 Elixir 程式語言
文章目录
緣起:
最近因為新工作環境要使用 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
分散式高效能,可算是Ruby
跟Erlang
兩個生出來的小孩。 - 偏向動態強型別語言 (變數型別不會在運算中自動轉型) 如同
Ruby
、Python
這類動態強型別語言。相較於PHP
、JavaScript
這類語言則是偏向動態弱型別 (自動轉型) - 善於處理 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.)
- 運用在「通知系統」一秒可以傳送 14,000 筆訊息,只需要15台主機。原本用 JAVA 的舊架構則需要 30台主機。而且程式碼檔案大小僅有原本的 1/10 唷!
- Brightcove [ref]
- 使用 Phoenix Framework。讓登入後台的使用者可以關注特定轉檔、修改影片等等事件,並且在完成時通知使用者。
- Whisper
- 使用 Phoenix Framework。
更多名單請見:doomspork/elixir-companies
有哪些專案使用 Elixir 開發
- Elixometer // Logging library 由 Pinterest 開發釋出
- riffed // Provides idiomatic Elixir bindings for Apache Thrift 由 Pinterest 開發釋出
推薦的 Elixir 相關書籍
推薦的 Elixir 線上教學資源
- https://elixirschool.com/ // Elixir School 新手入門
- awesome-elixir // Awesome 大補帖系列
- https://hex.pm/ // The package manager for the Erlang ecosystem
- https://toolbox.elixir.pm/
- Elixir Playground // 線上執行 Elixir code
- Elixir sips // 付費教學影片,類似 Laracast
- ElixirCheat // Elixir 語法和指令小抄
- https://blog.plataformatec.com.br/ Elixir 老爸共同創辦的公司公開的技術 Blog
- https://github.com/seven1m/30-days-of-elixir // 跟著範例30天學習 Elixir
補充一下 Erlang 語言:
- 1987 年誕生的老語言,由 Ericsson 開發。早期主要應用在電信業系統,經長年證實其穩定性超高。
Erlang
老爸Joe Armstrong
當年的論文中譯版。Erlang
老爸也對Elixir
讚譽有嘉。- 主要的特色是 COP(Concurrency-oriented programming, 平行導向程式設計) 強調程式的容錯處理。
- Facebook Chat 就是用 Erlang 開發