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