在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一名Erlang程序員的自述

工程師人生 ? 來源:工程師吳畏 ? 2019-06-20 17:39 ? 次閱讀

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

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

一、經歷

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

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

2008年4月,通過各種資料的搜集,了解,我決定系統的學習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種基本的數據類型:

integer、float、atom、reference、fun、port、pid、bitstring

同時提供2種復合結構:tuple,list,這就是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中包含大量的數據結構如lists,array,dict,gb_sets,gb_trees,ets,dets等

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

inets提供ftp client,http client/server,tftp 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中提供一般語言所提供的exception,catch,try…catch等語法,同時Erlang支持Link和Monitor兩種機制,我們可以將Process連接起來,讓他們組成一個整體,某個Process出錯,或推出時,其他Process都具有得知其推出的能力。而Monitor顧名思義,可以用來監控某個Process,判斷其是否退出或出錯。所有的這些Erlang都提供內在支持,我們快速的開發堅固的產品,不在是奢望。

6.代碼熱替換

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

7.天生的分布式

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

8.超強的并發性

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

9.多核支持

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

10.跨平臺

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

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

11.開源

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

五、Erlang與外界的交互

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

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

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

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

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

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

六、Erlang應用場景

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

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

七、Erlang的學習過程

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

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

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

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

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

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

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

可能遇到的困難:

a) 對于語法的不適應?

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

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

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

c) 中文資料的缺乏?

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Erlang程序
    +關注

    關注

    0

    文章

    3

    瀏覽量

    5778
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    阿里云升級通義靈碼AI程序員,全面上線

    近日,阿里云宣布其備受矚目的通義靈碼AI程序員已正式全面上線,為開發者帶來更為強大和便捷的編程輔助工具。 此次上線的通義靈碼AI程序員,在功能上實現了全面升級。現在,它支持VS Code
    的頭像 發表于 01-09 11:16 ?644次閱讀

    TMS320C6000程序員指南

    電子發燒友網站提供《TMS320C6000程序員指南.pdf》資料免費下載
    發表于 12-24 17:19 ?0次下載
    TMS320C6000<b class='flag-5'>程序員</b>指南

    TMS320C55x DSP CPU程序員參考補充

    電子發燒友網站提供《TMS320C55x DSP CPU程序員參考補充.pdf》資料免費下載
    發表于 12-21 11:36 ?3次下載
    TMS320C55x DSP CPU<b class='flag-5'>程序員</b>參考補充

    UCD3138A64/UCD3138128程序員手冊

    電子發燒友網站提供《UCD3138A64/UCD3138128程序員手冊.pdf》資料免費下載
    發表于 12-09 14:42 ?0次下載
    UCD3138A64/UCD3138128<b class='flag-5'>程序員</b>手冊

    蔚來獲得CACSI車型滿意度和售后服務滿意度第一名

    近日,由中國質量協會發布的2024年中國新能源汽車用戶滿意度測評結果(CACSI)出爐。蔚來ET5T榮獲純電動中型轎車滿意度第一名,蔚來品牌榮獲售后服務滿意度第一名。蔚來已連續兩年獲得CACSI車型滿意度和售后服務滿意度第一名
    的頭像 發表于 12-06 17:19 ?1895次閱讀

    機械革命發布CODE AI程序員

    近日,英特爾新質生產力技術生態大會在成都舉行,機械革命作為重要參展商帶來了多款明星產品引爆全場!其中更是在AI PC軟件生態產品發布分論壇上,Intel、智譜、機械革命三方聯合發布了專為程序員設計的CODE AI程序員本,成為本次大會的
    的頭像 發表于 11-30 10:34 ?980次閱讀

    Linux驅動程序程序員指南

    電子發燒友網站提供《Linux驅動程序程序員指南.pdf》資料免費下載
    發表于 11-22 15:53 ?0次下載
    Linux驅動<b class='flag-5'>程序</b><b class='flag-5'>程序員</b>指南

    AI編程工具會不會搶程序員飯碗

    AI編程工具可輔助編程,減少手動編碼,提升效率,對程序員有積極影響也有挑戰。程序員需深化技能、拓寬知識應對。長遠看,AI與人類程序員將共生共榮。
    的頭像 發表于 11-08 10:17 ?486次閱讀

    第五屆長沙·中國1024程序員節開幕

    據官方媒體報道,10月24日;? 第五屆長沙·中國1024程序員節在湖南湘江新區開幕;本次中國1024程序員節以“智能應用新生態”為主題。設置有岳麓對話、技術英雄會、主題峰會及賽事、展覽等活動,
    的頭像 發表于 10-25 15:42 ?444次閱讀

    90后程序員的職業成長漫談

    作者:京東零售 盧楠 前言: 我在京東工作已經來到第8個年頭,從2016年的實習生到如今負責部門整體架構,這段職業旅程中充滿了感悟。 簡單回顧我的個人成長里程碑:2017年正式加入京東后,從一名新人
    的頭像 發表于 10-15 15:24 ?486次閱讀
    90后<b class='flag-5'>程序員</b>的職業成長漫談

    京東上萬程序員都AI用它!

    對大模型生成代碼進行智能修復,為程序員開啟代碼漏洞修復的“自動駕駛”模式,不但減少人工接入、提高工作效率,更為企業抵御內外部各種攻擊構建起道堅固的安全屏障,確保業務的連續性和穩定性。 JoyCoder是京東云自主研發的款輔助
    的頭像 發表于 07-17 16:29 ?448次閱讀
    京東上萬<b class='flag-5'>程序員</b>都AI用它!

    程序員節視頻創意大賽,用串口屏贏取千元大獎

    10月24日,程序員專屬的節日里,我們盛大開啟“程序員節視頻創意大賽”特別活動!這不僅是場視覺的盛宴,更是智慧與創意的璀璨碰撞。我們誠摯邀請每
    的頭像 發表于 07-08 10:38 ?72次閱讀
    <b class='flag-5'>程序員</b>節視頻創意大賽,用串口屏贏取千元大獎

    程序員節視頻創意盛宴,邀您共襄盛舉!

    10月24日,程序員專屬的節日里,我們盛大開啟“程序員節視頻創意大賽”特別活動!這不僅是場視覺的盛宴,更是智慧與創意的璀璨碰撞。我們誠摯邀請每
    的頭像 發表于 07-04 09:00 ?67次閱讀
    <b class='flag-5'>程序員</b>節視頻創意盛宴,邀您共襄盛舉!

    助力程序員告別困擾已久的夢魘-Bug

    程序員的噩夢是什么?不用懷疑,就是讓你加班到崩潰的Bug!下面是經過業界大佬們“長期加班”積累的小妙招,助力你離早下班又進步~、定位Bug范圍及性質要有效解決問題,首先要縮小范圍,集中關注最近
    的頭像 發表于 07-02 08:10 ?656次閱讀
    助力<b class='flag-5'>程序員</b>告別困擾已久的夢魘-Bug

    大模型時代,程序員當下如何應對 AI 的挑戰

    隨著 AI 技術的飛速發展,特別是大模型的出現,傳統的程序員角色正在經歷深刻的變革,我們不得不重新對自己進行審視和思考。 通用領域大模型的“泛化能力” 在過去的二十年內,AI 領域的大部分研究
    的頭像 發表于 06-28 16:19 ?816次閱讀
    大模型時代,<b class='flag-5'>程序員</b>當下如何應對 AI 的挑戰
    主站蜘蛛池模板: 天天躁夜夜躁狠狠躁2018a | 黄色片xxxx | 国产逼逼视频 | 国产三级在线播放 | 狼狼色丁香久久女婷婷综合 | 日本三级在线视频 | 手机看片日韩福利 | 色综合久久久久久久久五月性色 | 欧美日韩国产成人精品 | 曰本女人色黄网站 | aa三级动态图无遮无挡 | 日本福利片午夜免费观着 | 小屁孩和大人啪啪 | 久草tv| 午夜看黄 | 天天色天天操综合网 | 国内精品久久久久久久久野战 | 亚洲免费网站在线观看 | 精品国产乱码久久久久久浪潮 | 天堂网址 | 日韩色区 | 看日本黄色大片 | 特黄特黄aaaa级毛片免费看 | 日本人的色道www免费一区 | 国产汉服被啪福利在线观看 | 色综合99 | www.色.com| 免费的毛片网站 | 直接在线观看的三级网址 | 日本欧美一区二区三区视频 | 四虎影在线永久免费观看 | 亚洲综合成人网在线观看 | 四虎永久免费影院在线 | 成人精品一区二区不卡视频 | 亚洲第一网站 | 国产美女特级嫩嫩嫩bbb | 亚洲精品美女久久久aaa | 一级色视频 | 久久久久久久免费 | 日韩第五页 | 成人亚洲欧美综合 |