日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Adobe架構(gòu)師談Scala:功能強大但令人困惑

【精選譯文】本文是Adobe架構(gòu)師Ricki在英文開發(fā)社區(qū)DZone上發(fā)布的一篇文章。Ricky專注SaaS,云計算以及使用Map/Reduce和Hadoop堆進行并行編程。最近Ricki參加了一次Scala線下課程,并對Scala語言留下了自己的一些印象。

編輯推薦:Scala編程語言

對Scala語言的第一印象

關(guān)于 Scala 這個編程語言,我聽到很多正面的評論。我個人過去更多使用 Java,在過去兩年,我已經(jīng)轉(zhuǎn)用 Ruby(還會用一些 Erlang)。我聽到的那些 Scala 功能,對我很有吸引力,以下列出:

◆Scala 代碼可編譯為 Java 字節(jié)碼,直接在 JVM 上直接運行。使用Scala寫的代碼能夠直接享受 Java 虛擬機技術(shù)所具有的性能和健壯性(robustness)

◆可以很方便地與 Java 代碼和庫進行集成,能夠直接享受大量現(xiàn)有 Java 庫帶來的便利。

◆對于 Actor 模型,它提供了很好的支持,我認為這一點對于多核計算機架構(gòu)是一種非常重要的編程范式。

深入了解,繼而困惑

所以我決定參加 Qcon 大會上 Dean Wampler 做的 Scala 課程。聽課之后,我對 Scala 的印象,總結(jié)如下:

首先,Scala 是一個強類型語言。不過,它具有類型推理機制,所以你不是非要進行類型聲明,它是可選的。

但在一些地方(如方法簽名),類型聲明是必須的。什么時候我必須聲明一個類型,對于我這點不是非常清楚。

具有變量中的“val”和“var”聲明是非常好的,因為它可以使得不變性(immutability)成為顯式的。在 Ruby 中,通過向?qū)ο蟀l(fā)送 freeze() 方法,你可以使一個對象成為不變的(immutable),但Scala做得更為顯式。

不過,我發(fā)現(xiàn)使用兩種不同的方式定義一個方法這點令人困惑。

 
 
 
  1. class A() {  
  2.  def hello {  
  3.  ...  
  4.  }  
  5. }  
  6.  
 
 
 
  1. class A() {  
  2.  def hello = {  
  3.  ...  
  4.  }  
  5. }  
  6.  

這個 MyFunction[+A1, -A2] 對我來說真的不容易弄明白。我覺得無類型語言更為簡單。

另外,刪除開始和結(jié)束的括號也讓我很困惑。

 
 
 
  1. class Person(givenName: String) {  
  2.  var myName = givenName  
  3.  def name =(anotherName: String) = {  
  4.  myName = anotherName  
  5.  }  
  6. }  
  7.  
 
 
 
  1. class Person(givenName: String) {  
  2.  var myName = givenName  
  3.  def name =(anotherName: String) = myName = anotherName  
  4. }  
  5.  

這個特別的“隱式”轉(zhuǎn)化方法提供了一種機制,即使用 Scala 開發(fā) DSL(領(lǐng)域?qū)S谜Z言:Domain Specific Language)。但對于我,它看起來很奇怪。從根本上說,你需要導(dǎo)入單個隱式轉(zhuǎn)化方法,后者需要處理所有可能的轉(zhuǎn)化。

#T#所有以“:”結(jié)尾的方法,調(diào)用順序都是顛倒的,這對我來說也是非常奇怪的東西。

Scala 中的 trait 為 Scala 提供了 mixin,但我覺得 Ruby 語言中的“模塊”機制做得更好。

Scala 具有“函數(shù)”的概念,并且能夠?qū)ⅰ昂瘮?shù)”作為參數(shù)傳遞。同樣,我覺得 Ruby 中的 block 做得更好。

也許由于 JVM 對于動態(tài)語言支持的局限性,Scala 在做元編程時并不是很強,Scala 不提供“開放類”屬性,通過它用戶可以在運行時修改現(xiàn)有的類(添加方法、更改方法實施,添加類等等。)

Scala 還模仿了一些 Erlang 語言的功能,但我不認為它這活做得干凈漂亮。比如,它使用 case 類和 unapply() 模仿 Erlang 編程的模式匹配風(fēng)格,但對于我這有點奇怪。

Erlang 具有兩個很酷的功能,在 Scala 中我還沒有發(fā)現(xiàn)(也許是我期望太高了)。

◆能夠同時運行類的兩個版本

◆能夠創(chuàng)建并傳遞函數(shù)對象到遠程進程(有點類似遠程代碼加載)

總體印象

我不得不承認,我對 Scala 的印象并沒有參加那個課程之前那樣好。Scala 試圖在 JVM 中放入不同的非常有用的編程范式,但對于我,有種勉強的感覺。當(dāng)然,與JVM的緊密關(guān)系仍是我們選擇Scala的一個原因。但從純正的編程角度,我更喜歡 Ruby 和 Erlang 的結(jié)合,而不是 Scala。

原文:Impression on Scala 作者:Ricky

編者后記:開發(fā)者對于語言的喜好在某種程度上和開發(fā)者的性格有很大關(guān)系,正如敏捷大師Dave Thomas所說的,就好像喜歡貓的往往不喜歡狗,喜歡狗的往往不喜歡貓一樣。而不知是否巧合,同樣是Ruby狂熱愛好者的Dave Thomas也曾在訪談中表示自己就是毫無理由的不喜歡Scala,對Scala的一些用法感到困惑。這樣看來就仿佛Ruby是只貓而Scala是只狗一樣。當(dāng)然也有反例,比如這位從Ruby出家到Scala的程序員,以及曾經(jīng)一直使用Ruby做后臺的Twitter后來投向了Scala,而其團隊并沒有像上面兩位那樣表示困惑??磥黹_發(fā)者對語言的喜好真是一個難以琢磨的話題呢。


分享標題:Adobe架構(gòu)師談Scala:功能強大但令人困惑
標題路徑:http://www.5511xx.com/article/djgspsi.html