91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

一名Erlang程序員的自述

工程師人生 ? 來源:工程師吳畏 ? 2019-06-20 17:39 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作為程序員,我們曾經(jīng)聞聽很多“業(yè)界動態(tài)”,“技術(shù)革新”,曾經(jīng)接觸很多“高手箴言”,“權(quán)威推薦”。這些正確與否,都已成過去!

現(xiàn)在,讓我們迎接Erlang盛宴!

一、經(jīng)歷

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

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

2008年4月,通過各種資料的搜集,了解,我決定系統(tǒng)的學(xué)習(xí)Erlang。

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

二、困惑

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

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

三、Erlang是什么

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

Erlang最初是愛立信為開發(fā)電信相關(guān)產(chǎn)品而產(chǎn)生。

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

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

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

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

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

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

四、Erlang的語言特性

1.簡單小巧

Erlang中只有8種基本的數(shù)據(jù)類型:

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

同時提供2種復(fù)合結(jié)構(gòu):tuple,list,這就是Erlang的所有數(shù)據(jù)類型。

2.模式匹配

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

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

price(apple) -》 2.0;

price(banana) -》 1.2.

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

學(xué)習(xí)Erlang一個非常重要的內(nèi)容就是模式匹配,但是請不要混淆,這個匹配和正則表達式?jīng)]有任何干系。

3.變量單次賦值

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

4.豐富的libs

Erlang中提供豐富的libs

stdlib中包含大量的數(shù)據(jù)結(jié)構(gòu)如lists,array,dict,gb_sets,gb_trees,ets,dets等

mnesia提供一個分布式的數(shù)據(jù)庫系統(tǒng)

inets提供ftp client,http client/server,tftp client/server

crypto 提供加密解密相關(guān)函數(shù),基于openssl相關(guān)實現(xiàn)

ssl 實現(xiàn)加密socket通信,基于openssl實現(xiàn)

ssh 實現(xiàn)ssh協(xié)議

xmerl 實現(xiàn)XML相關(guān)解析

snmp 實現(xiàn)SNMP協(xié)議(Simple Network Management Protocol)

observer 用來分析與追蹤分布式應(yīng)用

odbc 使Erlang可以連接基于SQL的數(shù)據(jù)庫

orber 實現(xiàn)CORBA對象請求代理服務(wù)

os_mon 提供對操作系統(tǒng)的監(jiān)控功能

dialyzer提供一個靜態(tài)的代碼或程序分析工具

edoc 依據(jù)源文件生成文檔

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

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

5.靈活多樣的錯誤處理

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

6.代碼熱替換

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

7.天生的分布式

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

8.超強的并發(fā)性

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

9.多核支持

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

10.跨平臺

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

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

11.開源

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

五、Erlang與外界的交互

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

Erlang支持分布式開發(fā),您可以創(chuàng)建一個C Node,其如同一個Erlang節(jié)點,前提是你遵照Erlang的規(guī)范。

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

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

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

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

六、Erlang應(yīng)用場景

分布式產(chǎn)品,網(wǎng)絡(luò)服務(wù)器,客戶端,等各種應(yīng)用環(huán)境。

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

七、Erlang的學(xué)習(xí)過程

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

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

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

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

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

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

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

可能遇到的困難:

a) 對于語法的不適應(yīng)?

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

b) 有些數(shù)據(jù)類型不清楚?

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

c) 中文資料的缺乏?

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Erlang程序
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    5823
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    大理的AI野心藏不住了——風(fēng)花雪月中千程序員探討人工智能

    2025 年12月4日至6日第二屆CCF程序員大會暨大理人工智能與應(yīng)用國際開發(fā)者大會在大理圓滿落幕。
    的頭像 發(fā)表于 12-24 17:45 ?724次閱讀
    大理的AI野心藏不住了——風(fēng)花雪月中千<b class='flag-5'>名</b><b class='flag-5'>程序員</b>探討人工智能

    隼眼科技獲得第六屆綜合交通創(chuàng)新創(chuàng)業(yè)大賽總決賽第一名

    由中交集團舉辦的第六屆綜合交通創(chuàng)新創(chuàng)業(yè)大賽總決賽于12月16日落下帷幕,隼眼科技參賽的“基于92-94GHz毫米波雷達的全天候感知系統(tǒng)”獲得了第一名的好成績。
    的頭像 發(fā)表于 12-18 17:07 ?650次閱讀

    程序員最常見謊言

    了。 28我已經(jīng)測試過了,這個功能沒問題,可以上線了。 29別擔(dān)心,這個問題很快就能解決。 30代碼快寫完了,已經(jīng)完成 90% 了 。 希望大家對程序員些容忍以及諒解! 各位程序員你們都被我說中了哪些?說說你們的觀點
    發(fā)表于 12-10 08:24

    奔赴熱AI,碼力全開!Talkweb House@1024程序員日系列活動圓滿收官

    1024程序員日”系列活動至此劃上了個圓滿句號。本屆1024程序員節(jié)以“AI構(gòu)建世界,智能引領(lǐng)未來”為主題,廣邀技術(shù)大咖、產(chǎn)業(yè)領(lǐng)袖、企業(yè)代表與全球開發(fā)者齊聚星城
    的頭像 發(fā)表于 10-27 18:59 ?787次閱讀
    奔赴熱AI,碼力全開!Talkweb House@1024<b class='flag-5'>程序員</b>日系列活動圓滿收官

    開鴻智谷“以賽促學(xué)、以賽選才”|1024程序員節(jié)暨開源鴻蒙構(gòu)建大會圓滿落幕!

    10月24日,由開鴻智谷聯(lián)合主辦的長沙1024程序員節(jié)暨開源鴻蒙構(gòu)建大會在長沙圓滿落幕。本次活動以“湘聚長沙,共赴熱AI”為主題,通過技術(shù)分享與實戰(zhàn)競賽相結(jié)合的方式,著力培養(yǎng)“開源鴻蒙+AI”領(lǐng)域
    的頭像 發(fā)表于 10-27 17:58 ?715次閱讀
    開鴻智谷“以賽促學(xué)、以賽選才”|1024<b class='flag-5'>程序員</b>節(jié)暨開源鴻蒙構(gòu)建大會圓滿落幕!

    東風(fēng)本田CR-V榮獲2025合資SUV質(zhì)量體驗第一名

    近日,2025年中國汽車產(chǎn)品質(zhì)量表現(xiàn)研究(AQR)結(jié)果發(fā)布暨頒獎典禮圓滿落幕。東風(fēng)本田CR-V憑借卓越的質(zhì)量表現(xiàn),榮獲“合資SUV質(zhì)量體驗第一名”的桂冠,這權(quán)威獎項不僅是對東風(fēng)本田CR-V的肯定,更是對品牌在質(zhì)量、品質(zhì)等方面多年堅守“長期主義”的最佳褒獎。
    的頭像 發(fā)表于 10-09 09:56 ?605次閱讀

    作為一名PCB質(zhì)檢工程師,我為什么在用手持式面銅測試儀?

    在PCB行業(yè),銅厚直是決定阻抗、散熱與可靠性的關(guān)鍵指標。過去,工程師把板子搬到實驗室、等待臺式銅厚儀出結(jié)果;作為一名PCB質(zhì)檢工程師,如今,我更愿意把“實驗室”揣進口袋——手持式面銅測試儀正在成為
    發(fā)表于 08-11 11:59

    軟通動力斬獲2024年中國IT服務(wù)市場份額第一名

    近日,賽迪顧問發(fā)布《2024-2025年中國信息技術(shù)服務(wù)市場研究年度報告》。軟通動力憑借在智能化轉(zhuǎn)型浪潮中的卓越表現(xiàn),以領(lǐng)先的數(shù)智化能力持續(xù)領(lǐng)跑中國IT服務(wù)市場,不僅斬獲2024年市場份額第一名,更在IT咨詢、IT運維等核心領(lǐng)域鞏固優(yōu)勢,綜合競爭力持續(xù)提升。
    的頭像 發(fā)表于 08-01 17:53 ?1938次閱讀

    潤和軟件穩(wěn)居數(shù)字業(yè)務(wù)類解決方案市場第一名

    ”)憑借自身卓越的技術(shù)實力和創(chuàng)新能力,連續(xù)五年穩(wěn)居數(shù)字業(yè)務(wù)類解決方案市場第一名;在細分領(lǐng)域:數(shù)字信貸系統(tǒng)解決方案子市場持續(xù)保持第一名,數(shù)字銀行解決方案子市場躍升至第一名。同時,其在開放銀行、交易銀行、智能營銷、智能風(fēng)控、數(shù)據(jù)智能
    的頭像 發(fā)表于 07-14 17:36 ?1374次閱讀

    華為榮登GlobalData運營商基礎(chǔ)設(shè)施管理服務(wù)排名報告Leader象限第一名

    象限第一名。 報告對通信服務(wù)商從商業(yè)模式、解決方案、網(wǎng)絡(luò)設(shè)計與優(yōu)化、網(wǎng)絡(luò)轉(zhuǎn)型能力、服務(wù)規(guī)模、和業(yè)務(wù)敏捷性六個維度進行了全面評估,華為綜合得分第。這印證了華為在對全球運營商客戶提供領(lǐng)先服務(wù)解決方案、網(wǎng)絡(luò)極致性能和數(shù)智化轉(zhuǎn)型等方面做出了卓越
    的頭像 發(fā)表于 05-22 18:43 ?1091次閱讀
    華為榮登GlobalData運營商基礎(chǔ)設(shè)施管理服務(wù)排名報告Leader象限第<b class='flag-5'>一名</b>

    程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)

    的地址)出發(fā),采用推導(dǎo)的方式,深入淺出的分析了廣大C程序員學(xué)習(xí)和開發(fā)中遇到的難點。 2. 從方法論的高度對C語言在數(shù)據(jù)結(jié)構(gòu)和算法方面的應(yīng)用進行了深入講解和闡述。 3. 講解了絕大多數(shù)C程序員開發(fā)
    發(fā)表于 05-13 16:45

    如何成為一名合格的KaihongOS南向驅(qū)動開發(fā)工程師

    如何成為一名合格的南向驅(qū)動開發(fā)工程師 1. 我需要具備哪些方面的知識? KaihongOS南向適配的方向分為:驅(qū)動開發(fā)、內(nèi)核開發(fā)。根據(jù)適配方向劃分,需要掌握的知識技能分別為: 驅(qū)動開發(fā)
    發(fā)表于 04-23 08:02

    如何成為一名合格的KaihongOS北向應(yīng)用開發(fā)工程師

    如何成為一名合格的北向應(yīng)用開發(fā)工程師 在快速發(fā)展的軟件開發(fā)領(lǐng)域,北向應(yīng)用開發(fā)工程師是個專注于系統(tǒng)級應(yīng)用開發(fā)的高需求職位。 以下是成為一名合格的KaihongOS北向應(yīng)用開發(fā)工程師的建議。 1.
    發(fā)表于 04-23 06:46

    如何成為一名嵌入式軟件工程師?

    如何成為一名嵌入式軟件工程師? 01明確崗位的角色與定位 嵌入式軟件工程師主要負責(zé)開發(fā)運行在特定硬件平臺上的軟件,這些軟件通常與硬件緊密集成,以實現(xiàn)特定的功能。 不僅需要精通編程語言(如C/C++
    發(fā)表于 04-15 14:37

    基于XIAO ESP32C6的HA空氣質(zhì)量檢測儀設(shè)計

    今天小編給大家?guī)淼氖莵碜訫IT的Jason的基于XIAO ESP32C6的HA空氣質(zhì)量檢測儀項目,作為一名程序員,Jason經(jīng)常自己連續(xù)幾個小時坐在辦公桌前,沉浸在行行代碼中。后來意識到周圍的空氣質(zhì)量,尤其是二氧化碳水平不斷
    的頭像 發(fā)表于 03-21 14:09 ?2189次閱讀
    基于XIAO ESP32C6的HA空氣質(zhì)量檢測儀設(shè)計