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