青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Fork me on GitHub
隨筆 - 215  文章 - 13  trackbacks - 0
<2017年5月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910


專注即時通訊及網游服務端編程
------------------------------------
Openresty 官方模塊
Openresty 標準模塊(Opm)
Openresty 三方模塊
------------------------------------
本博收藏大部分文章為轉載,并在文章開頭給出了原文出處,如有再轉,敬請保留相關信息,這是大家對原創作者勞動成果的自覺尊重!!如為您帶來不便,請于本博下留言,謝謝配合。

常用鏈接

留言簿(1)

隨筆分類

隨筆檔案

相冊

Awesome

Blog

Book

GitHub

Link

搜索

  •  

積分與排名

  • 積分 - 220943
  • 排名 - 117

最新評論

閱讀排行榜

原文地址:一位Erlang程序員的自白(來自圖靈教育官方博客)

Erlang不能錯過的盛宴

(快步進入Erlang的世界)

作者:成立濤 (litaocheng@gmail.com)

作為程序員,我們曾經聞聽很多“業界動態”,“技術革新”,曾經接觸很多“高手箴言”,“權威推薦”。這些正確與否,都已成過去!

現在,讓我們迎接Erlang盛宴!

一、經歷

200711月在koders.com搜索代碼時,發現*.erl格式的源文件,感嘆開發語言的花樣百出,此時,我覺得erlang是一個丑陋的小家伙,看名字就沒有對它提起多少興趣。

2008年初的時候,公司的項目開發中,我有緣認識了ejabberd,一個采用Erlang開發的開源jabber服務器。我開始為其誘人的特性所傾倒。是時候認真看看Erlang到底什么樣了!

20084月,通過各種資料的搜集,了解,我決定系統的學習Erlang

今天,通過4個月的認真學習,我已經熟悉了Erlang,已經在使用Erlang開發項目。作為C++程序員,我不敢妄自使用“熟悉”,“精通”之類的字眼,但是對于Erlang我可以很負責任的說:Erlang很巧,很強大!

二、困惑

面對一個新的事務,我們本性都會充滿好奇,可是作為程序員,很多時候對于新的語言我們都充滿了抵觸:這個新東西值得學習么?它會不會讓我拋棄舊愛?它文檔豐富么?是不是很難理解?它的前景如何?······相信大家跟我有一樣的苦惱。

但是,請聽我說!我們是程序員,我們走在技術革新的最前沿。用戶的產品,體驗是通過我們來產生!我們不能畏縮不前,我們的固步自封,就是我們的公司,乃至整個行業的停滯不前!口號可能有些響亮,但是認真思考,我相信朋友們一定有所感悟。

三、Erlang是什么

Erlang是什么是我們最先要面對的問題,只有清楚了它是什么,我們才能做出我們的決定。可見這個問題的重要性,它決定了很多讀者是否會繼續看下去!非常緊張。

Erlang最初是愛立信為開發電信相關產品而產生。

Erlang是一種面向并發(Concurrency Oriented),面向消息(Message Oriented)的函數式(Functional)編程語言。

面向并發說明Erlang支持大規模的并發應用,我們可以在應用中處理成千上萬的并發,而不相互影響。面向消息,其實是為并發服務!我們應該都熟悉多線程,熟悉加鎖解鎖操作,熟悉可能出現的資源競爭與死鎖。在Erlang的世界里,我們可以將輕輕的抹去這些令人苦惱的詞匯。Erlang的世界,每個處理都是獨立的個體,他們之間的交互僅僅靠消息!因此不會有死鎖,不會有那種痛苦的編程經歷。

Erlang中一個非常重要的名詞:Process,也就是我們前面提到的“個體”。它不是我們操作系統中的進程,也不是線程。它是Erlang提供給我們的超級輕量的進程。為了適應大規模并發的特性,Process需要能夠快速創建,快速銷毀。Process之間通信的唯一方法就是消息,我們只要知道一個Process的名字即pid,就可以向其發送消息。Process也可以在任何時候,接收消息。我們這樣做只有一個目的:讓我們的系統更加簡單,用一種樸素的做法,實現一個高效的語言。

Erlang是種函數式編程語言,對此我沒有很深刻的理解,最明顯的特征就是,Erlang中到處都是函數,函數構成了我們的產品的主體,把這些函數放到一個個的Process中去,讓他們運行起來,那么就組成了我們朝氣蓬勃的產品。

Erlang支持對數據的位操作,擁有豐富的數據持久化機制。

同時需要說明的是Erlang內建垃圾回收機制(GC)。

四、Erlang的語言特性

1.簡單小巧

Erlang中只有8種基本的數據類型:

integerfloatatomreferencefunportpidbitstring

同時提供2種復合結構:tuplelist,這就是Erlang的所有數據類型。

2.模式匹配

Erlang的函數中,某些語法中,我們可以使用Pattern匹配,這是一個非常好的特性,我們可以讓代碼自己去決定如何執行 

比如,我們定義一個函數,其告訴我們某種水果的價格:

price(apple) -> 2.0;

price(banana) -> 1.2.

我們隨后調用 price(Fruit),會根據Fruit變量的內容返回具體的價格。這樣做的好處就是節省了我們的代碼量,我們不用if...else…或者switch…case的來伺候了。也便于代碼的擴展:加一個新的水果品種,我們只需要加一行就可以了。

學習Erlang一個非常重要的內容就是模式匹配,但是請不要混淆,這個匹配和正則表達式沒有任何干系。

3.變量單次賦值

這個是一個匪夷所思的特性,變量竟然只能單次賦值!是的Erlang中變量一旦綁定某個數值以后,就不能再次綁定,這樣做的好處是便于調試出錯(更深層次的原因是Erlang為并發設計,如果變量可以修改,那么就涉及到資源的加鎖解鎖等問題),當發生錯誤時,某個變量是什么就永遠是什么,不用順藤摸瓜的查找誰修改過它,省了好多事情。唯一的麻煩就是需要一個信的變量時,你必須再為它想一個名字。

4.豐富的libs

Erlang中提供豐富的libs

stdlib中包含大量的數據結構如listsarraydictgb_setsgb_treesetsdets

mnesia提供一個分布式的數據庫系統

inets提供ftp clienthttp client/servertftp client/server

crypto 提供加密解密相關函數,基于openssl相關實現

ssl 實現加密socket通信,基于openssl實現

ssh 實現ssh協議

xmerl 實現XML相關解析

snmp 實現SNMP協議(Simple Network Management Protocol

observer 用來分析與追蹤分布式應用

odbc 使Erlang可以連接基于SQL的數據庫

orber 實現CORBA對象請求代理服務

os_mon 提供對操作系統的監控功能

dialyzer提供一個靜態的代碼或程序分析工具

edoc 依據源文件生成文檔

gs 可以為我們提供某些GUI的功能(基于Tcl/Tk

還有很多朋友提供了一些開源的lib,比如eunit,用來進行單元測試。

5.靈活多樣的錯誤處理

Erlang最初為電信產品的開發,這樣的目的,決定了其對錯誤處理的嚴格要求。Erlang中提供一般語言所提供的exceptioncatchtry…catch等語法,同時Erlang支持LinkMonitor兩種機制,我們可以將Process連接起來,讓他們組成一個整體,某個Process出錯,或推出時,其他Process都具有得知其推出的能力。而Monitor顧名思義,可以用來監控某個Process,判斷其是否退出或出錯。所有的這些Erlang都提供內在支持,我們快速的開發堅固的產品,不在是奢望。

6.代碼熱替換

你的產品想不間斷的更新么?Erlang可以滿足你這個需求,Erlang會在運行時自動將舊的模塊進行替換。一切都靜悄悄。

7.天生的分布式

Erlang天生適合分布式應用開發,其很多的BIF(內建函數,相API)都具有分布式版本,我們可以通過BIF在遠程機器上創建Process,可以向遠程機器上的某個Process發送消息。在分布式應用的開發中,我們可以像CC++,JAVA等語言一樣,通過Socket進行通訊,也可以使用Erlang內嵌的基于Cookie的分布式架構,進行開發。當然也可以兩者混合。分布式開發更加方便,快速。ErlangProcess的操作,Error的處理等都對支持分布式操作。

8.超強的并發性

由于采用其自身Process,而沒有采用操作系統的進程和線程,我們可以創建大規模的并發處理,同時還簡化了我們的編程復雜度。我們可以通過幾十行代碼實現一個并發的TCP服務器,這在其他語言中都想都不敢想!

9.多核支持

Erlang讓您的應用支持多個處理器,您不需要為不同的硬件系統做不同的開發。采用Erlang將最大限度的發揮你的機器性能。

10.跨平臺

如同JAVA一樣,Erlang支持跨平臺(其目前支持linuxmacwindows19種平臺),不用為代碼的移植而頭疼。

我們僅僅需要了解平臺的一些特性,對運行時進行優化。

11.開源

開源是我非常喜歡的一個詞匯,開源意味這更加強壯,更加公開,更加的追求平等。開源會讓Erlang更好。

五、Erlang與外界的交互

Erlang可以與其他的語言進行交互,如CC++,Java。當然也有熱心的朋友提供了與其他語言的交互,如果需要你也可以根據Erlang的數據格式,提供一個庫,讓Erang與您心愛的語言交互。

Erlang支持分布式開發,您可以創建一個C Node,其如同一個Erlang節點,前提是你遵照Erlang的規范。

當然最常用的交互還是再同一個Node上,比如我們要調用某個lib,調用一些系統提供的功能,這時候主要有兩種方式:Port和嵌入式執行。

PortErlang最基本的與外界交互的方式,進行交互的雙方通過編碼,解碼,將信息以字節流的方式進行傳遞。(具體這個通道的實現方式,根據操作系統的不同而不同,比如unix環境下,采用PIPE實現,理論上任何支持對應Port通道實現的語言都可以與Erlang進行交互)。Erlang為了方便CJAVA程序員,提供了Erl_InterfaceJinterface

采用Port,您的代碼在Erlang的平臺之外運行,其崩潰不會影響Erlang

嵌入式執行,通過Erlang平臺加載,因此這是非常危險的,如果您的程序崩潰,沒有任何理由,Erlang也會崩潰。

六、Erlang應用場景

分布式產品,網絡服務器,客戶端,等各種應用環境。

Erlang也可以作為一種快速開發語言,進行原型開發。

七、Erlang的學習過程

1.         安裝首先從Erlang官方網站,下載安裝Erlanghttp://www.erlang.org/download.html

linux:獲取源代碼,根據說明編譯;windows:直接安裝

2.         認真閱讀《programming erlang》(中文版圖書已經問世),并不斷動手練習書中的例程。

3.         遇到問題時,不要退卻,堅持下去找到解決辦法

4.         對語言熟悉時,瀏覽一些好的開源項目

5.         有信心時,開始動手做一個小項目

6.         不間斷的與大家交流,共同提高

可能遇到的困難:

a)         對于語法的不適應?

堅持看下去,代碼繼續寫下去,我相信1個月,你會喜歡上Erlang的語法

b)        有些數據類型不清楚?

認真看資料,或者詢問朋友,比如我

c)         中文資料的缺乏?

Erlang中文的資料會越來越多,此外,Erlang的相關的英文資料也比較容易理解,還是那句話,別怕麻煩

八、Erlang開源項目

排名不分先后

  • couchdb     基于文檔等非結構化數據的數據庫,提供HTTP接口
  • disco       Map-Reduce框架,Erlang + Python
  • ejabberd    性能出眾,使用廣泛的Jabber開源服務器
  • mochiweb    輕便,高效的HTTP應用框架
  • rabbitmq    中間服務器,實現AMQP協議
  • yaws        高效的web server
  • etorrent    Bittorrent客戶端
  • scalaris      分布式的key-value存儲

九、遇到問題

參看Erlang官方文檔 http://www.erlang.org/doc/

訂閱Erlangmaillisthttp://www.erlang.org/mailman/listinfo/erlang-questions),進行提問

Nabble提供的Erlang maillist存檔中搜索(http://www.nabble.com/Erlang-f14095.html

Google中搜索答案

十、推薦閱讀

Erlang Design Principles http://www.erlang.org/doc/design_principles/part_frame.html

Erlang Efficiency Guide http://www.erlang.org/doc/efficiency_guide/part_frame.html

Erlang Programming Rules http://www.erlang.se/doc/programming_rules.shtml

十一、推薦網站

http://www.erlang.org

http://erlang-china.org

http://trapexit.org (國內封鎖,可以使用http://trapexit.org.nyud.net:8080/ 或其他代理登錄)

http://toquick.com

http://blog.socklabs.com/

http://www.planeterlang.org/

posted on 2016-12-15 10:07 思月行云 閱讀(278) 評論(0)  編輯 收藏 引用 所屬分類: Erlang
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产情人节一区| 午夜视频一区| 久久在线观看视频| 亚洲免费成人av电影| 一区二区三区精品视频在线观看| 尤物视频一区二区| 一区二区三区日韩精品视频| 最新成人在线| 麻豆精品视频在线观看| 免费在线观看一区二区| 国内精品久久久久影院色| 亚洲欧美一区二区三区久久| 99re8这里有精品热视频免费| 亚洲美女在线国产| 欧美黄免费看| 国产精品久久久久久福利一牛影视| 亚洲国产色一区| 一区二区在线观看av| 久久在线91| 亚洲三级观看| 久久精品五月| 激情久久久久| 欧美日韩一本到| 午夜亚洲视频| 亚洲日本久久| 香蕉乱码成人久久天堂爱免费| 欧美日韩一级片在线观看| 午夜精品免费在线| 国产深夜精品| 亚洲成人在线免费| 亚洲国产美女久久久久| 久久一区视频| 免费不卡中文字幕视频| 99亚洲一区二区| 国产精品每日更新| 久久久久久综合| 亚洲激情另类| 性色av一区二区怡红| 国产亚洲在线| 欧美极品一区| 新狼窝色av性久久久久久| 奶水喷射视频一区| 久久亚洲电影| 狠狠色狠狠色综合日日小说| 欧美日韩中字| 国产精品成人观看视频国产奇米| 一区二区亚洲精品| 国产欧亚日韩视频| 国产九区一区在线| 国产精品区一区| 黄色日韩在线| 亚洲大片av| 亚洲精品一区二| 一区二区三区四区国产精品| 亚洲天堂成人在线观看| 亚洲女爱视频在线| 亚洲一区黄色| 久久久久久亚洲精品中文字幕 | 欧美va天堂| 久久影视精品| 国产亚洲一区在线播放| 欧美亚洲专区| 亚洲一区二区成人| 欧美在线一二三| 欧美区一区二| 狠色狠色综合久久| 9l视频自拍蝌蚪9l视频成人| 午夜伦理片一区| 欧美激情综合色| 午夜久久资源| 国产精品豆花视频| 亚洲成色www8888| 欧美在线视频观看| 一本色道久久综合狠狠躁的推荐| 亚洲网址在线| 国产精品video| 亚洲午夜视频| 国产一区二区三区在线免费观看| 久久精品亚洲| 一本色道久久综合亚洲精品小说| 久久在线观看视频| 国产午夜久久久久| 亚洲欧美日韩国产中文| 免费在线看一区| 久久天天躁夜夜躁狠狠躁2022| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ入口 | 亚洲毛片在线看| 欧美99在线视频观看| 亚洲福利国产| 久久久久久亚洲精品中文字幕 | 欧美激情一区二区在线 | av不卡在线看| 国产午夜亚洲精品羞羞网站| 亚洲欧美成人网| 欧美大片专区| 欧美国产综合视频| 久久久久久午夜| 国产综合视频在线观看| 久久婷婷av| 欧美人成在线视频| 亚洲一区3d动漫同人无遮挡| 亚洲天天影视| 亚洲国产黄色| 亚洲小视频在线观看| 欧美激情视频在线免费观看 欧美视频免费一 | 欧美大胆a视频| 亚洲欧美国产77777| 美日韩精品免费观看视频| 一区二区三区四区五区在线 | 午夜一区不卡| 久久综合福利| 久久中文在线| 国产精品永久免费观看| 亚洲大片在线| 国产欧美精品一区二区色综合| 亚洲国产精品小视频| 国外成人在线视频| 亚洲欧美成人网| 国产精品99久久久久久久vr| 蜜桃精品久久久久久久免费影院| 欧美在线观看天堂一区二区三区| 欧美日韩国产色综合一二三四| 久久天堂国产精品| 国产午夜精品久久久久久久| 亚洲视频碰碰| 久久精选视频| 国产日韩精品综合网站| 午夜国产精品影院在线观看| 午夜精品美女自拍福到在线| 欧美日韩少妇| 亚洲桃色在线一区| 久久国产一区| 在线免费观看欧美| 免费日韩成人| 亚洲视频自拍偷拍| 久久久欧美精品sm网站| 亚洲国产99| 欧美日韩久久| 一区二区三区高清在线| 久久久久久久久久久一区| 亚洲欧美综合v| 国产一区欧美日韩| 欧美国产日韩亚洲一区| 亚洲一区二区三区高清不卡| 久久精品一区二区三区不卡| 亚洲国产另类精品专区 | 最新日韩欧美| 免费成人性网站| 亚洲男女自偷自拍图片另类| 一色屋精品视频在线看| 国产精品一区久久久| 久久综合图片| 久久久久高清| 亚洲欧美国产精品桃花 | 国产一区二区三区在线观看免费 | 亚洲一区二区三区乱码aⅴ蜜桃女| 久久久精品性| 午夜天堂精品久久久久| 99精品免费| 日韩一区二区电影网| 永久免费精品影视网站| 国产精品亚洲欧美| 国产精品国产自产拍高清av| 欧美国产视频日韩| 蜜桃久久精品乱码一区二区| 欧美一区观看| 久久精品理论片| 久久夜色精品国产欧美乱| 久久精品一区二区国产| 久久精品视频在线| 久久精品一区| 欧美精品成人| 欧美午夜片欧美片在线观看| 久久网站热最新地址| 欧美午夜不卡在线观看免费| 国模套图日韩精品一区二区| 久久久在线视频| 欧美激情在线有限公司| 欧美一区二区三区免费观看| 久久手机免费观看| 亚洲少妇一区| 久久综合九色综合网站| 午夜精品亚洲| 欧美伦理视频网站| 牛牛精品成人免费视频| 国产精品亚洲成人| 亚洲国产精品成人精品| 国产日韩精品电影| 亚洲精品中文字幕有码专区| 激情五月***国产精品| 一区二区三区视频在线| 一色屋精品视频在线看| 午夜亚洲性色福利视频| 一区二区三区精品国产| 噜噜噜在线观看免费视频日韩| 欧美一区二粉嫩精品国产一线天| 欧美日本高清| 亚洲国产精品一区二区三区| 一区免费在线| 久久精品国产精品|