2011-08-23 11 views
11

Scala'nın Java üzerinde bir çok özelliğe ve iyileştirmeye sahip olduğu görülüyor. Scala hakkında ilk önce öğrenmek istediğim şeyleri ayırmakta zorlanıyorum. Örneğin, sadece döngüler almak ve birden çok iş parçacığı veya süreçten geçmesini sağlamak istiyorsam, Google'da nelere dikkat etmeliyim? GPU bilgi işlem arka planından geliyorum, işlerin nasıl daha hızlı ilerleyeceğine dair üst düzey bir görüş elde etmek gerçekten çok kolaydı.Sekiz öğelere odaklanan Scala öğreticilerini bulmaya çalışırken,

cevap

21
  • Scala'nın paralel koleksiyonları özellikle kolaydır. tamsayılar i <- 1 to 10 üzerinde pahalı bir operasyon f(i) koşutlama kadar basittir

    (1 to 10).par.map(i => f(i)) 
    

    Scala sisteminizde mevcut çekirdekler/işlemci sayısına karşılaştırılabilir iş parçacığı sayısını ayırmaya çalışacağız. http://days2010.scala-lang.org/node/138/140

  • Akka framework parçacığı veya uzak süreçler üzerinde koşutlama sağlar eşzamanlılık için, olgun, öncelikle aktör temelli bir yaklaşımdır: Burada daha ayrıntılı bilgi içeren bir video. Aktörler temelde paylaşma durumu yerine mesajları iletebilen iş parçacıklarıdır. Yeni kurulan şirket Typesafe, hem Scala dilini hem de Akka'yı geliştiriyor.

  • Ayrıca Scala için bir yazılım işlem belleği (STM) kitaplığının draft release sürümünü deneyebilirsiniz. Kütüphane, standart Scala dağıtımına dahil olmayı amaçlamaktadır. Elle yönetilen iş parçacıkları ile karşılaştırıldığında, STM, ölü kilitler gibi hata olasılığını azaltan daha basit bir eşzamanlılık modelidir. Birden çok iş parçacığı, karşılıklı olarak uyumsuz olduğu ortaya çıktığında paylaşılan bir durumla uğraşırsa, iletişim işlemlerinin dizilerini tek bir eşzamanlı bloğa gruplayarak çalışır. Muhtemelen kolaylık sağlamak için bazı performans maliyeti vardır; STM'nin çok sayıda iş parçacığına ne kadar iyi ölçeklendiğinden emin değilim.

  • Spark framework küme bilgisini ele alır ve MapReduce'un genelleştirilmesi gibi görünüyor.

  • Scala'dan GPU programlama için, ScalaCL var. Java bindings'u da kullanabilirsiniz. Ayrıca, Stanford ve EPFL'deki laboratuvarlar arasında ortak bir çaba olarak yapılan çok ilginç bir dil sanallaştırma çalışması da vardır. This page kağıda linkler ve çok daha fazla bağlantıya sahip bir course at Stanford var. GPU'lar da dahil olmak üzere, heterojen bilgi işlem ortamlarında yüksek performanslı bilgi işlem için DSL'leri geliştirmek için birçok heyecan verici uygulama bulunmaktadır.

Güncelleme. Daniel Sobral da Tools and Libraries wiki'u önerdi.

+0

STM için teşekkürler, bunu bilmiyordum. Umut verici görünüyor. –

+0

Bu cevap gerçekten FTW. Siz _should_ Kütüphaneler ve Araçlar wiki'sine bir link yapıştırdınız, ancak ... –

+0

@Daniel, updated, teşekkürler. –