成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一位Twitter工程師的Scala探秘之旅

原創(chuàng)
開發(fā) 后端
本文內(nèi)容來自一位Twitter工程師在介紹“為什么選擇Scala”的演講中使用的幻燈片。在這份幻燈中,演講者詳細的介紹了Twitter在做出使用Scala的選擇時都參考了哪些因素。

一位Twitter工程師的Scala探秘之旅 

【51CTO精選譯文】本文的這個故事講述一個對編程語言有種近乎于宗教狂熱的Twitter工程師是如何投入Scala的懷抱的。一開始大量使用Ruby做為開發(fā)語言的Twitter曾遭遇過嚴重的性能問題,于是Twitter在尋找可擴展性強的替代語言的時候,找到了Scala。

一位Twitter工程師的Scala探秘之旅 

大家好,我是al3x,一位編程語言的癮君子,哦不,是狂熱份子。我在工作中使用過Java,JavaScript,C,PHP,Perl,Ruby以及Python。出于興趣和愛,接觸過x86 Assembly,Erlang,Lua,Objective-C,Lisp家族,Haskell,以及C++。

一位Twitter工程師的Scala探秘之旅 

我為Twitter工作。Twitter一直以來都大量使用Ruby。Ruby很好,但不是都好。Ruby VM低下的性能,monkeypatching(51CTO編者注:猴子補丁,也稱鴨子擊,指對動態(tài)語言運行時進行擴展或修改,而無須更改源代碼的一個方法),以及文化上的問題,在大型項目中的使用還是充滿疑問。我們要建造新的服務,感覺不想繼續(xù)用Ruby開發(fā)了。

對于Ruby的不滿,基本可以總結(jié)如下:

1)Ruby不太合適開發(fā)長時間運行(Long-Live)的服務器端程序,但JVM很合適,因為Java有10年的經(jīng)驗教訓和優(yōu)化,Scala是運行在JVM上的,所以天生就有了這個優(yōu)點;

2)  Ruby沒有很好的線程(Thread)支持,Ruby多線程會限制在一個CPU上(新的Ruby應該會改善這點吧)且Ruby VM的垃圾收集支持也沒有Java先進,就造成每個Ruby進程長時間運行后使用的內(nèi)存月來越大;

3)  為什么不是JRuby? JRuby缺乏使用廣泛的Rem支持(很多優(yōu)秀的Ruby包都需要C擴展,它們并沒有移植到Java),而且性能也不太理想,比MRI(C實現(xiàn)的Ruby VM)要慢

系統(tǒng)語言的白馬王子 

我心目中的系統(tǒng)語言白馬王子應該是:
◆快速
◆函數(shù)式
◆表達能力
◆靜態(tài)類型
◆并發(fā)
◆優(yōu)美
◆輕量

我們最終想要一個JVM語言,而不是Java 

我們列出的名單:
C
C++
Python
Erlang
Java
JVM上的動態(tài)語言

結(jié)果沒一個滿意的。它們都有自己的問題。我們最終想要一個不是Java的JVM語言。

后來,我們聽說了Scala 

后來,我們聽說了Scala。在JVM上幾乎沒有哪個語言的執(zhí)行速度趕得上它,而Scala lift-off看起來令人感到信心十足。

#p#

Scala的特性

類型推斷 

不再糟糕的類型推斷。靜態(tài)類型一直是天使和惡魔的共存。在Scala中,在你真正使用它之前,你可以忽略對象的類型。

不變性 

不變性:你可以在最開始用面向?qū)ο蟮姆椒ň幊?,然后當你需要它的好處時,就可以遷移到用不變狀態(tài)(immutable state)。實現(xiàn)并發(fā)和異步就靠它了。這個功能需要在決策時更加深思熟慮,不過是值得的。

第一類函數(shù) 

第一類函數(shù):我們是“類”的追隨者。這是個有了就無法失去的功能:你不僅可以定義函數(shù)和調(diào)用它們,還可以把函數(shù)寫成沒有名字的文本:literal并把它們像值:value那樣傳遞。一切都是表達式,一切都有值。

Scala的特征 

特征:是個奇特的東西,因為繼承的未必是你想要的。一個類可以按照需要整合許多特征,這與接口相似,但它們還可包含行為,這又與類相似。同樣,與類和接口類似,特征可以引入新方法。

模式匹配與case類 

模式匹配與case類:其實每個程序員天天都在進行模式匹配。Scala不過是令這個過程更簡單了。

XML的處理大大的簡化 

XML的處理大大的簡化了。再怎么說XML技術(shù)還在廣泛的使用中,使用Scala來處理XML文件是相當不錯的選擇:有點那么些JavaScript+JSON的意思。

Actors:處理并發(fā) 

Actors:處理并發(fā)的一個好方法。Scala提供的這個叫做Actor的并行模型通過它的收件箱來發(fā)送和接收非同步信息,而不是共享數(shù)據(jù)。這種方式被稱為:shared nothing 模型。一旦你不再顧慮共享數(shù)據(jù)的問題,也就不必再為代碼同步和死鎖問題而頭痛。

一位Twitter工程師的Scala探秘之旅 

還有上面這些其他的特性,這里就不細說了。51CTO的編輯在此推薦大家去Scala編程語言專題中進行進一步的學習。

范例

最后,給大家看看我們在Twitter中用Scala編寫的代碼。

一位Twitter工程師的Scala探秘之旅 

函數(shù)的使用:無論是array,類型系統(tǒng),值還是Singleton的語法,都和Ruby一樣簡便。

一位Twitter工程師的Scala探秘之旅 

Package,import,traits,currying,更多的類型系統(tǒng)。

當然了,Scala也有不好的地方,比如社區(qū)太小,而且也偏復雜。不過總的來說,Scala絕對是一門值得學習的語言。

原文:Why Scala?

【相關(guān)閱讀】

  1. Ruby高手點評Scala編程語言十大絕招
  2. Scala取代Java?可能嗎?熱議仍持續(xù)不斷
  3. Groovy創(chuàng)始人:Java面臨終結(jié) Scala將取而代之
  4. Scala如何改變了我的編程風格:從命令式到函數(shù)式
  5. Java程序員,你為什么要關(guān)注Scala
責任編輯:yangsai 來源: 51CTO.com
相關(guān)推薦

2009-06-02 13:24:45

工程師忠告職場

2018-01-25 15:38:22

程序員軟件工程師經(jīng)驗分享

2013-06-20 10:24:32

2009-05-13 14:47:26

軟件工程師職場經(jīng)驗總結(jié)

2009-06-03 09:35:21

.Net平臺開源工程師職場

2009-06-01 09:09:21

微軟軟件測試開發(fā)工程師

2022-02-24 10:51:41

Google工程師總結(jié)

2015-11-18 19:03:27

開發(fā)者Linux容器

2015-11-19 14:48:01

LinuxLinux容器虛擬機

2020-02-04 09:28:04

網(wǎng)絡故障局域網(wǎng)交換機

2021-05-24 10:39:36

波士頓機器人人工智能

2010-11-12 09:04:03

TwitterAPI

2019-11-25 10:34:16

代碼Google工作

2019-11-13 17:36:32

工程師人生第一份工作算法

2019-09-17 14:27:37

數(shù)據(jù)平臺架構(gòu)

2010-04-25 15:29:58

Twitter可伸縮性

2009-08-21 16:17:25

ScalaTwitter API

2010-04-19 11:49:01

Twitter

2022-06-27 11:09:23

Google開發(fā)

2024-03-18 09:44:02

HashMap算法Java
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日韩精品一区二区三区在线观看 | 国产女人精品视频 | 成人片网址 | 国产成人精品久久二区二区 | 亚洲免费视频一区 | 国产精品福利在线 | 日本超碰 | 亚洲精品乱码8久久久久久日本 | 国产亚洲人成a在线v网站 | 天天看天天爽 | 成人性生交大免费 | 亚洲三级在线 | 97久久精品午夜一区二区 | 天天操天天操 | 久久精品av麻豆的观看方式 | 久久成人人人人精品欧 | 精品乱码一区二区三四区视频 | 国产精品一区二 | 亚洲视频 欧美视频 | 99久热在线精品视频观看 | 91视频导航 | 中国美女一级黄色片 | 亚洲一区二区三区四区五区中文 | 精品国产一区二区三区观看不卡 | 欧美在线激情 | 天天躁日日躁狠狠很躁 | 欧美老妇交乱视频 | 日韩图区 | 最新中文字幕在线 | 中文字幕第100页 | 黄色片视频网站 | 国产最新精品视频 | 精品欧美色视频网站在线观看 | 爱综合| 国产亚洲精品91 | 欧美中文字幕一区 | h片在线播放 | 午夜色播| 欧美片网站免费 | 9porny九色视频自拍 | 久久99精品久久久97夜夜嗨 |