Lessons: Advanced

Taking our knowledge to the next level, these lessons get cover the advanced topics of Elixir and the BEAM.

我們已經看過 Elixir 抽象的並行性,但是有時候需要更好的控制,為此我們轉而了解構建 Elixir 的 OTP 行為 (behaviors)。

在本課程中,焦點會放在最龐大的部分:GenServers。

Supervisors 是一個有特殊目的處理程序:它監控其它處理程序。這些 supervisors 使我們能夠藉由在子 (child) 處理程序失效時自動重新啟動,進而建立有故障容錯能力 (fault-tolerant) 的應用程式 。

分散式簡介

可以於一組分散在單個主機或多個主機上的不同 node 中執行 Elixir 應用程式。 Elixir 允許通過幾個不同的機制在這些 node 之間進行通訊,在本課程中將概述這些機制。

超編程 (Metaprogramming) 是使用程式碼自身編寫程式碼的過程。在 Elixir 中,這使我們能夠擴展語言本身以適應需求並能動態地改寫程式碼。首先來看 Elixir 是如何在內部再現它,而後如何修改它,最後就可以利用這些知識來擴展它。

警世之言:超編程非常難捉摸 (tricky),只應該在必要時使用。過度使用幾乎肯定會導致難以理解和除錯的複雜程式碼。

有時候一個專案實際上可能變得很大,是真的很大的那種。Mix 構建工具允許將程式碼分割成多個應用程式,使得 Elixir 專案在成長時更易於管理。

在本課程中,將學習 @spec@type 語法。 @spec 提供更多的語法補語來編寫能以工具分析的文件。 @type 則幫助我們編寫更易讀易懂的程式碼。

在前一課中了解了 Typespecs,現在將學習如何請求一個模組來實現這些規範 (specifications)。 在 Elixir 中,這個功能被稱為行為 (behaviours)。

在本課程中,將研究協定 (Protocols) 是什麼,以及如何在 Elixir 中使用。