Wednesday, January 9, 2019

Erlang 的啟發 --- part 3

取自 Joe Armstrong 的論文:

非功能特性 (non-functional property)
錯誤恢復運行時修改系統的程式碼是許多真實系統需要的兩項典型的非功能特性。一般的程式語言和系統對於撰寫已經定義好的功能行為程式碼,提供了強力的支持,但是對非功能性部分的支持卻很貧乏。

應用作業系統 (application operating system)
從某種意義上講,作業系統提供了「被程式語言設計者遺忘的事」 (what the programming language designer forgot) 。然而,在 Erlang 這樣的程式語言中,操作系統是幾乎不需要的。 OS 提供給 Erlang 的只有驅動程式,而 OS 的其它服務諸如進程、消息傳遞、進程排程、內存管理這些功能, Erlang 都不需要。

用 OS 機制來彌補程式語言不足帶來的問題是:「 OS 底層機制不能夠輕易地被改變」。

另一方面,通過提供 lightweight processes 和錯誤檢測和處理的基本機制 (primitive mechanisms),應用程式的編寫者就可以輕易地設計和實現他們自己需要的應用作業系統 (application operating system)。這種應用作業系統是專為他們的特定問題的特徵而特別設計的。 OTP 系統 (用 Erlang 編寫的一個應用程式) 便是其中的一個例子。