精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Elixir: 編程語言的未來

開發 開發工具
這篇文章談一談最近火爆的 Elixir,同時說一下對編程語言選擇的看法。同時作為 Erlang 發燒友,Elixir 不可不提。即使有了那么多編程語言 Elixir 也值得接觸。

這篇文章談一談最近火爆的 Elixir,同時說一下對編程語言選擇的看法。同時作為 Erlang 發燒友,Elixir 不可不提。即使有了那么多編程語言 Elixir 也值得接觸。

Elixir 并不是一個最近出現的語言。但是近期 Elixir 的生態逐漸完善,越來越多的專家開始關注這門語言,并且 給予 Elixir 好評

現在開始接觸 Elixir

一個小的 Elixir 例子

并行處理 JSON 字符串輸入,并且解析成可用的變量,計算每秒處理的速度并輸出。

https://github.com/doubaokun/exsample

用 entop 監控 Elixir 應用狀態

對編程語言選擇的一點看法

作為個語言發燒友,之前接觸過 Java、Erlang、Scala、PHPJavaScript、C#、C、Python、Ruby 等一大堆各種風格的編程語言。有人說,學那么多編程語言是想做”翻譯”嗎?其實事情并不那么簡單。

不同的語言背后是風格截然不同的類庫群、技術堆棧、生態和工具鏈。不同的語言針對了不同類型的問題。某些語言解決某些問題的成本會比其他語言低非常多。回歸本質,學習編程語言還是為了低成本高效的解決實際的業務問題。

個人喜歡的編程語言風格

可以近實時更新變更

***不需要長時間編譯才能執行、應用啟動快。

Java、 C 編譯很慢,不適合頻繁修改的項目。但是 PHP 、Node.js 修改即可見,可以極大提高開發效率。***還能 hot-reload 就像很多前端工具一樣,只要源碼有一點變更,不需要刷新頁面自動反應在瀏覽器中。Play framework 類似的自動加載功能也可以。

更進一步,能夠在生產環境熱加載就更好了,更新代碼不影響用戶。針對這一點,很多人樂了, PHP 默認就是這樣的啊,部署后刷新 APC 緩存就可以實現。
這正是無狀態、短鏈接的 HTTP 應用的優勢,雖然隨之而來的是性能相對降低更多 TCP 的開銷,但是把問題變得簡單很多。但是很多其他語言做到這點就很難了,比如大部分 Java 應用。

Elixir、Erlang 可以做到真正的任何情況下開著跑車換輪子。

關于熱加載,見另一篇文章:編程開發常用的熱加載工具。

支持并發執行

人們更習慣順序執行的思路,并且大部分業務邏輯都是順序執行的。但是為了降低延遲、提高性能,***能在語言層面支持并發執行。比如,一個操作開始還未返回結果,就可以開始另一個操作。
這樣調用遠程 API 或者遠程 RPC,耗時為最慢那一個操作的耗時。從這一點看,大部分流行語言都可以做到并發調用,但 PHP 難以做到。

輕量級執行進程或者線程

由于某些限制,某些業務邏輯不可避免的會因為大量計算、網絡磁盤 IO 等占用一個執行進程或者線程。所以希望這個執行體能夠盡量輕量級,很少的內存占用,很快的啟動時間,很少的切換消耗,***能在 IO 執行的時候自動讓出計算資源。

并發和并行

我們更多關注并發,但是比較少關注并行。因為通過增加機器數量能抗住大量用戶的請求比節省機器更加簡單和迫切。
這也是很多互聯網公司動輒幾百臺上千臺服務器的現狀。用戶和請求量的多少由于業務邏輯的不同很難比較,只能比較機器數量了。

并發之進程模型

PHP 既是典型的這種模式。曾經見過某異步 PHP 框架 CS 高居不下,甚至比業務邏輯的 CPU 使用更高。

并發之線程模型

這種模型相對于進程模型好了很多,因為線程比進程輕量很多,創建、切換也快很多。

問題:線程和內核線程的關系為多對多,內核線程有限。能夠調度的用戶線程有限,無法充分利用多核性能。創建新線程消耗非常大。IO 阻塞無法釋放計算資源。

每個 CPU 核心只能同時運行一個線程,多個線程之間需要切換調度(CS)。如果是 CPU 密集類型的計算,沒有或者很少 IO 操作,***啟動 CPU 核心數量的線程。
但是如果有 IO 操作,比如 磁盤或者網絡,多余 CPU 核心數的線程有效,因為 IO 操作的時候可以切換到其他線程執行 CPU 操作。

并發之 Fork-join 輕量級進程模型:

Fork-join 創建自己的進程池來執行小粒度的任務。
相對于 Erlang 那種真正的搶占式調度的 VM 實現或者操作系統的搶占式調度,Fork-join 模型非常簡單,也意味著相比之下效率相對低。
Fork-join 針對計算密集操作設計,意味著無法告訴 F/J 框架你因為 IO 等待而釋放一會兒計算資源。所以,一般需要將異步 IO 操作放到另外的線程池,FJ 只處理純計算。
基于 Scala 的 Akka 既是這種模型。所以,假如處理不當, Akka 的 Actor 很容易阻塞執行線程,如果執行線程池的線程被耗光,整個應用將會僵死在那里。而 Erlang 則沒有這個問題。

并發之 Erlang 輕量級進程模型:

VM 調度線程,將計算劃分為非常小的執行單元。可以支持非常多的進程。IO 阻塞可以自動釋放資源。真正的搶占式調度。

類型系統

靜態類型可以避免很多失誤。動態類型經常會出現不可預期的結果,這有悖于 UNIX 風格的最少意外原則。
動態類型可以讓開發更加快速。強靜態類型系統會執行很快,比如 Java,但是也可以在有必要的時候使用反射,比如很多 RPC 框架的實現 (當然也有更進一步的字節碼修改技術)。
每個語言的類型系統都有自己的特點。

豐富的內置結構或者容器類

***能夠區分 Interface、Struct 和 Implementation。能夠以比較統一的模式輕松的定義自己需要的結構體。

GC 系統

除非 Erlang 無可媲美的輕量級線程級別的 GC 。否則你要么需要記住和理解復雜的 GC 調優參數、要么像 PHP 那樣過一段時間將進程殺掉重來。

元編程和 DSL 擴展性

在語法級別的抽象和封裝更能提高開發效率。Elixr 中如何實現 DSL。

執行速度和性能

這點和并發并行模式、以及多核利用率密切相關。

UNIX 風格

簡單說就是模塊化;每個模塊完成相對單一的功能、復制任務由多個模塊組合完成。項目設計就像搭積木。不同模塊之前的輸入輸出可以拼接。
另外就是極簡風格。

依賴和庫管理系統

這點 Node.js npm 是***的依賴管理系統了,這樣導致了 Node.js 社群庫數量的爆發。因為創建和發布一個庫實在是太容易了,找到需要的庫也非常簡單。
極大提高了開發效率。

打包和發布系統

***能打包成單一文件,容易分發和部署。比如 Java 應用打包成 Fat Jar 包到處執行,或者 Golang 那樣編譯成單一文件。

日志系統

真實的項目、日志非常重要。之前的文章已經提到日志的重要性。所以好的內置日志系統或者比較統一高效的日志模式非常重要。
***支持屏幕打印、寫文件等等功能。這可能不能算一個編程語言的特性了,要看這個語言是不是有很好的日志類庫。
Java 的 SLF 就是一個比較好的日志系統類庫。

工具鏈

項目構建、編譯、測試工具比較完善。
比如 Java、Scala 項目的 maven、sbt 。Erlang 項目可以用 rebar ,但是 Elixir 的 mix 友好的很多倍。
另外一個好的 REPL 命令行工具非常重要,因為這可以方便的侵入應用進行調試,或者測試一條代碼片段。
比如 PHP 的 php -a, sbt, Clojure 的 lein, Erlang 的 erl, Elixir 的 iex 等等。

腳本執行

這是腳本語言的一大優勢。小任務可以立刻創建一個腳本執行,而不需要修改、編譯部署現有運行的應用。
這點對于小任務非常重要。Erlang 和 Elixir 都支持這樣運行,escript 或者 Elixir 腳本。比如,連接到集群,讀取狀態或者進行一次性的數據操作,然后斷開。

測試系統

***有一種比較標準的單元測試模型。比如 Java、Node.js、Scala、Elixir 等等。

說了這么多,回到 Elixir。首先 Elixir 執行和 Erlang 沒有任何差別。Erlang 的優點 Elixir 完全具備。比如:真正的搶占式調度;充分利用多核心并行執行;Actor 模型;監控樹;透明的分布式;
極其高的穩定性;代碼的熱更新部署;函數式編程;模式匹配;等等。并且很多 Erlang 下工具也是可以直接使用。比如 entop 。

另外 Elixir 比 Erlang 多出的好處在于更加友好的語法、工具鏈、社群。很多之前寫 Ruby 的開始寫 Elixir,因為他們的語法最接近。

Elixir 的元編程 (meta programming) 和 DSL

1. quote 將代碼變成 AST,很像 LISP 語法。

quote do: 1 + 2

2. 執行 quote 的表達式

Code.eval_quoted(quote do: 1 + 2)

3. unquote 用來引用 quote 范圍之外的變量

number = 13
Macro.to_string(quote do: 11 + unquote(number))

Elixir 成熟的工具鏈

mix:項目創建、構建工具
hex:可以和 npm 媲美的依賴和庫管理系統 https://hex.pm/
iex: 類似 Erlang 的 erl 既是 EPRL 又是應用啟動命令
exunit: 單元測試工具

Tip: (Erlang\Elixir\Akka 都需要注意不要讓某一個 Actor 的 Queue 積壓過多消息成為系統瓶頸。監控 Queue 長度非常必要。)

Erlang、Elixir 一些有用的工具和庫

entop
gproc
:observer.start()
rebar

更多有用的 Elixir / Erlang 類庫,比如 Web 類庫 Phoenix Webframework,常見的 MySQL、Redis、MongoDB 類庫:

https://github.com/h4cc/awesome-elixir

很多有用的鏈接

https://en.wikipedia.org/wiki/Strong_and_weak_typing
https://en.wikipedia.org/wiki/Unix_philosophy
https://en.wikipedia.org/wiki/Fork%E2%80%93join_model
https://en.wikipedia.org/wiki/Preemption_(computing)
http://yosefk.com/blog/parallelism-and-concurrency-need-different-tools.html
https://www.subbu.org/blog/2012/03/async-io-and-fork-join
http://www.slideshare.net/zacharycox/dont-block
http://stackoverflow.com/questions/4436422/how-does-java-makes-use-of-multiple-cores
http://cabol.github.io/programming-languages-and-multicore-crisis/
http://www.neo.com/2013/08/27/two-days-with-elixir
http://learningelixir.joekain.com/profiling-elixir/
https://github.com/d0rc/exrabbit/blob/master/lib/exrabbit/dsl.ex
http://blog.jonharrington.org/elixir-and-docker/
http://www.smashingmagazine.com/2013/04/introduction-to-programming-type-systems/

責任編輯:王雪燕 來源: 互聯網技術和架構
相關推薦

2013-05-29 09:47:42

編程語言移動開發java

2009-02-03 09:15:20

C#VB.NETLinq

2010-03-10 18:33:58

Python編程語言

2009-02-11 21:17:15

編程語言JeffreyWindows核心編程

2023-05-04 07:44:13

編程界小語言Java

2021-04-13 06:35:13

Elixir語言編程語言軟件開發

2012-11-07 09:41:30

2017-02-09 16:15:33

Erlang并發運算符

2020-02-20 20:30:16

編程語言框架

2011-11-16 09:00:39

編程語言

2014-09-04 13:35:42

編程語言

2020-04-26 12:08:10

Python編程語言開發

2020-07-13 07:45:52

編程語言C語言Java

2016-01-29 09:36:38

編程初學者編程趨勢

2021-08-18 06:48:52

編程語言開發IT

2018-07-27 14:17:32

2021-08-18 10:44:18

編程語言FlutterUnity

2021-09-30 11:12:00

函數式編程 Actor

2012-09-28 13:23:43

編程語言語言進化程序員

2025-03-14 10:55:24

點贊
收藏

51CTO技術棧公眾號

а√天堂资源地址在线下载| 国产免费无遮挡| 国产一区二区电影在线观看| 精品视频在线免费观看| 中文字幕中文字幕99| 亚洲成a人片77777精品| 国产精品日韩精品欧美精品| 中文字幕日韩免费视频| 欧美丰满熟妇bbb久久久| 不卡av播放| 国产精品久久久久精k8| 国产高清在线一区二区| wwwwww在线观看| 亚洲网址在线| 日韩在线免费观看视频| 天堂久久久久久| 精品国产亚洲一区二区在线观看| 高跟丝袜欧美一区| 黄色录像特级片| 国产在线自天天| 国产成人精品在线看| 国产精品免费一区| 久久夜色精品亚洲| 在线观看国产精品入口| 亚洲图片欧美午夜| 国产黑丝在线观看| 成人豆花视频| 欧美性一级生活| 国产精品一区二区免费在线观看| 黄网站免费在线观看| 国产偷v国产偷v亚洲高清| av一本久道久久波多野结衣| 在线观看国产黄| 日韩精品电影在线| 26uuu另类亚洲欧美日本一 | 97人妻人人澡人人爽人人精品| 99国产精品视频免费观看一公开 | 麻豆91在线观看| 欧美中文字幕在线视频| 国产一级一片免费播放放a| 91精品综合久久久久久久久久久| 亚洲欧美视频在线| 国精品无码人妻一区二区三区| 国产精品nxnn| 亚洲精品一区二区三区在线观看| 久久精品国产99久久99久久久| 国产精品原创视频| 欧美日韩一区在线| 午夜免费福利在线| 草莓视频成人appios| 日韩欧美在线看| 欧美 国产 综合| 自拍在线观看| 色天使久久综合网天天| 国产精品99久久免费黑人人妻| 天堂资源在线| 色婷婷狠狠综合| 成人性做爰aaa片免费看不忠| 久久野战av| 在线亚洲高清视频| 日本免费观看网站| 欧美成人黄色| 欧美一区二区三区日韩| 4438x全国最大成人| 9国产精品午夜| 亚洲成人在线网| 一出一进一爽一粗一大视频| 亚洲免费观看高清完整版在线观| 亚洲欧洲日韩国产| av免费播放网站| 在线电影一区二区| 国外成人在线播放| 天天爽夜夜爽人人爽| 免费人成网站在线观看欧美高清| 成人黄色片网站| www.久久综合| 91免费看片在线观看| 日韩精品无码一区二区三区| 免费**毛片在线| 一区二区成人在线视频| 无罩大乳的熟妇正在播放| 三上悠亚激情av一区二区三区 | 国产a级免费视频| 高清不卡一二三区| 欧美日韩一区在线视频| 永久免费av在线| 亚洲一区二区视频| 久久精品99国产| 日韩黄色三级| 亚洲国产精品高清久久久| 欧美激情亚洲色图| 国产精品magnet| 日本成人免费在线| 国产免费高清视频| 91在线高清观看| 亚洲最大免费| 老牛影视精品| 欧美日本一区二区| 日本一级片在线播放| 欧美最新另类人妖| 久久久久久久久91| 这里只有久久精品视频| 国产盗摄女厕一区二区三区| 欧美日韩精品中文字幕一区二区| a在线免费观看| 色视频成人在线观看免| 亚洲精品一区二区18漫画| 神马影视一区二区| 欧美国产中文字幕| 中文字幕免费高清在线观看| 成人性生交大片| 中文字幕精品一区日韩| 自拍偷拍欧美视频| 欧美va在线播放| 国产精品18在线| 国产精品视区| 成人在线看片| 免费av在线网站| 欧美自拍丝袜亚洲| 麻豆国产精品一区| 在线一区电影| 国产精品夜间视频香蕉| 欧美扣逼视频| 天天色 色综合| 无码人妻aⅴ一区二区三区玉蒲团| 成人情趣视频| 国产成人自拍视频在线观看| 色婷婷av一区二区三区之红樱桃 | 92国产精品观看| 久久久久久av无码免费网站下载| 国产成人精品一区二区三区在线| 日韩经典中文字幕| 国产午夜视频在线| 国产二区国产一区在线观看| 视频一区二区视频| 日本一区二区三区中文字幕| 最新91在线视频| 午夜精品免费观看| 国产亚洲一区二区三区| 丝袜老师办公室里做好紧好爽| 国产精品22p| 久久久在线观看| 午夜免费福利视频| 一区二区在线观看不卡| 亚洲欧美天堂在线| 亚洲精品一区二区妖精| 国产综合久久久久久| 91露出在线| 精品视频一区二区不卡| 久久久精品成人| 免播放器亚洲一区| 亚洲成人第一| 欧美成人黄色| 久久久精品免费视频| 国产又大又长又粗| 亚洲欧美综合色| 国内精品国产三级国产aⅴ久| 一区二区电影| 国产精品乱码| 爱情电影社保片一区| 一本一本久久a久久精品牛牛影视 一本色道久久综合亚洲精品小说 一本色道久久综合狠狠躁篇怎么玩 | 久久久久久久久免费视频| 欧美日韩国产成人在线91| 国产精品18在线| 国产精品一区免费视频| 久久综合久久久久| 色愁久久久久久| 国产精品国产福利国产秒拍| 北条麻妃在线| 欧美一区二区三区免费观看视频| 久久亚洲成人av| 91碰在线视频| 日韩肉感妇bbwbbwbbw| 亚洲成人精品| 国内精品久久国产| www.久久| 久久99精品视频一区97| 天堂在线资源库| 欧美伊人久久久久久午夜久久久久| 精品熟妇无码av免费久久| 国产精品99久久久久久似苏梦涵| 国产片侵犯亲女视频播放| 亚洲都市激情| 亚洲va欧美va在线观看| 678在线观看视频| 一个人看的www久久| 国产夫绿帽单男3p精品视频| 日韩欧美精品免费在线| 精品亚洲乱码一区二区 | 在线播放国产精品二区一二区四区| 美女视频黄免费| 国产无一区二区| 一区二区三区人妻| 日韩综合小视频| 日本中文字幕一级片| 奇米亚洲欧美| 国产精品久久久久久久免费大片 | 日韩欧美第一区| 9i看片成人免费看片| 成人免费在线观看入口| 特级西西人体wwwww| 激情综合色综合久久| 免费黄色日本网站| 在线观看日韩| 亚洲精品一区国产精品| 精品人人人人| 91亚洲国产精品| 性高爱久久久久久久久| 欧美精品999| 中文字幕在线观看日本| 日韩黄色av网站| 国产丰满果冻videossex| 欧美这里有精品| 久久久午夜影院| 一区二区三区在线视频播放| 波多野结衣一二三四区| 99re这里只有精品视频首页| 四虎国产精品永久免费观看视频| 青娱乐精品视频| 国产精品丝袜久久久久久消防器材| 亚洲精品国产成人影院| 亚洲一区精品视频| av中文字幕一区二区| 久久综合中文色婷婷| 国产亚洲成av人片在线观黄桃| 国产日韩一区在线| 天然素人一区二区视频| 91sa在线看| 高潮在线视频| 欧美激情一区二区三区高清视频| 久久77777| 日韩一区二区三区xxxx| 成人高清网站| 亚洲午夜国产成人av电影男同| 婷婷色在线观看| 亚洲国产精品久久精品怡红院 | 成人综合婷婷国产精品久久蜜臀| gai在线观看免费高清| 蜜臀久久久久久久| 国产高潮免费视频| 麻豆精品在线播放| 久久99爱视频| 久久精品国产一区二区三 | 日韩中文字幕网址| av大片在线看| 中文字幕亚洲无线码a| yourporn在线观看中文站| 国产一区二区av| 粉嫩一区二区三区国产精品| 亚洲天堂成人在线视频| 国产一级在线| 伊人伊人伊人久久| 在线看的av网站| 日韩一区二区三区在线播放| 麻豆视频网站在线观看| 久久久黄色av| 伊人福利在线| 国产69精品久久久久9| bl在线肉h视频大尺度| 91精品国产91久久久久久久久| 涩涩涩在线视频| 国产精品户外野外| 亚洲成a人片777777久久| 亚洲综合日韩在线| 国内精品国产成人国产三级粉色| 久久99精品久久久久子伦| 免费成人网www| 亚洲电影网站| 欧美国产三区| 日本福利视频在线| 日韩精品福利网| 亚洲三级在线视频| 不卡欧美aaaaa| 亚洲自拍偷拍图| 中文字幕一区二区不卡 | 欧美国产综合| 波多野结衣之无限发射| 日韩电影在线看| 麻豆网站免费观看| av爱爱亚洲一区| av资源在线免费观看| 亚洲激情六月丁香| 国产又黄又猛又粗又爽| 在线播放视频一区| 五月婷婷在线观看视频| 中文字幕日韩欧美精品在线观看| 污视频网站免费在线观看| 日本精品一区二区三区在线播放视频 | 国产精品亚洲一区二区三区| 136导航精品福利| 欧美主播一区二区三区美女 久久精品人 | 777久久精品一区二区三区无码| 亚洲欧美日韩国产| 在线观看av免费观看| 99久久免费国产| 手机av在线看| 色综合天天综合| www.日韩在线观看| 在线视频日本亚洲性| av手机免费在线观看| 国产精品视频成人| 日韩精品社区| xxxxxx在线观看| 日本亚洲欧美天堂免费| 欧美大喷水吹潮合集在线观看| 国产精品狼人久久影院观看方式| 一级片中文字幕| 欧美一区二区三区在线观看| 免费资源在线观看| 欧美激情免费观看| 亚洲三级电影| 欧美一区二区高清在线观看| 伊人久久亚洲美女图片| 一级淫片在线观看| 亚洲国产激情av| 久久久久久久久久久久久久av| 精品嫩草影院久久| 理论片午午伦夜理片在线播放| 国产精品草莓在线免费观看| 日韩mv欧美mv国产网站| www.激情网| 国产精品一区一区| 三级黄色在线观看| 欧美日本在线看| 91在线视频免费看| 日本久久精品视频| 网友自拍区视频精品| 日韩精品 欧美| 国产成人av一区二区| 日本福利片在线观看| 欧美日韩五月天| av在线免费观看网| 国产精品成人播放| 精品视频亚洲| 999精品网站| 国产网站一区二区三区| 成人公开免费视频| 亚洲欧美成人一区二区在线电影| 涩涩视频在线播放| 精品一区二区日本| 国产麻豆综合| 可以直接看的无码av| 欧美午夜精品久久久久久久| 偷拍25位美女撒尿视频在线观看| 久久久久国色av免费观看性色| 91精品啪在线观看国产爱臀 | 欧美aaaaaaa| 国产99在线播放| 在线欧美视频| 成年人网站免费在线观看 | 在线观看av日韩| 中文字幕高清不卡| 亚洲中文字幕一区二区| 精品国模在线视频| 日本一区精品视频| 免费看欧美一级片| 91在线精品一区二区三区| 国产一级片毛片| 在线播放国产一区二区三区| 日韩欧国产精品一区综合无码| 欧美aaa在线观看| 丁香婷婷深情五月亚洲| 欧美三级韩国三级日本三斤在线观看| 精品五月天久久| 欧美大陆国产| 欧美高清中文字幕| 久久精品一区二区三区不卡| 在线观看av大片| 欧美大片免费观看| 天堂网av成人| 欧美女同在线观看| 一区二区三区蜜桃网| 男人天堂网在线观看| 成人欧美一区二区三区黑人| 狠狠干综合网| 久久丫精品忘忧草西安产品| 51久久夜色精品国产麻豆| 久久香蕉一区| 日本在线成人一区二区| 国产一区二区三区视频在线播放| 国产午夜精品一区二区理论影院 | 日韩精品电影一区亚洲| 午夜激情福利网| 日韩av网站大全| 久久久久久久性潮| 东北少妇不带套对白| 欧美激情一区二区三区不卡| 99久久久久久久| 欧美一级在线播放| 亚洲字幕久久| 9.1成人看片免费版| 正在播放一区二区| 欲香欲色天天天综合和网| 老司机av福利| 91欧美激情一区二区三区成人| 99久久亚洲精品日本无码| 97福利一区二区| 91精品蜜臀一区二区三区在线| av直播在线观看| 日韩女优毛片在线|