SORU
9 EYLÜL 2009, ÇARŞAMBA


Karıştırma Ayrık ve Haskell

Eğer fonksiyonel programlama paradigma içine aldım eğer, şansı, hem Ayrık ve Haskell gibi. Her ikisi de tamamen çok çekirdekli bir dünya için iyi bir uyum yapmak hafif bir iş parçacığı gibi fonksiyonel çekirdek ve diğer iyilik var. Ama çok fark var.

Eğer x olgun bir dağıtım modeli ile ticari olarak kanıtlanmış hataya dayanıklı bir dil. Sıcak kod yükleme ile çalışma zamanında sürüm yükseltme yeteneği görünüşte benzersiz bir özelliğe sahiptir. (Şekil!)

Haskell, diğer taraftan, herhangi bir ana dilin en gelişmiş tür sistemi vardır. (Burada ben 'ana' Haskell sayıları çok yayınlanan O'Reilly kitabı olan herhangi bir dil için.) tanımlamak Straightline tek dişli performansı üstün Ayrık görünüyor ve basit konuları bile hafif de bak.

Birlikte kalkınma için bir platform koymak için çalışıyorum . ben^>kodlama hayatımın sonuna kadarve mümkün mix Ayrık için olup olmadığını merak ediyor ve Haskell cins platform bir en iyi elde edildi. Bu soru iki bölümden oluşmaktadır:

  1. Suçun bir tür tutkal DZD zamanı örneklerine MPI birlikte hoşgörülü olarak Ayrık kullanmak istiyorum. DZD Ayrık zamanı başına bir süreç olacaktır. "Beklenmedik bir şey" ve DZD çalışma zamanı öldü, Ayrık, süreç bu şekilde algılamak ve de ölürüm. Eğer x sıcak kod yükleme ve dağıtım özellikleri sadece çalışmaya devam ediyorum. DZD çalışma zamanı, sadece bir çekirdek, ya da yerel makinede tüm çekirdek, ya da arasında herhangi bir kombinasyonu kullanmak için yapılandırılabilir. Eğer x kitaplığı yazılmış bir kere, Ayrık düzey kodu geri kalanı tamamen klişe olmalıdır ve otomatik olarak başına bir uygulama olarak oluşturulur. (Örneğin. Haskell bir DSL tarafından belki) Nasıl biri bunlardan en azından bazı başarabilir mi?
  2. Eğer X ve Haskell, aynı garabage toplayıcı paylaşmak mümkün olmak istiyorum. (Bu 1. Daha iyi bir fikir) JVM ve CLR üzerinde çalışan dil çalışma zamanı paylaşarak büyük bir kitle elde. Ya da JVM veya CLR üzerinde Ayrık (sıcak kod yükleme) ve Haskell (yüksek kinded polimorfizmi) çalıştıran teknik sınırlamalar vardır anlıyorum. Ama sadece çöp toplayıcı ayrıştırma ne olacak? (Fonksiyonel diller için bir çalışma zamanı başlangıcı gibi.) Ayırma belli ki hala çok hızlı olurdu, belki o kısmı statik olarak bağlı olması gerekir. Ve DZD buna ihtiyacı var gibi değişmez yığın (tembel bir kez bellek yazma da dahil olmak üzere) değişken öbek ayırt etmek için bazı mechansim olmalı. Çöp toplayıcıları bir yığın paylaşın ... böylece hem HİPE ve DZD değiştirmek mümkün olur mu?

Deneyimleri, olumlu ya da olumsuz, fikir veya herhangi bir öneri ile cevap lütfen. Aslında, herhangi bir geri bildirim (düz kötüye kısa!) hoş geldiniz.

Güncelleme

Tüm 4 için teşekkürler bugüne kadar cevaplar - her bilemedim bana en azından bir tane yararlı şey öğretti.

İlgilihayat kodlama geri kalanışey - biraz narçiçeği tartışma kıvılcım ben dahil, ama aslında doğrudur. Ben ölene kadar çalışmak niyetindeyim kafamda olan bir proje var, ve istikrarlı bir platform ihtiyacı var.

Yukarıda önerdiğim platform, demirbaş eğer x otomatik olarak oluşturulur olarak sadece Haskell yazmak istiyorum. Haskell ne kadar sürecek? Peki Lisp hala bizimle ve uzak yakın bir zamanda olacak gibi görünmüyor. Haskell açık kaynak BSD3 ve kritik kütle elde etti. Eğer hala yaklaşık 50 yıl içinde kendini programlama, zaman, Haskell, Haskell veya bazı sürekli evrim beklerdim, hala burada olacak.

Güncelleme 2rvirding bu Mesaja yanıt olarak

Kabul - "Erskell/Haslang" evrensel sanal makine tamamen imkansız olmayabilir, ama kesinlikle aslında çok zor olurdu. tam bir uygulama Sadece çöp toplayıcı paylaşımı iken bir VM gibi bir şey olarak seviyesizorbana bir büyüklük sırası daha zor gibi görünüyor. Çöp toplama modeli, fonksiyonel diller ortak bir şey değişmez veri (thunk dahil) ve çok hızlı tahsis için ihtiyaç unbiquity olmalı. Yani ortak sıkıca yekpare VMs ile birlikte olması biraz tuhaf görünüyor.

VMs kritik kütle elde etmenize yardımcı. Bak nasıl da '' F gibi fonksiyonel diller# ve çıkarmış Scala var. lite sadece Scala Ayrık mutlak hata toleransı olmayabilir, ama JVM bağlı olan pek çok halk için bir kaçış yolu sunmaktadır.

Tek bir öbek olan yapar çok hızlı geçen mesaj diğer sorunlar bir dizi tanıttı, esas bunu GC daha fazla olur zor etkileşimli olması gibi ve küresel olmayan interruptive seni aynı kullanamaz daha basit algoritmalar her bir işlem yığın model olarak.

Kesinlikle, bu bana çok mantıklı geldi. DZD geliştirme ekibi çok akıllı insanlar "dünya" GC. dur bir paralel ile sorunun bir parçası çözmek için çalışıyor gibi görünür

http://research.microsoft.com/en-us/um/people/simonpj/papers/parallel-gc/par-gc-ismm08.pdf

(Belli ki "dünya" genel Ayrık için sinek olmaz ana kullanım kendi halinde verilmiştir.) dur Ama bu durumda bile bir "dünya" . TAMAM, onların speedups evrensel. görünmüyor dur Ben de seninle aynı fikirdeyim, bölüm 1'de belirtilen nedeni evrensel olarak iyi bir GC var gibi görünmüyor. benim soru bu

DZD çalışma için yapılandırılabilir sadece bir çekirdek, ya da tüm çekirdeği kullanımı yerel makine, ya da herhangi bir kombinasyonu arasında.

Bu şekilde, verilen bir kullanma durumu, elimden, sonra kıyaslama, seçin eğer X ve bir DZD çalışma zamanı (bir tek-iş parçacığına sahip GC) artı bir Ayrık işlem başına çekirdek ve Ayrık kopya arasında bellek çekirdek için iyi bir konum.

Alternatif olarak, bir çift işlemcili makine ile 4 çekirdek başına işlemci ile bellek bant genişliği işlemci, kıyaslama düşündürecek koşmayı bir DZD çalışma zamanı (paralel GC) artı bir Ayrık işlem başına işlemci.

Eğer Ayrık ve DZD bir yığın paylaşmak eğer her iki durumda da, bu paylaşım muhtemelen tek bir işletim sistemi iş parçacığı tek bir çekirdek üzerinde çalışan bir şekilde bağlı olacaktır. (Soru sordum ediliyor boyumu buradan alıyorum.)

Ben de başka bir gündem - GC bağımsız olarak işlevsel dil kıyaslama var. Genellikle Bunun v v v Ayrık ... ve ne kadar sonuç farklı GKS kafamı karıştırdı .. DZD kriterler sonuçlarının okudum. Eğer GC seçimi işlevsel dil seçimi için dik olabilir ne olur? Nasıl pahalı GC arada? Bu şeytan savunucuları blog yazısı bakın

http://john.freml.in/garbage-collection-harmful

şirin, görevinden title verdiği Lisp arkadaşım John Fremlin, "Otomatik çöp toplama çöp". John GC yavaş olduğunu iddia ediyor ve gerçekten çok hızlandırdı ederken, bazı sayılar ile mücadele edebilmek için istiyorum.

CEVAP
9 EYLÜL 2009, ÇARŞAMBA


Haskell ve Ayrık bir sürü insan Ayrık Haskell paralel tüm numarası/mantık çatırdayan yaparken paylaşılan bellek düğümleri çalışırken dağıtım denetler, nerede modelini de ilgilendi.

Bu haskell-ayrık kütüphane doğru bir başlangıç: http://hackage.haskell.org/package/erlang

Ve Ruby ülkede benzer çabalar var, Kibir): http://github.com/mwotton/Hubris/tree/master

Şimdi soru aslında eğer x / Haskell birlikte çalışabilirlik zor konuları öğrenmek için meclisten geçmesi için birini bulmak.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ama Jenna

    Ama Jenna

    29 NİSAN 2011
  • Joe DiFeo

    Joe DiFeo

    7 AĞUSTOS 2012
  • NYLON Video

    NYLON Video

    11 Aralık 2006