Functional Programming — Elixir&Phoenix 學習心得之使用安裝
這個學期由於在學校選修了一門 Full Stack Web Development 想說透過這門課程來重新練習一下軟體,而且過去也沒嘗試過 Full Stack(筆者過去僅有三年後端開發 RESTful APIs 的經驗),結果才發現這個課程的主要使用語言是筆者過去沒學習過、也聽都沒聽過的程式語言,而且還跟物件導向非常不同,使用的是函式導向的概念(Functional Programming),而這個程式語言就叫做 - Elixir。
首先,Elixir 是什麼?
根據維基百科的定義:
Elixir 是一個基於 Erlang 虛擬機器的函數式、面向並列的通用程式語言。Elixir 以 Erlang 為基礎,支援分散式、高容錯、即時應用程式的開發,亦可通過巨集實現元程式設計對其進行擴充,並通過協定支援多型。
老實說看到了這個定義,筆者還是不太理解,但看來是在 Erlang 的基礎上在開發的嗎(我想應該是吧)?!
這個語言是由 Jose Valim 於 2011 年開發出來的,相對於其他主流程式語言像是 Python、Java、C++…..等等,算是相對年輕的程式語言,而且這個語言的特性著重在分散式、高容錯、即時應用,看起來是一個可以處理大量 requests / concurrent 的語言。但還是不太了解有哪些應用,直到我再進一步的搜尋目前有哪些市面上的應用是透過 Elixir 開發的,才知道原來 Discord(專為遊戲玩家設計的即時通訊軟體)是使用 Elixir 搭配 Phoenix(以Elixir 為基礎的網頁開發框架) 所寫的!
直接來看看 Elixir 的 Hello World的範例吧!
iex> IO.puts("Hello World!")
Hello World!
IO.puts/1 這個就是把文字列印出來的功能 (Function),後面的數字代表的是帶入參數的數量,所以會有同一個功能名稱但是後面的數字不同的情況,這也是我當初學習時一開始搞不太清楚的狀況,更多語法可以參考 Elixir 的官方文件(目前最新版本為 v1.14.4)。
那什麼又是 Phoenix 呢?
Phoenix 是一個可以透過 Elixir 來開發網頁的框架,可以用來建立可高度擴展、即時性以及容錯性強的網頁應用程式。這個框架包含 MVC(Model/View/Controller)架構、Router、資料庫存取(搭配Postgres)…等特性,這些特性會等到後面一點的文章再來介紹,算是功能性相當完整、強大的網頁開發框架。
該如何安裝、使用呢?
首先,安裝 Elixir
筆者使用的是 Apple MacBook Pro M1 pro ,在安裝上面可以透過 Homebrew 來完成,如果尚未使用 Homebrew 的讀者可以參考使用看看,算是相當方便的套件管理功能。
安裝 Homebrew 後,打開終端機輸入下列指令,就會開始進行安裝了。
brew update
brew install elixir
安裝完成後,可以透過終端機來驗證是否安裝完成,可以輸入下方指令來驗證 Elixir 的安裝版本號。
elixir --version
順利安裝完成的話,應該會如下方圖片所示。
安裝完成後,如何使用 Elixir 呢?可以簡單地在終端機中輸入指令 iex 來啟動互動式命令列來進行使用:
就可以測試我們剛才提到的以 IO.puts/1 來做的 Hello World 範例,其中 “:ok” 是 Elixir 執行的回應,表示運行正常。
安裝 Phoenix Framework
完成 Elixir 的安裝之後,就可以來安裝 Phoenix 了!
首先,我們需要安裝 Hex 套件管理器,可以透過下方指令來完成(僅適用於Elixir 1.14 or later 以及 Erlang 24 or later 的版本)
mix local.hex
接下來,安裝 Phoenix
mix archive.install hex phx_new
完成後,接著安裝 Phoenix 官方推薦的 Postgres 資料庫,詳細的安裝過程,可以透過此連結根據不同平台來完成。
在確保完成安裝 Hex、Elixir、Phoenix、以及 Postgres 後,我們就可以著手來測試我們的第一個 Phoenix。接下來,筆者會在下一個文章分享如何建立並將 Phoenix 網頁應用發佈到本機端進行測試。
那今天就先到這邊啦,我們下篇文章見,拜拜 👋!