Üretim için haskell dil uzantısını öğrenmenin gerekliliği


10

Haskell temel dili gerçekten basit. Bir OO geçmişinden gelen temel zorluk, saf işlevsel paradigmaya uyum sağlamaktır.

"Temel" Haskell öğrenirken, dil uzantılarını her zaman CS insanları için oyuncaklar veya dilin gelecekteki sürümleri için (python'da olduğu gibi) deneyler olarak gördüm from future import ???.

Ancak, Yesod gibi web çerçevelerine bakmaya başladığımda, 3 ve 4 uzantı arasında çok sayıda kaynak dosyasının gerekli olduğunu gördüm. Bazıları oldukça basit görünüyor (StringOverload). Diğerleri gerçekten korkutucu (GADT, Tip Famillies, Şablon Haskell). Dokümanları, sadece yeni bir kütüphane "öğrenmeyi" bekleyen bir kişi için korkutucu olan araştırma makalelerine bağlanıyor.

Haskell'de GHC dil uzantılarının verimli olmasını öğrenmek gerekli midir? Bir üretim uygulaması için bir Haskell geliştiricisi kiralayacak olsaydınız, böyle bir bilgi ister misiniz?


Yanıtlar:


7

Haskell'de GHC dil uzantılarının verimli olmasını öğrenmek gerekli midir?

Evet. Ve bu herhangi bir dil / araç için geçerlidir. Temel / temel bilgi ile çevrimiçi yarışma sorunlarını çözebilir, küçük üniversite projesi olabilir, ama kesinlikle gerçek dünya uygulaması değil.

Bir üretim uygulaması için bir haskell geliştiricisi kiralayacak olsaydınız, böyle bir bilgi ister misiniz?

Bu şimdi bağlıdır Bu sizinle paylaşabilecek bir kişi var mı. Evetse, o kişi yeni çalışanı yükseltebilir. Değilse, ilk önce böyle bir bilgiye sahip olmalısınız. Ve yine bu yeni teknolojiler için geçerlidir.

Elbette Haskell'de bu kadar derin bilgiye sahip olan insanları işe almayı deneyebilirsiniz. Ancak Haskell endüstride nispeten yeni olmak ve çevresinde çok az ticari proje yapıldığını düşünürsek, bu kişiyi bulmak zor olacaktır. Haskell'de profesyonel bir ekip oluşturmanın etkili yolu, Haskell'de temel ve istekli olduğunu bilen kişileri işe alıp daha sonra eğitmek olacaktır.


Protesto edecektim, ama sonra Real World Haskell'in birçok dil uzantısı öğrettiğini gördüm. Cevabınız için teşekkür ederim.
Simon Bergot

2
"Ve bu herhangi bir dil / araç için de geçerlidir" - bu tamamen yanlıştır. Diyelim ki, Java, C #, C ++ gibi dilleri alın - hiçbirinin gerçek dünya uygulama kodunda yaygın olarak bulunan dil uzantıları yoktur. "Çevrimiçi yarışma sorunu çözümlerinden" daha az önemsiz bir şey yazmanız gerektiğinde her zaman dil uzantılarını kullanmanız gerekiyorsa, bence, dil spesifikasyonunda çok yanlış bir şey var.
Malcolm

@Malcolm Neden "Çevrimiçi yarışma problemi çözümlerinden" daha az önemsiz bir şey yazmanız gerektiğinde her zaman dil uzantıları kullanmanız gerekiyorsa, bence, dil spesifikasyonunda çok yanlış bir şey var. " doğru olmak? Bir uzantının onu olumsuz yapan özelliği nedir? Ghc ve sağlanan uzantıları kullanıyorum. Mevcut bir projeye eklenti eklemek, başka bir kütüphane eklemek kadar külfetli görünür.
Davorak

2
@Davorak Tek bir dil yerine milyonlarca farklı uzantı kombinasyonumuz var ve kodun belirli bir derleyicide derlenip derlenmeyeceği hakkında hiçbir şey bilmiyorsunuz. Uzantılar kodu taşınabilir yapmaz hale getirir. Ve ayrıca bu, dili öğrenmek için bir acı haline getirir, çünkü herkesin kullandığı tek bir özellik kümesi yerine, muazzam miktarda ek özellik vardır ve hangilerini bilmeniz ve kullanmanız gerektiği ve hangilerinin sadece var olduğu hakkında bir fikriniz yoktur. çünkü araştırmacılar eğleniyor.
Malcolm

2
@Davorak Bahsettiğim sorun tam olarak bu: herkes GHC kullanıyor, çünkü bu hala aktif olarak korunan tek derleyici. Diğer derleyiciler devam edemez, bu yüzden kimse onları kullanamaz ve onlara yatırım yapmak için çok az neden vardır. Kütüphanelere gelince: problem için kütüphaneler seçiyor ve sadece onlarla çalışıyorsunuz. Diyelim ki, XML okumalısınız, sadece bir XML okuma kütüphanesine ihtiyacınız var. Bununla birlikte, uzantılarla hangisine ihtiyacınız olduğu açık değildir. Yine de kütüphanelerde bir sorun var. Diyelim ki Java'da sadece diziler ve koleksiyonlar var ve Haskell'de bir dizi dizi kütüphanesi var.
Malcolm
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.