51CTO專(zhuān)訪(fǎng)Scala創(chuàng)始人:Scala拒絕學(xué)術(shù)化
原創(chuàng)【51CTO獨(dú)家專(zhuān)訪(fǎng)】Scala編程語(yǔ)言近來(lái)抓住了很多開(kāi)發(fā)者的眼球。它看起來(lái)像是一種純粹的面向?qū)ο缶幊陶Z(yǔ)言,而又無(wú)縫地結(jié)合了命令式和函數(shù)式的編程風(fēng)格;它融匯了許多前所未有的特性,而同時(shí)又運(yùn)行于JVM之上。2010年7中旬,Scala 2.8正式發(fā)布,這個(gè)版本添加了大量的新特性。其中重新設(shè)計(jì)集合庫(kù)、對(duì)數(shù)組的處理進(jìn)行了簡(jiǎn)化和優(yōu)化等設(shè)計(jì)尤為引人注目,51CTO經(jīng)過(guò)近1個(gè)月的調(diào)查,在各個(gè)Scala開(kāi)發(fā)論壇和Scala開(kāi)發(fā)討論組里搜集關(guān)于Scala 2.8使用的各種問(wèn)題。帶著這些問(wèn)題對(duì)立志于創(chuàng)造比Java更好的語(yǔ)言的Scala創(chuàng)始人Martin Odersky進(jìn)行了專(zhuān)訪(fǎng)。

Scala創(chuàng)始人Martin Odersky
51CTO:Martin,你好,自從上次上次我們談?wù)?a target="_blank" >Scala泛型的優(yōu)點(diǎn)已經(jīng)過(guò)去一年,Scala 2.8最終版發(fā)布也有一段時(shí)間,我們帶著51CTO網(wǎng)友的問(wèn)題再次向您請(qǐng)教。
Martin:當(dāng)然,我很高興接受51CTO的采訪(fǎng)。
51CTO:Scala 2.8發(fā)布后,你從開(kāi)發(fā)人員(包括社區(qū)的和項(xiàng)目組的)哪里獲得了什么反饋?他們都對(duì)這個(gè)版本感到很滿(mǎn)意嗎?
Martin:是的,我們獲得了非常積極的反應(yīng),大多數(shù)人遷移到2.8似乎都非常的順利,我們?cè)趕cala-lang.org上的一項(xiàng)調(diào)查結(jié)果就可以說(shuō)明一切。
51CTO:在2.8版本中,對(duì)Scala集合庫(kù)進(jìn)行了重新設(shè)計(jì),條理更清楚也更高效,你能舉一個(gè)例子與2.7.x比較一下,新版本在集合方面為開(kāi)發(fā)人員帶來(lái)哪些便利?
Martin:首先,集合更統(tǒng)一,所有集合都支持相同的方法和相同的類(lèi)型,上一個(gè)版本中存在的一些小Bug已經(jīng)被修復(fù),例如:
- "abc".reverse
 
現(xiàn)在可以得到字符串"cba",而不像以前是一個(gè)RichString,這意味著:
- "abc" == "abc".reverse.reverse
 
這樣的等式是成立的,而以前的版本會(huì)返回False。
其次,新增了強(qiáng)大的持久化集合類(lèi)型,如Vectors和HashTries,它們都提供了很好的效率。
51CTO:在過(guò)去的一年里,有很多項(xiàng)目都轉(zhuǎn)向了Scala,在中國(guó),有些公司也開(kāi)始招聘Scala開(kāi)發(fā)人員;中國(guó)也舉辦了一些類(lèi)似“Scala Day”的技術(shù)活動(dòng),你是否滿(mǎn)意Scala語(yǔ)言目前的使用率和普及率?2010年下半年有些什么計(jì)劃?
Martin:是的,現(xiàn)在有很多公司都在認(rèn)真考慮可以提高生產(chǎn)力的Scala。
51CTO:中國(guó)的Scala開(kāi)發(fā)人員對(duì)2.8的期望很高,我們51CTO的一些讀者在我們的文章后反應(yīng),他們認(rèn)為Scala 2.8仍然過(guò)于學(xué)術(shù)化,它的語(yǔ)法比較難學(xué),有類(lèi)、抽象類(lèi)、case類(lèi)、密封類(lèi)、traits(特征)、對(duì)象和其它函數(shù)式編程功能,這些給開(kāi)發(fā)人員帶來(lái)了許多困惑,你認(rèn)為Scala應(yīng)該如此嗎?如果在某些方面進(jìn)行簡(jiǎn)化,Scala還能正常運(yùn)行嗎?
Martin:我認(rèn)為“學(xué)術(shù)化”是錯(cuò)誤的理解,拿Java或C#比較,如果非要計(jì)算特征或語(yǔ)法的數(shù)量,它們顯得更復(fù)雜,簡(jiǎn)單列一下和Java的對(duì)比:
抽象類(lèi) - 和Java一樣
Case類(lèi) - 意味著你可以在匹配表達(dá)式中使用它
密封類(lèi) - 意味著你只能使用這里定義的子類(lèi),只需要關(guān)注當(dāng)前文件的case類(lèi)匹配的列舉
特征(traits) - 和Java中的接口相似
對(duì)象 - 和Java中的static相似
另一方面,Scala拋棄了枚舉和注解,它們和Java中的類(lèi)很相似,但并不完全相似,如果看一看相關(guān)的語(yǔ)言規(guī)范,我覺(jué)得Java在這個(gè)領(lǐng)域是更復(fù)雜的。
Scala中存在的這些特征都有很好的存在理由,我想你們使用過(guò)后,也不想讓它們從Scala中消失,這個(gè)問(wèn)題更象是初學(xué)者提出的,他們可能發(fā)現(xiàn)與之前學(xué)習(xí)的語(yǔ)言存在差異就開(kāi)始嚷嚷了,我們能做的是寫(xiě)更好的文檔來(lái)幫助他們(我們目前正在開(kāi)展這項(xiàng)工作)。
51CTO:最后一個(gè)問(wèn)題,下一個(gè)版本中有什么令人激動(dòng)的新特性?
Martin:透露一點(diǎn),下一個(gè)版本在并發(fā)和并行編程方面將會(huì)有令人激動(dòng)的新特性出現(xiàn),多留意scala-lang.org上的公告吧。
51CTO:很高興Martin能再次接受我們采訪(fǎng)。
Martin:非常感謝51CTO,再會(huì)!
51CTO在未來(lái)將繼續(xù)帶來(lái)有關(guān)Scala編程語(yǔ)言的最新消息和技術(shù)教程。對(duì)于Java開(kāi)發(fā)人員而言,Scala的學(xué)習(xí)曲線(xiàn)可以說(shuō)是微乎其微,而且潛力也相當(dāng)可觀。如果對(duì)Scala語(yǔ)言感興趣,歡迎繼續(xù)關(guān)注51CTO的Scala編程語(yǔ)言專(zhuān)題。
【51CTO.com獨(dú)家特稿,非經(jīng)授權(quán)謝絕轉(zhuǎn)載,合作媒體轉(zhuǎn)載請(qǐng)注明原文作者及出處!】
【編輯推薦】
















 
 
 


 
 
 
 