自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

從Scala進(jìn)駐Twitter看多語(yǔ)言混雜系統(tǒng)的未來(lái)

開(kāi)發(fā) 后端
Twitter計(jì)劃于09年底將大部分流量的后臺(tái)使用Scala語(yǔ)言。原本Twitter的前臺(tái)后臺(tái)都是Ruby on Rails,但是效果不很理想。作者由此分析,未來(lái)的系統(tǒng)會(huì)是多語(yǔ)言的混雜系統(tǒng)。讓DSL來(lái)實(shí)現(xiàn)系統(tǒng)的某個(gè)部分,比用一種語(yǔ)言到處實(shí)現(xiàn)更現(xiàn)實(shí)。

51CTO編輯推薦:Scala編程語(yǔ)言專(zhuān)題

Twitter是目前最熱的“微博客(Micro Blog)”應(yīng)用,據(jù)說(shuō)前幾天拒絕了Google出價(jià)10億美元的收購(gòu)意向。Twitter最早是幾個(gè)工程師為了快速共享AIM(美國(guó)排名第一,二的IM,前身是ICQ,被AOL收購(gòu)后更名為AIM)的狀態(tài)(Status)而開(kāi)發(fā)的一個(gè)應(yīng)用,使用的是RoR (Ruby on Rail)框架,直到今天Twitter仍然是一個(gè)以Ruby為主要開(kāi)發(fā)語(yǔ)言的網(wǎng)站,在Twitter服務(wù)器上后臺(tái)運(yùn)行著很多進(jìn)程做異步處理。但Ruby的局限性也逐漸暴露出來(lái)了,RoR很適合做前端的開(kāi)發(fā),但對(duì)于比較Heavy的后臺(tái)處理,Ruby的運(yùn)行性能還是有些問(wèn)題,然后Twitter將目光轉(zhuǎn)向了Scala。

下面是一些對(duì)話(huà)的總結(jié):

1)Ruby不太合適開(kāi)發(fā)長(zhǎng)時(shí)間運(yùn)行(Long-Live)的服務(wù)器端程序,但JVM很合適,因?yàn)镴ava有10年的經(jīng)驗(yàn)教訓(xùn)和優(yōu)化,Scala是運(yùn)行在JVM上的,所以天生就有了這個(gè)優(yōu)點(diǎn);

2)  Ruby沒(méi)有很好的線(xiàn)程(Thread)支持,Ruby多線(xiàn)程會(huì)限制在一個(gè)CPU上(新的Ruby應(yīng)該會(huì)改善這點(diǎn)吧)且Ruby VM的垃圾收集支持也沒(méi)有Java先進(jìn),就造成每個(gè)Ruby進(jìn)程長(zhǎng)時(shí)間運(yùn)行后使用的內(nèi)存月來(lái)越大;

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

下面是幾點(diǎn)Scala的Concerns:

1) IDE支持還不全面,支持得最好的是IntelliJ IDEA 8.1(自從5年前我殘忍的拋棄JBuilder后,就一直用IntelliJ的IDEA了),Mac 上的Textmate支持的較差, Emacs還行;

2) Scala的構(gòu)建(Build)環(huán)境還是要比Ruby, Python, PHP等動(dòng)態(tài)語(yǔ)言多一回事;

3)一開(kāi)始就要注意Immutability(不變性),為了穩(wěn)定壓倒一切,當(dāng)然Scala會(huì)保證性能底線(xiàn), JIT compiler對(duì)不變對(duì)象還有一些性能優(yōu)化,所以盡量用吧;

4) Scala的Actors對(duì)處理客戶(hù)端連接很合適,(Erlang也是這樣的)大量的連接也是小菜一碟。

最后Twitter的計(jì)劃是到09年底,大部分的流量將Powered by Scala!

我再說(shuō)一次,未來(lái)的系統(tǒng)會(huì)是多語(yǔ)言的混雜系統(tǒng),讓專(zhuān)業(yè)的語(yǔ)言(Domain Specific Language , DSL)來(lái)實(shí)現(xiàn)系統(tǒng)的某個(gè)部分,比用一種語(yǔ)言到處實(shí)現(xiàn)更現(xiàn)實(shí)。

【相關(guān)閱讀】

  1. Scala編程語(yǔ)言專(zhuān)題
  2. Scala的類(lèi)型系統(tǒng):取代復(fù)雜的通配符
  3. Scala的類(lèi)型系統(tǒng) 比Java更靈活
  4. Java程序員,你為什么要關(guān)注Scala
  5. Scala創(chuàng)始人:創(chuàng)造比Java更好的語(yǔ)言
責(zé)任編輯:yangsai 來(lái)源: appspot
相關(guān)推薦

2009-08-21 16:17:25

ScalaTwitter API

2014-07-09 09:20:06

WPFWPF應(yīng)用

2014-04-16 14:50:20

Spark

2009-12-09 09:15:47

從Java走進(jìn)ScalTwitter API

2012-04-19 11:40:21

Titanium

2011-08-05 17:54:33

Cocoa Touch 多語(yǔ)言

2009-08-25 10:44:50

C#實(shí)現(xiàn)多語(yǔ)言

2021-09-07 10:17:35

iOS多語(yǔ)言適配設(shè)計(jì)

2021-06-29 21:48:32

開(kāi)源語(yǔ)言架構(gòu)

2024-05-09 08:14:09

系統(tǒng)設(shè)計(jì)語(yǔ)言多語(yǔ)言

2022-08-09 07:22:15

語(yǔ)言數(shù)據(jù)庫(kù)程序

2009-07-17 10:02:29

WPF程序多語(yǔ)言支持

2013-07-04 10:54:27

Windows 8.1系統(tǒng)升級(jí)

2023-08-04 10:18:15

2020-04-14 09:50:02

2019-12-05 16:00:15

Vim插件編程文本編輯器

2009-08-31 17:13:09

2009-08-03 17:33:01

ASP.NET多語(yǔ)言支

2011-11-16 09:00:39

編程語(yǔ)言

2021-07-24 11:41:42

前端開(kāi)發(fā)技術(shù)
點(diǎn)贊
收藏

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