Erlang
閱讀設定
編程範式 | 多重典範:函數式、並發 |
---|---|
設計者 | 祖·岩士唐、Robert Virding、Mike Williams |
編程員 | 愛立信 |
第一次出現 | 1986年 |
穩定版本 | 24.1[1]
/ 2021年9月22號 |
類型系統 | 動態、強 |
軟件授權 | Apache許可證2.0 (從OTP 18.0開始) Erlang 公共許可協議 1.1 (早期版本) |
副檔名 | .erl 、.hrl |
網站 | www |
Major 實作版本 | |
Erlang | |
啟發語言 | |
Prolog、Smalltalk、PLEX、[2]LISP | |
影響語言 | |
Akka、Clojure、Dart、Elixir、F♯、Opa、Oz、Reia、Rust、Scala | |
Erlang係一種通用嘅函數式。Erlang都可以指Erlang/OTP嘅通稱,開源電信平台(OTP)係Erlang嘅常用執行環境同埋一系列嘅標準元件。
Erlang 執行環境係專有以下要求嘅系統設計:
其他程式設計典範
[編輯]惰性求值
[編輯]Erlang程式員可以用惰性求值。但係,必須用λ演算式,先至可以做到惰性求值。
以下是惰性求值的一例:假設有個剖析器程式如下,由於同埋早求值特徵,呢個程式將唔會求解。
Expr() -> alt(then(factor(), then(literal($+), factor())), Then(factor(), then(literal($-), factor()))). Factor() -> alt(then(term(), then(literal($*), term())), Then(term(), then(literal($/), term()))). Term() -> alt(number(), Xthen(literal($(), thenx(expr(), literal($))))).
呢度用λ演算式同埋適當用函數名稱表示,就可以進行求值。示例如下。
Expr() -> Fun () -> Alt(then(fun factor/0, then(literal($+), fun factor/0)), Then(fun factor/0, then(literal($-), fun factor/0))) End. Factor() -> Fun () -> Alt(then(fun term/0, then(literal($*), fun term/0)), Then(fun term/0, then(literal($/), fun term/0))) End. Term() -> Fun () -> Alt(number(), Xthen(literal($(), thenx(expr(), literal($))))) End.
應用
[編輯]- Wings 3D,一個用Erlang編寫嘅三維計算機圖形軟體。
- YAWSWayback Machine嘅版面存檔備份,用Erlang編寫嘅高效HTTP伺服器。
- DISCOWayback Machine嘅版面存檔備份,用Erlang編寫嘅MapReduce架構系統。
- Apache CouchDBWayback Machine嘅版面存檔備份,用Erlang編寫嘅MapReduce文件式資料庫系統。
- RabbitMQWayback Machine嘅版面存檔備份,能搭配Erlang運作嘅訊息佇列系統。
- 開放電信平台
- WhatsApp:佢嘅後端伺服器應用用咗Erlang同埋FreeBSD[3]。支持咗4.5億嘅活躍用戶
- ejabberdWayback Machine嘅版面存檔備份,世界上最流行嘅XMPP即時通訊伺服器
- EMQXWayback Machine嘅版面存檔備份,用Erlang編寫嘅高可用、分佈式MQTT消息伺服器。
社區
[編輯]- Erlang Central(英文)
- Erlang Resources 豆瓣小站Wayback Machine嘅版面存檔備份(大陸簡體)
- Erlang中文社區 erlang-china.org(大陸簡體)
- Erlang中文教程 erlang-cn.comWayback Machine嘅版面存檔備份(大陸簡體)
- Erlang中文社區 cnerlang.com(大陸簡體)
- Erlang中文 erlang-cn.org(大陸簡體)
參考
[編輯]睇多啲
[編輯]- Armstrong, Joe (2003). "Making reliable distributed systems in the presence of software errors" (PDF). Ph.D. Dissertation. The Royal Institute of Technology, Stockholm, Sweden. 原先內容歸檔 (PDF)喺2015-03-23. 喺2016-02-13搵到.
{{cite journal}}
: Cite journal requires|journal=
(help) - Armstrong, Joe (2007). "A history of Erlang". Proceedings of the third ACM SIGPLAN conference on History of programming languages – HOPL III. pp. 6–1. doi:10.1145/1238844.1238850. ISBN 978-1-59593-766-7.
- Early history of ErlangWayback Machine嘅版面存檔備份 by Bjarne Däcker
- Mattsson, H.; Nilsson, H.; Wikstrom, C. (1999). "Mnesia – A distributed robust DBMS for telecommunications applications". First International Workshop on Practical Aspects of Declarative Languages (PADL '99): 152–163.
- Armstrong, Joe; Virding, Robert; Williams, Mike; Wikstrom, Claes (1996-01-16). Concurrent Programming in Erlang (第2版). Prentice Hall. p. 358. ISBN 978-0-13-508301-7. 原著喺2012-03-06歸檔. 喺2019-10-16搵到.
- Armstrong, Joe (2007-07-11). Programming Erlang: Software for a Concurrent World (第1版). Pragmatic Bookshelf. p. 536. ISBN 978-1-934356-00-5.
- Thompson, Simon J.; Cesarini, Francesco (2009-06-19). Erlang Programming: A Concurrent Approach to Software Development (第1版). Sebastopol, California: O'Reilly Media, Inc. p. 496. ISBN 978-0-596-51818-9. 原著喺2019-10-16歸檔. 喺2020-01-20搵到.
- Logan, Martin; Merritt, Eric; Carlsson, Richard (2010-05-28). Erlang and OTP in Action (第1版). Greenwich, CT: Manning Publications. p. 500. ISBN 978-1-933988-78-8.
- Martin, Brown (2011-05-10). "Introduction to programming in Erlang, Part 1: The basics". developerWorks. IBM. 原先內容歸檔喺2019-10-16. 喺2011-05-10搵到.
- Martin, Brown (2011-05-17). "Introduction to programming in Erlang, Part 2: Use advanced features and functionality". developerWorks. IBM. 原先內容歸檔喺2019-10-16. 喺2011-05-17搵到.
- Wiger, Ulf (2001-03-30). "Four-fold Increase in Productivity and Quality: Industrial-Strength Functional Programming in Telecom-Class Products" (PDF). FEmSYS 2001 Deployment on distributed architectures. Ericsson Telecom AB. 原先內容歸檔 (PDF)喺2019-08-19. 喺2014-09-16搵到.
出面網頁
[編輯]- Erlang開放源碼版本Wayback Machine嘅版面存檔備份(英文)
- Erlang愛立信授權版本Wayback Machine嘅版面存檔備份(英文)
- 因應軟體錯誤建構可靠嘅分散式系統Wayback Machine嘅版面存檔備份 Wayback Machine嘅版面存檔備份(英文)
- Erlang喺Curlie嘅資料
- Erlang教學Wayback Machine嘅版面存檔備份