Functional Programming — Elixir&Phoenix 學習心得之使用安裝

Lawrence Yi-Hsuan Chuang
5 min readApr 6, 2023

--

Photo by Joshua Aragon on Unsplash

這個學期由於在學校選修了一門 Full Stack Web Development 想說透過這門課程來重新練習一下軟體,而且過去也沒嘗試過 Full Stack(筆者過去僅有三年後端開發 RESTful APIs 的經驗),結果才發現這個課程的主要使用語言是筆者過去沒學習過、也聽都沒聽過的程式語言,而且還跟物件導向非常不同,使用的是函式導向的概念(Functional Programming),而這個程式語言就叫做 - Elixir。

首先,Elixir 是什麼?

(Elixir 的代表圖示,source from: https://d3mxt5v3yxgcsr.cloudfront.net/courses/13575/course_13575_image.png)

根據維基百科的定義:

Elixir 是一個基於 Erlang 虛擬機器的函數式、面向並列的通用程式語言。ElixirErlang 為基礎,支援分散式、高容錯、即時應用程式的開發,亦可通過巨集實現元程式設計對其進行擴充,並通過協定支援多型。

老實說看到了這個定義,筆者還是不太理解,但看來是在 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 的代表圖示,Source from: https://blog.appliscale.io/wp-content/uploads/2020/08/1WvDl2WlPs7cR8TTBvrjpyw.png)

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 網頁應用發佈到本機端進行測試。

那今天就先到這邊啦,我們下篇文章見,拜拜 👋!

--

--

Lawrence Yi-Hsuan Chuang

擁有超過9年工作經驗的工程師,目前在University of Nevada, Reno就讀Computer Science的碩士生,曾在軟體、銀行顧問和物聯網產業服務並擁有豐富的經驗。在這裡主要分享個人在學習技術方面的心得與知識。此外,我也是攝影愛好者,如果有任何關於技術、職場或攝影的問題,都歡迎一起討論、交流!