精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲精品无人区| 国产精品劲爆视频| 亚洲视频在线播放免费| 中文在线免费二区三区| 中文字幕成人av| 114国产精品久久免费观看| 在线观看 中文字幕| 欧美亚洲在线日韩| 欧美不卡在线视频| 性欧美videossex精品| 3d玉蒲团在线观看| 久久人人97超碰com| 91免费电影网站| 久久夜色精品国产噜噜亚洲av| 日韩成人激情| 日韩大陆欧美高清视频区| 污片在线免费看| 狼人综合视频| 亚洲欧美一区二区久久| 日本一区二区三区精品视频| 国产成人精品免费看视频| 久久婷婷亚洲| 久久久免费观看| 91传媒免费观看| 国产一区二区三区91| 精品国产凹凸成av人导航| 色片在线免费观看| 在线亚洲人成| 亚洲成年人网站在线观看| 宅男在线精品国产免费观看| 久久久资源网| 天天干在线视频论坛| 涩涩在线视频| 亚洲国产成人午夜在线一区| 激情视频在线观看一区二区三区| 国产三级第一页| 蜜桃av一区二区三区| 日韩av免费一区| 四虎永久在线精品| 欧美午夜电影在线观看 | 亚洲精品成人区在线观看| 青青草97国产精品免费观看 | 日韩欧美视频网站| 羞羞的网站在线观看| 国产精品久久久久国产精品日日| 免费精品视频一区| 日韩电影免费| 国产高清精品久久久久| 91久久久久久久久久久| 国产一区二区在线播放视频| 久久精品国产成人一区二区三区| 国产精品黄色av| 国产偷人爽久久久久久老妇app| 丝袜美腿亚洲综合| 国产成人综合一区二区三区| 国产成人无码专区| 日韩精品久久理论片| 国产成人aa精品一区在线播放| 制服.丝袜.亚洲.中文.综合懂色| 国产亚洲在线| 日本aⅴ大伊香蕉精品视频| 中文字幕高清在线免费播放| 久久高清国产| 国产精品福利片| 一级黄色免费片| 国产乱人伦偷精品视频不卡| 97在线电影| 人妻偷人精品一区二区三区| 99久久综合狠狠综合久久| 蜜桃视频日韩| 久久精精品视频| 久久99国产综合精品免费| 免费一级欧美片在线播放| 国产91免费观看| 中文字字幕在线中文乱码| 精品一二线国产| 成人午夜电影免费在线观看| 深夜影院在线观看| 国产精品免费看片| 无码人妻精品一区二区三区99v| 香蕉久久aⅴ一区二区三区| 午夜电影网一区| wwwwxxxx日韩| 91欧美极品| 亚洲网站视频福利| 草视频在线观看| 亚洲专区在线| 91精品在线播放| 五月婷婷激情在线| 国产精品蜜臀av| 欧美精品久久久久久久久久久| 成人激情综合| 日韩三级视频在线看| 国产熟妇搡bbbb搡bbbb| 99久久亚洲精品| 97色伦亚洲国产| 亚洲天堂网在线观看视频| 高清av一区二区| 少妇免费毛片久久久久久久久 | 狠狠热免费视频| 日韩精品视频一区二区三区| 精品无码久久久久久国产| 91香蕉国产视频| 99在线观看免费视频精品观看| 国产精品一区二区3区| 精品国产一级片| 亚洲国产成人私人影院tom | 无遮挡在线观看| 91精品国产欧美日韩| 丝袜美腿中文字幕| 68国产成人综合久久精品| 欧美亚洲激情在线| www.麻豆av| 成人欧美一区二区三区小说 | 成人av免费电影网站| 日韩欧美视频一区| 成人欧美一区二区三区黑人一 | 日韩黄色一区二区| 图片小说视频色综合| 国产精品极品美女粉嫩高清在线| 色婷婷激情五月| 亚洲最新在线观看| 午夜国产福利在线观看| 欧美综合在线视频观看| 午夜精品一区二区三区在线视频| 国产一区二区在线视频观看| 国产网红主播福利一区二区| 国产精品va无码一区二区| 深夜激情久久| 欧美另类69精品久久久久9999| 一级片视频播放| 国产精品久久久久久户外露出| 亚洲人成色77777| 天堂成人娱乐在线视频免费播放网站| 久久久久成人精品| 亚洲精品97久久中文字幕无码| 亚洲欧美欧美一区二区三区| 亚洲第一天堂久久| 91免费精品| 成人疯狂猛交xxx| 91在线导航| 欧美视频一二三区| 国产极品视频在线观看| 蜜臀av一区二区三区| 午夜精品一区二区在线观看的| 韩国三级一区| 在线精品国产欧美| 亚洲在线精品视频| 亚洲欧美日韩国产中文在线| 久久久福利影院| 欧美福利一区| 国产精品久久久久av福利动漫| 黄页网站大全在线免费观看| 日韩精品在线一区| 国产精品99精品无码视| k8久久久一区二区三区| 欧美亚洲一二三区| 免费成人网www| 国产精品久久久久99| av在线收看| 91精品视频网| 国产一级二级三级视频| 成人激情黄色小说| 农村妇女精品一二区| 精品日韩免费| 亚洲直播在线一区| www中文字幕在线观看| 亚洲精品小视频| 姑娘第5集在线观看免费好剧| 国产精品三级电影| 日本r级电影在线观看| 亚洲高清二区| 久久人人九九| 久久爱.com| 欧美国产日韩二区| 日本啊v在线| 欧美日韩国产综合久久 | 色婷婷亚洲婷婷| 北条麻妃在线观看视频| 成人黄色国产精品网站大全在线免费观看 | 狂野欧美一区| 无码人妻aⅴ一区二区三区日本| 99亚洲乱人伦aⅴ精品| 国产成人欧美在线观看| 在线观看h网| 亚洲精品网址在线观看| 国产特级aaaaaa大片| 欧美视频在线看| 97在线观看免费高| 久久午夜色播影院免费高清 | 一级黄色av片| 一区二区三区蜜桃| 无码人妻丰满熟妇啪啪欧美| 国产成人免费在线| 欧美性猛交久久久乱大交小说 | 亚洲大尺度视频| 91福利社在线观看| 国产亚洲欧美精品久久久久久| 国产欧美一区二区精品性色| 国产xxx在线观看| 青青草国产精品亚洲专区无| 六月婷婷在线视频| 亚洲成人免费| 天堂社区 天堂综合网 天堂资源最新版 | 青青青爽久久午夜综合久久午夜| av日韩一区二区三区| 久久综合88| 奇米视频888战线精品播放| 中文一区二区三区四区| 国产欧美精品一区二区三区介绍| free性护士videos欧美| 久久久精品视频在线观看| 免费看男男www网站入口在线| 精品蜜桃在线看| 亚洲一区二区色| 在线观看免费亚洲| 亚洲AV无码成人精品区东京热| 一区二区在线观看不卡| 精品一区二区在线观看视频| 久久美女高清视频| 国产精品300页| 成人免费观看av| 91porn在线| 国产乱码精品一区二区三| 九九精品久久久| 日韩成人免费电影| 成人午夜视频免费在线观看| 亚洲深夜影院| 成人黄色大片网站| 亚洲视频久久| 国产片侵犯亲女视频播放| 国产精品88久久久久久| 亚洲国产一区二区精品视频 | 94色蜜桃网一区二区三区| 日本成人在线免费| 国产乱子伦视频一区二区三区 | 中文字幕一区二区三区免费看| 狠狠躁天天躁日日躁欧美| 男女免费视频网站| 亚洲一区二区视频| 精品一级少妇久久久久久久| 亚洲自拍欧美精品| 日本一区二区免费在线观看| 一区二区三区小说| 久久免费在线观看视频| 亚洲国产精品一区二区久久 | 日韩一级免费一区| www.成人精品| 亚洲成人aaa| 日韩中文字幕免费在线观看| 亚洲成人黄色网址| 外国精品视频在线观看 | 欧美专区在线观看一区| 中文字幕91爱爱| 正在播放亚洲一区| 国产成人毛毛毛片| 亚洲第五色综合网| 午夜视频免费看| 亚洲视频综合网| 888av在线| 欧美成人黄色小视频| 日日夜夜天天综合入口| 98精品在线视频| 肉色欧美久久久久久久免费看| 国产xxx69麻豆国语对白| 成人a在线观看高清电影| 成人黄色免费片| 成人台湾亚洲精品一区二区 | 亚洲一区二区三区香蕉| av综合网页| 欧美在线播放一区| 91精品国产自产在线观看永久∴| 91网站在线观看免费| 在线视频免费在线观看一区二区| 日av中文字幕| 狠狠色综合播放一区二区| 污网站免费观看| 久久久精品一品道一区| 91免费公开视频| 天天综合网 天天综合色| 国产免费www| 日韩精品资源二区在线| 日本高清中文字幕二区在线| 色妞欧美日韩在线| av电影免费在线看| 国产精品爽爽ⅴa在线观看| 久久久久久久久成人| 久久久一本精品99久久精品| 91综合久久| 国产精品va无码一区二区| 国内精品免费**视频| 中文字幕日韩三级片| 中文字幕制服丝袜一区二区三区 | 韩国精品一区二区三区| 伊人成色综合网| 麻豆精品视频在线观看免费| 国产麻豆剧传媒精品国产| 中文字幕av一区二区三区免费看| 精品午夜福利视频| 欧美男女性生活在线直播观看| 五月婷婷激情在线| 欧美噜噜久久久xxx| 激情久久一区二区| 激情视频一区二区| 欧美.日韩.国产.一区.二区| 538在线视频观看| 99久精品国产| 国产一级片网址| 制服丝袜亚洲色图| avav免费在线观看| 啪一啪鲁一鲁2019在线视频| 538任你躁精品视频网免费| 伊人久久av导航| 久久综合图片| 亚洲一区二区三区综合| 亚洲午夜一区二区三区| 国产又大又黑又粗| 伊人精品在线观看| 美女福利一区二区| 久久av免费一区| 伊人精品视频| 丰满少妇xbxb毛片日本| 亚洲欧美一区二区三区孕妇| 国产又黄又粗又硬| 中文字幕精品一区久久久久| 中国字幕a在线看韩国电影| 国产精品一区在线播放| 国产中文一区| wwwxxxx在线观看| 亚洲精品视频自拍| av在线资源观看| 久久亚洲国产精品| 97久久精品一区二区三区的观看方式| 日韩欧美一区二区三区四区 | 91精品一区国产高清在线gif | 免费不卡欧美自拍视频| 欧美风情在线视频| 一区二区精品在线| 美女国产一区二区| 四虎地址8848| 欧美丰满嫩嫩电影| 国精产品一区| 97视频热人人精品| 亚洲五月婷婷| 亚洲av成人精品一区二区三区| 亚洲一级二级三级在线免费观看| 精品人妻aV中文字幕乱码色欲| 麻豆乱码国产一区二区三区 | 亚洲电影第1页| 国产福利电影在线播放| 久久精品一区二区三区不卡免费视频| 国产日韩欧美三区| japanese中文字幕| 欧美亚洲动漫精品| 欧美极品视频| 亚洲tv在线观看| 黄色在线成人| 在线观看国产网站| 色婷婷综合久久久久中文| av片在线看| 亚洲最大成人在线| 在线成人亚洲| 美女久久久久久久久久| 欧美午夜精品电影| 成人免费网址| 国产亚洲福利社区| 久久精品观看| 国产成人av免费在线观看| 欧美mv日韩mv国产网站| 是的av在线| 亚洲欧美日韩在线综合| 国产高清在线精品| 欧美三级韩国三级日本三斤在线观看| 亚洲美女福利视频网站| 日韩成人一区| 男人用嘴添女人下身免费视频| 久久久蜜桃精品| 国产av一区二区三区精品| 5252色成人免费视频| 久久在线视频| 三级男人添奶爽爽爽视频| 欧美视频日韩视频在线观看| 2020国产在线视频| 久久久久久久久一区二区| 精品在线观看免费| 国产欧美日韩另类| 精品国产一区二区三区久久久狼| 日韩视频一区二区三区四区| 老熟妇仑乱视频一区二区 | 成人在线播放网址| 久久精品视频免费| www.国产麻豆| 国产精品福利在线| 亚洲精品四区| 黄色录像一级片| 亚洲精品一区二区网址| 国产午夜久久av| 天堂中文视频在线| 午夜精品免费在线观看| 哥也色在线视频|