erlangpython
A. 同時會C、C++、java、C#、PHP、python、Erlang的人可以找什麼工作
LZ真厲害,是這些度精通嗎,還是說都會一點,要是都精通那找工作還不是手回到勤來的,如果答說是都會一點,那就找個自己最精通的,有興趣的,一門心思往這邊發展,程序員的工資還是挺高的,雖然會累一點,所以說適合什麼工作,只有LZ自己知道了,。
B. 如何用程序載入erlang虛擬機
(1)erlang應用程序啟動過程中,還可以分階段啟動。
在erlang應用程序的資源文件*.app可以定義分步驟啟動。
*.app中的start_phase欄位的值可以指定多個參數分別啟動
start_phase的調用時機是在start之後調用的。
(2)erlang是一種分布式語言,在啟動應用程序時感覺與C/C++/Java/python都有很大的區別,因為沒有main函數
其實這是一個已經可以發布的應用程序與非發布式程序的區別。
如果是一個已經發布的應用程序,安裝後啟動時,還是有main函數的。
類似Java,Java JVM是用C語言開發的,erlang虛擬機也是用C開發的,非發布的應用程序啟動,
諸如:application:start(appName),這是在虛擬機里啟動的。
erl其實是個shell腳本,在erl腳本中它實際調用的是erlexec,這個程序的入口是erlexec.c。
erlexec的main函數首先解析命令行傳入的參數和環境變數,然後尋找beam可執行文件,
然後就通過execv運行Beam虛擬機,erlexec就是個載入器,在這個過程中就會將命令行參數傳遞給虛擬機中的init進程。
這個時候發現erlang就像是一個操作系統,linux操作系統中也有init進程。
C. 如何理解erlang的分布式和並發
Erlang的並發性能也並非最強過去曾認為Erlang就代表高並發,高並發就代表高性能,同時認為Erlang就只是高並發的代名詞。其實,Erlang的並發性能也並非最強。首先Erlang的虛擬機是C寫的,其次諸如Haskell、OCaml + JoCaml,以及Python的PyPy,其實都能提供不弱於Erlang的並發能力。
同時Erlang在順序計算上的性能也不佳,甚至不能超過Python、Lua這類腳本語言(也許是和其本身的特殊性質有關)。所以就更落後於Haskell和OCaml這類可編譯的語言。然而即使並發和並行也需要順序計算,所以單從並發性能上來說,Erlang還不是最強的。
Erlang寫的Yaws這個Web伺服器,雖然能承受高並發,但性能,尤其是IO性能依然無法與lighttpd、nginx這種C寫的Web服務相比——Erlang的虛擬機本身也是C寫的。
同時,Erlang本身設計為一個結構化編程語言而非面向對象編程語言。這就令其較難應用更有開發效率的面向對象的項目開發流程和方法。
那麼為何Erlang在並發、分布式編程中如此受推崇?我認為因為它本身是並發和並行在語義、處理上的一致,所以它編寫此類程序更加方便。同時,它提供的是一個關於並發、並行以及分布式的統一的解決方案,而不僅僅是高並發。它的目的是構建有容錯能力、有伸縮性的可靠系統,同時又能最簡化編程工作。這就是它的真正的優勢。
D. 如何用程序啟動erlang虛擬機
(1)erlang應用程序啟動過程中,還可以分階段啟動。
在erlang應用程序的資源文件*.app可以定義分步驟啟動。
*.app中的_phase欄位的值可以指定多個參數分別啟動
start_phase的調用時機是在start之後調用的。
(2)erlang是一種分布式語言,在啟動應用程序時感覺與C/C++/Java/python都有很大的區別,因為沒有main函數
其實這是一個已經可以發布的應用程序與非發布式程序的區別。
如果是一個已經發布的應用程序,安裝後啟動時,還是有main函數的。
類似Java,Java JVM是用C語言開發的,erlang虛擬機也是用C開發的,非發布的應用程序啟動,
諸如:application:start(appName),這是在虛擬機里啟動的。
erl其實是個shell腳本,在erl腳本中它實際調用的是erlexec,這個程序的入口是erlexec.c。
erlexec的main函數首先解析命令行傳入的參數和環境變數,然後尋找beam可執行文件,
然後就通過execv運行Beam虛擬機,erlexec就是個載入器,在這個過程中就會將命令行參數傳遞給虛擬機中的init進程。
這個時候發現erlang就像是一個操作系統,linux操作系統中也有init進程。
E. erlang程序怎麼調用java程序
1.保留但大幅度簡化指針語言保留著C中值和指針的區別,但是對於指針繁瑣用法進行了大量的簡化,引入引用的概念。所以在Go語言中,你幾乎不用擔心會因為直接操作內寸而引起各式各樣的錯誤。2.多參數返回還記得在C裡面為了回饋多個參數,不得不開辟幾段指針傳到目標函數中讓其操作么?在Go裡面這是完全不必要的。而且多參數的支持讓Go無需使用繁瑣的exceptions體系,一個函數可以返回期待的返回值加上error,調用函數後立刻處理錯誤信息,清晰明了。3.Array,slice,map等內置基本數據結構如果你習慣了Python中簡潔的list和dict操作,在Go語言中,你不會感到孤單。一切都是那麼熟悉,而且更加高效。如果你是C++程序員,你會發現你又找到了STL的vector和map這對朋友。4.InterfaceGo語言最讓人贊嘆不易的特性,就是interface的設計。任何數據結構,只要實現了interface所定義的函數,自動就implement了這個interface,沒有像Java那樣冗長的class申明,提供了靈活太多的設計度和OO抽象度,讓你的代碼也非常干凈。千萬不要以為你習慣了Java那種一條一條加implements的方式,感覺還行,等介面的設計越來越復雜的時候,無數Bug正在後面等著你。同時,正因為如此,Go語言的interface可以用來表示任何generic的東西,比如一個空的interface,可以是string可以是int,可以是任何數據類型,因為這些數據類型都不需要實現任何函數,自然就滿足空interface的定義了。加上Go語言的typeassertion,可以提供一般動態語言才有的cktyping特性,而仍然能在compile中捕捉明顯的錯誤。
F. 有學Erlang的嗎 大家一起學
我最早使用的語言是Java和Python, 並且一直都對Python充滿好感, 我喜歡這種很朴實和高效率的感覺, 但我卻最後沒有採用Python,原因其實也很簡單, 我就是不喜歡縮進語法, 就跟很多人換工作僅僅是為了屏幕更大一點一樣, 另外就是有了同樣很棒的可選方案, 這就是Ruby, 所以我最終採用了Ruby作為主力編程語言, 同樣也為不能使用Python而有一點小遺憾,畢竟Python的健壯性比Ruby好很多,只不過Ruby也一直在進步, 所以這一點無傷大雅
我們都知道,無論是Python還是Ruby,甚至Java, 都是在解決業務層的問題, 屬於應用型語言, 以解決業務邏輯為主, 但還有一個領域是系統領域,偏網路層和底層操作,在這一塊我一直在尋找一種優雅的方案, C++被我首先給淘汰掉了, C的開發效率太低, Java倒是比較合適, 就是太臃腫,而且缺少系統編程的基因,畢竟它是級開發出身的
最後我選擇了Erlang, 因為它在網路層方面表現優秀, 同時容錯性和健壯性都很不錯, 它的虛擬機是唯一可以跟JVM媲美的, 而且還有OTP的超重量級武器, 幾乎可以是通殺網路層應用, 但根據我的總結它有一個硬傷和一個軟肋,這一點後面展開,可以說選擇Erlang是我目前所知道的方案裡面是最優的
直到有一天我了解了Golang, 我知道Golang其實也蠻早的, 大概08年的時候就知道Google在搞一門奇怪的語言, 之後的幾年,一直有不少以老莫為代表的人在嘀咕Golang, 其實我一直沒太關注,我從ROR中吸取的經驗是,成熟度對於商用很重要, 後來基於Golang開發的產品越來越多,讓我不得不去研究一下, 這我才知道, 這就是我夢想中的Python, 效率和性能達到了最佳的平衡,對Go了解越多, 就越不願意用Erlang寫代碼,主要原因:
1、Erlang的硬傷在於代碼的可讀性、表現力, 讓我來舉個小例子, 比如你為你的系統構建一個RESTFUL的介面,我們大致了解一下代碼風格,先不說Erlang, 無論是你c/c++/python/ruby/java 出身, 對Go是不是有種很久違的感覺, 為什麼說是硬傷? 因為對一門語言來說,語法是不大可能會大幅度變更的, 而且不會出現大的變化, 我不知道有沒有人讀過《松本行弘的編程世界》,裡面闡述的道理很明白, 真正好的編程方式是人去主宰計算機而不是計算機主宰人, 我感覺Erlang就有點主宰我的編程思維的感覺(我的視力本身就不好,它還在不斷的扼殺我的眼睛!), 編程首先是門邏輯學,其次是工程學,最後才是數學, 又讓我想起吳軍的《數學之美》所說的, 人工智慧上個世紀一直在走彎路, 期望機器的高度圖靈完備, 而忽視人類本身已有的文明,統計歸納的應用
2、Erlang的軟肋在於高質量的庫少,盡管有不少殺手級應用, 同樣Go在這方面也是軟肋, 這一點對於一個不到五年的語言有情可原, 但對於一個20多年的語言是不是有點說不過去, 比如你用json解析庫,很多人都是從mochiweb這個基本不更新的庫中去抽取, 而我認為對於類似json這種東西可以考慮融入到語言標准庫中, 因為未來的商業的api化趨勢越來越明顯,說的難聽點 , 一個倚老賣老一個與時俱進,反正我對Golang的庫一點也不擔心, 目前的成績易經非常棒了, 遠遠優於Ruby/Python的前五年, 可參見已有的高質量的庫列表
3、Erlang不合群, 這主要體現在跟其他語言的交互性上, 當然這也有深層次的原因, Erlang本身有自己的哲學, 如出錯恢復機制, 你融入一個其他語言的東西進去, 這帳就不好算,就好比你硬要讓一個喝咖啡的跟一個吃大蒜的坐在一起, 總之你寫一個Erlang的port遠遠比Go復雜, 甚至比Python/Java還要復雜, 這就造成了Erlang在底層編程上效果不是很好, 沒法利用linux已有的很多優秀成果,我一直認為Erlang的什麼的mysql/pg/oracle驅動都沒有必要存在, Erlang一定是一個self-container應用, 你只要用到了其他東西, 根據木桶理論, 你就不敢號稱9個9,以系統的眼光看問題, 我覺得一個系統的魯棒性不能依賴於某一組件, 這也是為什麼愛立信本身的Erlang應用並不廣泛
4、說說數據類型吧, 我不止聽到1個人說Erlang對字元串的處理不有好, 它把string當做list來處理,其實本質上是該這么,但,還是那句話, 違背了面向人的哲學, 應該做一些DSL, 比如Golang裡面的 := 就是一個糖衣, 等價於 var xx yyy = zzzz, 大大方便的程序員少敲不少字元, Golang裡面對字元轉可以說基本和python差不多, slice map函數很強大, 支持lambda條件,雖然Erlang的基本類型很少, 但有很多構造, 所謂構造等價於Golang裡面復雜的struct, 也奇怪了,我就是感覺Erlang構造傷眼睛好嗎?可能是各種括弧的比對的原因吧, 而且我認為這是不必要的, 顯然Erlang缺少DSL的基因, 當然跟Erlang出身的年代有關, 我不誇張的說, 自打用Erlang以後我的視力又下降了100度左右, 我不是很喜歡lisp所說的符號也是一種語法, 可能這又跟函數式編程有關吧:形式推導遠大於邏輯演繹
5、其實我最不關注的是性能問題, 因為隨著摩爾定律, 單位計算單元的性價比會無限高,但Golang既然提出它的性能逼近C, 那我還是提一下吧, 當然, Erlang也還可以, 雖然比Java慢, 但跟Python一個檔次吧
6、再談談報錯機制, 因為Erlang的的報錯信息太讓人糾結了, 起初以為我不會看出錯信息, 後來也使用了Sasl, 還是不夠直觀,甚至有時要用工具分析crash文件來定位問題,還是跟Erlang的哲學有關, 在Erlang中一切都是並行的, 所以它根本不care是物理哪一行出錯, 只跟Actor綁定, 然後告訴你Actor的ID和出錯代號, 你自己憑經驗去分析吧,這樣做的好處是可以很方便定位出並行中出現的問題,但凡事都是相對的, 在這一點上有點糾枉過正,根據我的經驗, 絕大部分時候我只希望先給我明確的指出哪一行出錯了好嗎? 甚至把順序的backtrace用完整的英文句子列印出來好嗎?至於並行中的錯誤及時在命令式多線程語言中是不常見的,雖然並不是沒有, 但遇到錯誤我再費勁去調試好了, 但並不是所有的邏輯都用並行的思維去定位問題, 我甚至認為, 對於一個系統不完全是並行也不完全是串列,跟好比我們衡量世界不能單純的唯物也不能完全的唯心一樣, 這一點Golang就做了很好的折中, 不需要並行的時候你老老實實的寫串列代碼, 需要並行的時候也有較復雜的機制來應對, 合乎情理
7、再說說招人吧, 以前招過好幾個C出來的人,說實話水平很好, 可以一周就完成一個小組件, libevent用的熟的很,後來我逼人家用Erlang,結果把人家逼走了,至今我還很後悔, 自己的一廂情願強加在別人身上真是太不合適了,但我招純Erlang出來的人,可以說比招objc的人還難, 沒有人,空談技術的優雅性首先就是不靠譜的,再看看列表, Golang的活躍度明顯比Erlang高很多, 基本逼近Ruby,更重要的是, 我根本不擔心Golang的人才,因為只要熟悉Python/C/Ruby/或者C++, 基本可以實現半天入門, 之後就可以噼里啪啦邊搜資料邊幹活了,雖然有足夠的深度,但門檻極其平緩,工程人員也可以復用很多已有的知識。 Erlang在這一點其實跟第一點硬傷有關,大部分人學一周都摸不著頭腦,不是每個人的抽象思維和世界觀都是一樣的好嗎, 所以函數式編程盡管不比命令式語言起步晚,但始終學的人很少,這就是歷史, 對於大部分人, 更希望解決問題,創造價值, 而不是數學來推導去
8、最後我建議, 如果你是玩c/c++的, 現在開始學Golang,是最好的時機, 跟一門靠譜的語言一起成長, 這種感覺非常棒, 你用Erlang折騰1個應用, 用Go恐怕都完成了10個開源項目, 當然,也要結合自己的口味, Golang就是Sublime Text, Erlang就是Emacs
相信自己的判斷,相信自己的邏輯, 贏就是贏,輸就是輸
轉載僅供參考,版權屬於原作者。祝你愉快,滿意哦
G. python與erlang誰更使用
你主要想干什麼 兩個語言的基本思想不一樣的。
個人覺得Python好用點 但是erlang的多線程超強。
如果解決了您的問題請點贊!
如果未解決請繼續追問!
H. Erlang元組與列表的區別和聯系
最早使用的語言是Java和Python, 並且一直都對Python充滿好感, 我喜歡這種很朴實和高效率回的感覺, 但我卻最後沒答有採用Python,原因其實也很簡單, 我就是不喜歡縮進語法, 就跟很多人換工作僅僅是為了屏幕更大一點一樣
I. C和Python,Erlang和Haskell問題,怎麼解決
C是面向過程的,但是C++是面向對象的,C++比JAVA難學,都說C++如果學得很牛,學JAVA就非常輕松,我沒學過C++,直接學的JAVA。
J. RSA加密Erlang和Python之間問題,怎麼解決
RSA加密Erlang和Python之間問題,怎麼解決
驗證碼的問題是測試中常見的。基本上有三種方法:版
和研發協商權去掉驗證碼,或者提供萬用驗證碼。這是比較符合實際且實用的。
如果可以從資料庫中獲取相應的驗證碼,那就讀取資料庫。
驗證碼識別方法,通過某些中間件去識別驗證碼,但是成功率不高,這和工作的本質思想相違背,不建議使用。
建議實用1和2.