精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Scala和Erlang,以及多核主導的未來

開發 后端
這篇文章于08年發布在Infoq上,在過了一年之后,這篇文章中所談到的東西仍然很有參考價值。如果您還沒有閱讀過這篇文章,那就再看一看多核時代為何能成為Scala和Erlang的天下吧。

未來注定是多核的世界,問題在于如何去解決多核的危機。Scala和Erlang是兩門渴望成為其解決方案的語言,但它們也有些許的不同。那么它們所采取的方式各有什么利弊呢?

引入問題

摩爾定律已經改變了。我們不再獲得和以前一樣的時鐘頻率增長,取而代之,我們得到了更多的(CPU)核心。今天,也許你的筆記本都已經是雙核的了。

為了利用多核的特性,應用程序需要支持并發。如果你的客戶買了一臺八核的機器,要向他們解釋清楚正常情況下應用程序只會用到12%的CPU能力將是一件費時費力的事,即便該機器是為該應用量身定制的。

在未來,情況可能變得更糟。你的順序執行代碼不僅不會跑得更快,甚至有可能實際上跑得更慢。其原因在于,你獲得越多的核心,由于功耗和散熱的影響,每個核心就會更慢。幾年之后,英特爾就會給我們帶來32核的CPU,按這種趨勢,在我們不知不覺之中數千核的CPU就會出現。但每個核心都會比現在的核心慢很多。

并發代碼

一個顯見的解決途徑就是編寫(或重寫)軟件以支持并發。最常見的方式莫過于使用線程,但大多數開發者都認為基于線程的應用編寫起來特別的困難。死鎖,餓死以及競爭條件對大多數并發開發者來說都是太熟悉的概念了。Erlang和Scala都大大減輕了這種痛苦。

語言概覽

Scala常被看作是下一個主要的JVM語言。它結合了面向對象編程的范式和函數式編程的范式,與Java相比有著更簡潔的語法,它是靜態類型的,有著跟Java一樣或者有時候更快的運行速度。有太多的理由值得去認真探索一下Scala。

Erlang是一門為健壯性而生的語言,由于它的設計,它自然又是一門有著極好伸縮性的語言。它比Java歷史更早,但卻常被看作引領未來并發的語言。它是一門動態類型的函數式語言,有著一些非凡的系統正常運行時間的成功例子。

爭論核心

那么Scala與Erlang爭論的到底是什么呢?說到底,就是性能表現與伸縮能力,但這爭論也包括了其它像風格,語言特性以及庫支持等等。這場爭論開始于Ted Neward有一次無心的給出了他對幾種語言的看法,并稱“[Erlang]在其自己解釋器上運行事實上[是]很差的”。

Steve Vinoski與Ted于是展開了幾輪爭論,但這一討論很快轉移到了更多的博客上,爭論的焦點也轉變成了Scala與Erlang之間那些有趣的差異和共同點。我們將總結每個有意思的論點并給出每種語言的利弊,并表達對一些問題的各種不同看法。

可靠性

Steve Vinoski就Ted所發表的帖子進行了回應,給出了他對于“Erlang在其自己解釋器上運行”的感受:

事實上,Erlang在其自己解釋器上運行得,很好很強大;如若不然,不可能有如此好的可靠性,它將只是又一個面向并發的有趣但卻無用的語言實驗而已。

Steve談到這個問題,就算一個語言本身可靠,它所依賴的基礎也必須可靠才行。因為Erlang從骨子里就是為可靠性而設計的,從而支持并發,所以它不會受到一些并發性常見問題的影響,這主要是底層庫包在并發環境下運行很好。

另一方面,Scala是站在JVM之上的,所以一個重要賣點在于可潛在地使用所有現成的Java代碼。然而,大部分的Java代碼并非專為并發而設計的,使用Scala代碼時要將此考慮進去。

輕量級進程

要運行大規模并發應用,你需要大量的并行執行。這可以通過幾種方式達到。使用線程是一種常見的方式,使用進程又是另一種。其區別之處在于,線程與其它線程之間共享內存,而進程是相互獨立的。這意味著線程需要像互斥信號這樣的鎖機制,防止兩個線程在同一時間對同一內存進行操作,但進程不會受此問題影響,相反是使用一些消息傳遞機制來跟其它的進程間通信。但進程在性能和內存方面的代價是昂貴的,這正是人們就算知道基于線程的并發是一種極復雜的編程模型也寧愿選擇它的原因。

Steve Vinoski這樣寫到:

提供互不共享的輕量級進程架構將使得大規模并發能力變得十分容易,但這并不意味著一旦你設計好了,剩下的就只是編程的工作那么簡單。

Erlang采取了這樣的并發方式。一個Erlang進程是非常輕量化的,Erlang應用常常擁有成千上萬的線程甚至更多。

Scala通過基于事件的Actor從另一方面達到了同樣的效果。Yariv Sadan解釋說:

Scala有兩種類型的Actor:基于線程或是基于事件。基于線程的Actor在重量級的OS線程內部執行。它們從不相互阻塞,但每個VM上可伸縮的Actor不會多于幾千個?;谑录腁ctor是簡單的對象。它們是十分輕量化的,并且,像Erlang進程一樣,因此它們可以在一臺現代的機器上數以百萬計的產生。

Yariv解釋到,盡管如此,這里面也還是有一些區別的:

與Erlang進程的區別之處在于,每個OS線程內部,基于事件的Actor是順序執行的并且使用沒有強占式調度算法。這使得一個基于事件的Actor可能在很長一段時間內阻塞其OS線程(甚至是無限的)。

不可變性

Erlang是一門函數式語言。這意味著其數據是不可變的,像Java的String一樣,并且沒有副作用帶來的風險。對數據的任意操作會產生一個該數據新的修改后的版本,但原數據仍然不變。在談到健壯性的時候,不可變性是其需要高度注意的一個因素,因為沒有代碼可以無意間修改其它代碼依賴的數據,但從并發的觀點來看,不可變性也是一個十分重要的特性。如果數據不可變,其被兩個并行執行路徑更改的風險就不存在,因為沒有辦法改變它且不需要保持同步,所以數據可以被拷貝到其它機器上。

因為Scala構建在JVM之上,結合了面向對象和函數式方法的特點,它不具備像純函數式語言的不可變性的保證。然而,在Yariv日志的評論部分,Yariv和David Pollack就這兩門語言之間的差別展開了一場有趣的討論。David,Scala Web框架Lift的作者,給出了他對于不可變性的看法:

不可變性 —— Erlang強制了這一點,而且你幾乎無法繞過它。但是,與強制一個單一類型相比,你可以用Scala神奇強大的類型系統的剩余部分去交換。我在進行Scala Actor編碼時使用不可變數據,而讓Scala的類型系統負責其它類型。
Yariv問到:

只發送不可變類型難道不是一個重大限制嗎?這意味著,例如,你不能從Hibernate裝載一個簡單的bean并將它發送給其它Actor。
David回答到:

我曾基于Scala的Actor構建個多個生產系統。實際上對于不可變性問題并沒有多少工作需要處理。你只需要將你的相關類(消息)定義為不可變的,其它的就不用管了。

類型系統

Erlang是動態類型的,而Scala是靜態類型的并且相比Java有著更強的類型系統。然而,與Java相比最大的一個區別是Scala可以類型推斷。這意味著你可以省掉大部分的類型注解,使得代碼更加干凈而編譯器照樣會做所有的檢查。

關于動態與靜態系統之間孰是孰非的爭論看來永遠也不會停止,但Erlang和Scala之間卻有著顯而易見的區別。

尾遞歸或是循環

Yariv又提到:

函數式編程與遞歸從來都是形影不離的。實際上離開了尾遞歸你很難寫出有用的Erlang程序,那是因為Erlang沒有循環——它對一切都使用遞歸(這在我看來是一件好事 :))。
這顯然使得Erlang與Scala產生了很大差別。Scala提供了很多更傳統的迭代,但David Pollack并沒看出在這種環境下尾遞歸有什么優勢:

尾遞歸——對基于事件的Actor來說根本不是什么問題。
如此說來,這僅僅有關你的偏愛和風格罷了。

熱交換代碼

由于Erlang是為可靠性而生的,熱交換代碼(運行時替換代碼)是其內建的天性。

JVM對熱交換代碼有所支持。類可以被改變,但由于其靜態的類型系統,其方法簽名是不可改變的——只有其內容可以改變。雖然有第三方工具致力于此,也有框架(提倡以一種使運行時更方便交換類的編程風格書寫代碼),但就算運行在JVM上,如何進行交換仍是取決于你的Scala Actor是如何構建的。Jonas Bonér就此給出了一個詳盡的例子。

總結

Scala和Erlang都是致力于解決多核危機的語言。它們來自不同的背景和年代,因此對待某些問題的方式也不盡相同,然而在許多方面它們的共識大于分歧,至少在并發性上如此。

Erlang已經有著數十年的歷史,并且已經在許多關鍵的真實系統中證明了自己。其不足之處在于它有一點像一個孤島,最近的多語言編程的趨勢似乎對Erlang社區影響不大。

另一方面,Scala是同一類型應用的新生兒。一些真實應用即將誕生,并且一些公司將未來押在了上面。Scala相對Erlang的最大優勢在于,它運行在JVM之上并且可以利用所有現成Java代碼、框架和許多工具。話雖如此,這種強大的能力也要求了更大的責任,因為大部分Java代碼不可能自動適應Scala的Actor模型。

對于主流語言無法幫開發者解決的壓力越來越大的問題,兩種語言都對提供了相似的解決途徑。希望你在讀完這篇爭論總結之后,能更清楚哪種語言更適合你的特殊要求,并對其深入了解。

未來是多核的。Scala和Erlang將會越來越流行。

【編輯推薦】

  1. Scala編程語言
  2. 一位Twitter工程師的Scala探秘之旅
  3. Erlang面向分布與并發的編程語言
  4. Erlang十分鐘快速入門
  5. 因并發而生 因云計算而熱:Erlang專家訪談實錄
責任編輯:yangsai 來源: Infoq
相關推薦

2010-01-25 13:08:48

2010-05-12 10:04:49

云計算

2013-07-08 10:15:46

系統虛擬化 Containers

2023-05-19 16:45:15

人工智能AI

2022-09-08 19:09:02

人工智能語音命令

2009-09-09 10:50:55

Scala例子Scala與Java

2025-07-09 00:00:00

低空經濟產業安全

2022-09-08 14:19:34

人工智能智能家居智能家電

2009-08-26 10:39:01

Scala和Cloju

2009-07-09 16:27:14

2022-06-08 11:22:12

5G邊緣技術

2018-02-28 14:00:32

云計算混合云多云

2009-08-12 13:41:23

Java并發編程并行編程多核

2014-03-25 12:06:21

IBM

2009-08-02 16:54:14

刀片服務器數據中心節能

2023-08-25 14:13:28

生成式AI人工智能

2010-08-25 11:54:46

LTE4G

2009-06-16 17:54:38

Scala類語法語義

2022-05-11 10:15:09

云計算疫情公共云

2010-08-16 10:20:59

李開復移動互聯網電子商務
點贊
收藏

51CTO技術棧公眾號

亚洲成a人无码| 欧美一级中文字幕| 中文字幕av网站| 99精品视频在线观看免费播放| 9191久久久久久久久久久| 日本一二三区视频在线| 西西人体44www大胆无码| 日韩国产欧美视频| 欧美国产在线视频| 久久久精品成人| 成人资源在线播放| 欧美午夜一区二区三区| av片在线免费| jizz在线观看| www.在线欧美| 成人欧美一区二区三区在线湿哒哒 | 午夜精品一区二| 欧美黄色免费| 在线看福利67194| xxxx黄色片| 疯狂欧洲av久久成人av电影| 欧美午夜电影在线| 日本手机在线视频| 黄色网址视频在线观看| 国产女同互慰高潮91漫画| 国产精选一区二区| 国产情侣自拍小视频| 日韩av中文在线观看| 91国产高清在线| 国产精品成人av久久| 欧美oldwomenvideos| 亚洲毛片在线观看.| 在线观看亚洲免费视频| 欧美专区一区| 91麻豆精品国产91久久久| 国产视频一区二区三区在线播放| 黑人玩欧美人三根一起进| 国产精品三级在线观看| 欧美日韩三区四区| 丝袜视频国产在线播放| 99久久免费精品高清特色大片| 亚洲iv一区二区三区| 中文字字幕在线观看| 久久人人97超碰国产公开结果| 97福利一区二区| 国产这里有精品| 欧美a级片网站| 久久久99久久精品女同性| 日本女人性生活视频| 日韩成人影院| 正在播放欧美一区| avhd101老司机| 成人3d动漫在线观看| 国产一区二区三区视频免费| 人人妻人人藻人人爽欧美一区| 外国成人在线视频| 亚洲久久久久久久久久| asian性开放少妇pics| 欧美三级电影在线| 亚洲精品一区中文| 中文字字幕码一二三区| 国内精品久久久久久久影视简单| 亚洲嫩模很污视频| 欧美性猛交xxxx乱大交少妇| 99久久婷婷国产综合精品电影√| 久久精品国产亚洲精品| 在线免费日韩av| 日韩视频一区| 欧美在线视频a| 999视频在线| 精品中文字幕一区二区小辣椒| 成人免费xxxxx在线观看| 国产免费不卡视频| 成人午夜电影小说| 日本一区视频在线观看| 色网站免费在线观看| 亚洲激情自拍偷拍| 午夜精品久久久久久久无码| 经典三级一区二区| 91麻豆精品国产自产在线| 白丝校花扒腿让我c| 清纯唯美亚洲经典中文字幕| 国产一区二区三区中文| 欧洲美女女同性互添| 伊人久久亚洲美女图片| 国产成人av在线播放| 国产又粗又猛又爽又黄的视频一| 国产成人亚洲综合a∨猫咪| 久久久一本精品99久久精品| 999在线视频| 亚洲一区二区美女| 91蝌蚪视频在线观看| 免费一级欧美片在线观看网站| 亚洲成色www8888| 99国产精品免费| 亚洲电影av| 国产精品人成电影在线观看| www.香蕉视频| 久久精品视频在线免费观看| 免费看污污视频| 久久精品女人天堂av免费观看| 欧美精品 国产精品| 中文字幕免费在线播放| 五月天久久网站| 欧美壮男野外gaytube| 国产精品美女一区| 久久久久国色av免费看影院| 超级碰在线观看| 欧美成人ⅴideosxxxxx| 欧美xingq一区二区| 欧美a在线播放| 午夜一级在线看亚洲| 97人人澡人人爽| melody高清在线观看| 午夜久久福利影院| 色婷婷一区二区三区在线观看| 性欧美xxxx免费岛国不卡电影| 超碰精品一区二区三区乱码| 国产熟妇一区二区三区四区| 97精品视频在线观看自产线路二| 裸体裸乳免费看| 国产精品黄色片| 亚洲免费高清视频| 免费在线观看黄网站| 国产乱妇无码大片在线观看| 性欧美大战久久久久久久免费观看| 高清在线视频不卡| 亚洲第一天堂av| 欧美另类视频在线观看| 国产中文一区二区三区| 亚洲欧洲一区二区在线观看| 久久毛片亚洲| 亚洲精品视频网上网址在线观看| 国产第一页在线播放| 国产精品一区二区三区四区| 一本色道久久综合亚洲精品婷婷 | 成人一级毛片| 国产精国产精品| 国内三级在线观看| 色综合一区二区| 国产特黄级aaaaa片免| 亚洲黄色影片| 国产一区二区不卡视频| 丁香花电影在线观看完整版| 欧美成人精精品一区二区频| 欧美日韩精品在线观看视频 | 亚洲小说区图片区| 99在线影院| 国产白丝在线观看| 亚洲国产精品成人av| 国产中文字幕免费| 波多野结衣91| 久久久精品在线视频| 久久av网址| 国产美女直播视频一区| 日本免费在线视频| 日韩午夜激情免费电影| 国产一级免费观看| 99久久综合99久久综合网站| 东京热加勒比无码少妇| 国产一区日韩| 国产色视频一区| 在线免费观看的av| 亚洲精品美女久久久| 圆产精品久久久久久久久久久| 91香蕉国产在线观看软件| 黄色一级一级片| 欧美老女人另类| 亚洲在线第一页| av毛片午夜不卡高**水| 亚洲欧美中文字幕在线一区| 中文字幕一区二区三区四区免费看| 中国色在线观看另类| www.亚洲自拍| 国产精品入口| 亚洲国产日韩美| 欧洲大片精品免费永久看nba| 亚洲3p在线观看| 91社区在线观看播放| 日韩欧美在线1卡| 日本一区二区免费电影| 国产精品电影一区二区三区| 欧美图片自拍偷拍| 玖玖玖国产精品| 九九久久九九久久| 婷婷五月色综合香五月| 国产精品人成电影在线观看| 欧洲中文在线| 一区二区三区视频在线| xxxx国产精品| 色成年激情久久综合| 少妇被躁爽到高潮无码文| 91在线小视频| 999热精品视频| 久久青草久久| 加勒比成人在线| 欧美电影一二区| 精品一区二区三区日本| 亚洲欧美综合久久久久久v动漫| 国产做受69高潮| 欧美videos极品另类| 亚洲精品v天堂中文字幕| 亚洲影视一区二区| 欧美午夜美女看片| 欧美日韩在线观看成人| 中文字幕乱码亚洲精品一区| 精品人妻一区二区三区日产| 久久国产婷婷国产香蕉| 国产女女做受ⅹxx高潮| 欧美激情亚洲| 特级毛片在线免费观看| 九九热精品视频在线观看| http;//www.99re视频| 视频精品导航| 国产91在线视频| 92久久精品| 欧美成人小视频| av在线天堂| 亚洲视频国产视频| 亚洲av成人精品毛片| 日韩欧美www| 99在线精品视频免费观看20| 91福利视频久久久久| 六月丁香在线视频| 亚洲欧美激情在线| 亚洲综合图片一区| 国产精品三级av在线播放| 波多野结衣福利| aaa欧美色吧激情视频| 无码人妻精品一区二区三区99不卡| 精品无人区卡一卡二卡三乱码免费卡| 欧美性猛交久久久乱大交小说| 99视频一区| 国产成人无码精品久久久性色| 亚洲激情另类| 亚洲精品久久久久久久蜜桃臀| 欧美一区久久| 亚洲激情免费视频| 你懂的成人av| 欧美中文字幕在线观看视频 | 欧美黄色性生活| 日韩精品成人一区二区三区| 成人小视频在线看| 久久久亚洲一区| 黄色三级视频片| 日韩精品一二三四| 少妇激情一区二区三区| 全国精品久久少妇| 99re精彩视频| 国产一区二区女| 丰满少妇一区二区三区专区| 国产精品888| 亚洲美女在线播放| 91麻豆文化传媒在线观看| 中文字幕一区二区三区人妻不卡| 91视频免费播放| 日韩精品无码一区二区三区久久久| 国产亚洲欧洲一区高清在线观看| x88av在线| |精品福利一区二区三区| 国产免费久久久久| 一区二区不卡在线视频 午夜欧美不卡在| 欧美三根一起进三p| 亚洲成人av在线电影| 国产精品视频一区在线观看| 欧美中文字幕一区二区三区| 91tv国产成人福利| 精品美女在线播放| 国产系列在线观看| 久久精品国产成人| a天堂资源在线| 国产精品69av| 99久久这里有精品| 国产精品中出一区二区三区| 伊人成综合网yiren22| 在线视频亚洲自拍| 精品成人在线| 男女啪啪网站视频| 懂色中文一区二区在线播放| 给我看免费高清在线观看| 国产精品理伦片| 国产无套在线观看| 欧美亚洲国产一区二区三区va| 国产乱淫av免费| 日韩高清不卡av| 秋霞成人影院| 97视频免费看| 亚洲欧美综合久久久久久v动漫| 国产一区二区三区四区hd| 成人国产精品一级毛片视频| 91亚洲精品国产| 日韩av高清在线观看| 免费国偷自产拍精品视频| 91老师国产黑色丝袜在线| 欧美性x x x| 一本色道**综合亚洲精品蜜桃冫| 国产情侣自拍小视频| 亚洲色图综合网| 91桃色在线观看| 成人国产精品久久久| 要久久爱电视剧全集完整观看| 手机在线视频你懂的| 亚洲一区一卡| 久久aaaa片一区二区| 日本一区二区免费在线| 男女视频免费看| 日韩欧美成人一区二区| 都市激情一区| 国产69久久精品成人| 日本一区二区三区视频在线看| 日韩国产精品一区二区三区| 日韩一区二区久久| 中文字幕制服丝袜| 中文字幕人成不卡一区| 波多野结衣家庭主妇| 国产婷婷97碰碰久久人人蜜臀| 污片视频在线免费观看| 91精品国产综合久久香蕉最新版| 国产99久久精品一区二区300| 久久成人福利视频| 国产精品自在欧美一区| eeuss中文字幕| 色狠狠综合天天综合综合| 午夜黄色小视频| 性色av一区二区三区红粉影视| 清纯唯美激情亚洲| 五月天色婷婷综合| 看片网站欧美日韩| 综合 欧美 亚洲日本| 欧美揉bbbbb揉bbbbb| 国产三级视频在线看| 日本老师69xxx| 亚洲人和日本人hd| 99热在线这里只有精品| av一二三不卡影片| 久久国产精品系列| 亚洲精品小视频在线观看| 特黄毛片在线观看| 欧美日本韩国在线| 久久男女视频| 国产综合精品久久久久成人av| 色婷婷久久综合| 国产在线超碰| 国产精品久久久精品| 秋霞欧美视频| 五月天婷婷影视| 亚洲精品久久久蜜桃| 亚洲免费成人网| 77777亚洲午夜久久多人| 欧美一级一片| 国产男女激情视频| 欧美国产日韩精品免费观看| 欧美三级网站在线观看| 综合网日日天干夜夜久久| 欧洲午夜精品| av影院在线播放| 99国产精品久久久| 99re国产在线| 久久久精品国产网站| 最新国产精品精品视频| 成人免费毛片在线观看| 久久亚洲捆绑美女| 中文人妻熟女乱又乱精品| 久久久99久久精品女同性| 大香伊人久久精品一区二区 | 久久99国产精品免费| h色网站在线观看| 亚洲第一精品夜夜躁人人躁| 国产夫妻在线| 天天人人精品| 国产一区二区三区免费播放| 国产一级片免费| 亚洲片在线观看| 成人豆花视频| 欧美日韩不卡在线视频| 久久精品视频网| 精品毛片在线观看| 国产91精品黑色丝袜高跟鞋| 人人狠狠综合久久亚洲婷| 亚洲欧洲日韩综合| 欧美日韩一区二区在线| 免费黄色在线| 精品国产乱码久久久久软件 | 色老头久久综合| 在线看女人毛片| 欧美欧美一区二区| 国产一区二区福利视频| 天天干在线播放| 久久久精品国产| 蜜桃tv一区二区三区| 成人不卡免费视频| 欧美午夜精品久久久久久浪潮| 午夜在线免费观看视频| 黑人中文字幕一区二区三区| 蜜桃精品视频在线观看| 日韩黄色a级片| 美女av一区二区三区| 欧美限制电影| 你懂得在线视频| 日韩欧美一级片|