Haskell çevresinde çok fazla hype var, ancak gerçek dünya uygulamalarında nasıl kullanıldığı hakkında bilgi almak zor. Haskell'in en popüler projeleri / kullanımları nelerdir ve neden bu sorunları çözmede mükemmeldir?
Haskell çevresinde çok fazla hype var, ancak gerçek dünya uygulamalarında nasıl kullanıldığı hakkında bilgi almak zor. Haskell'in en popüler projeleri / kullanımları nelerdir ve neden bu sorunları çözmede mükemmeldir?
Yanıtlar:
Bu dilin bazı yaygın kullanımları nelerdir?
Hızlı uygulama geliştirme.
"Neden Haskell?" Bilmek istiyorsanız, fonksiyonel programlama dillerinin avantajlarını ( https://c2.com/cgi/wiki?AdvantagesOfFunctionalProgramming adresinden alınmıştır ) düşünmeniz gerekir :
Fonksiyonel programlar, ImperativeLanguage meslektaşlarına göre çok daha kısadır. Bu genellikle programcı verimliliğinin artmasına neden olur
FP hızlı prototiplemeyi teşvik eder. Bu nedenle, ExtremeProgrammers için en iyi yazılım tasarımı paradigması olduğunu düşünüyorum ... ama ne biliyorum?
FP, ObjectOrientedProgramming'in farklı bileşenlerin boyutunda modüler olduğu işlevsellik boyutunda modülerdir.
Kek yapma ve yemek yeteneği. İletileri işleyen karmaşık bir OO sistemi olduğunu düşünün - her bileşen iletiye bağlı olarak durum değişiklikleri yapabilir ve ardından iletiyi bağlantılarının bulunduğu bazı nesnelere yönlendirebilir. Çağrı hiyerarşisinde derin bir nesne mesajın kusurlu olduğuna karar verdiyse, her değişikliği kolayca geri alabilmek çok güzel olmaz mı? Farklı devletlerin geçmişine sahip olmaya ne dersiniz?
Sizin için yapılan pek çok temizlik görevi: veri yapılarının yapısını bozmak (PatternMatching), değişken bağlamaları (kapaklı LexicalScope) depolamak, güçlü yazma (TypeInference), GarbageCollection, depolama ayırma, kutulu (işaretçi-değere) veya doğrudan kutulu (doğrudan değer) ) temsil ...
Güvenli çoklu kullanım! Değişmez veri yapıları veri yarışı koşullarına tabi değildir ve sonuç olarak kilitlerle korunmaları gerekmez. Mevcut nesneleri yıkıcı bir şekilde değiştirmek yerine her zaman yeni nesneler tahsis ediyorsanız, kilitleme ayırma ve GarbageCollection sisteminde gizlenebilir.
Bunun dışında Haskell'in kendine özgü avantajları vardır:
1 / 0
bir listenin ilk öğesi olarak koyabilirsiniz ve yalnızca ikinci öğeyi kullandıysanız da çalışmaya devam eder.Aşağıdaki bağlantılara göz atabilirsiniz:
x = 5;
yürütüldükten sonra x
değeri içerdiği garanti edilir 5
.
operator =
denildiğini garanti ediyor . Ve tanımlamazsanız ne olacağını garanti ederoperator =
Bence bu yazıdaki insanlar hiç işlevsel bir programlama dili kullanmayan herkes için en önemli noktayı kaçırıyor: zihninizi genişletmek. Fonksiyonel programlamaya yeniyseniz Haskell size daha önce hiç düşünmediğiniz şekilde düşünmenizi sağlayacaktır. Sonuç olarak, diğer alanlarda ve diğer dillerde programlamanız gelişir. Ne kadar? Ölçülmesi zor.
Haskell gibi genel amaçlı bir dilin neye iyi geldiğine dair iyi bir cevap var: genel olarak programlar yazmak.
Pratikte ne için kullanıldığı için, bunu oluşturmak için üç yaklaşımım var:
Grafik, ağ, sistem programlama, veri yapıları, veri tabanları, geliştirme, metin işleme için iyi olduğunu gösterir ...
Ve son olarak, neyin gerçekten güçlü olduğuna dair fikrim:
Umarım bu, herhangi bir özgüllükle cevaplanacaksa, sorunuzun ne kadar geniş olduğuna dair bir fikir verir.
Gönderen Haskell Wiki :
Haskell, havacılık ve savunma, finans, web girişimleri, donanım tasarım firmaları ve çim biçme makinesi üreticilerine kadar çeşitli ticari kullanım alanlarına sahiptir. Bu sayfa Haskell'in endüstriyel kullanımı ile ilgili kaynakları toplamaktadır.
Wikipedia'ya göre Haskell dili, mevcut işlevsel dillerin, fonksiyonel dil tasarımında gelecekteki araştırmalar için kullanılabilecek ortak bir dilde birleştirilmesi ihtiyacından yaratıldı.
Mevcut amacı gereğinden fazla büyüdüğü ve araştırmadan çok daha fazlası için kullanıldığı mevcut bilgilere dayanmaktadır. Şimdi genel amaçlı fonksiyonel programlama dili olarak kabul edilmektedir.
Kendinize hala "Neden kullanmalıyım?" Diye soruyorsanız, Neden kullanmalısınız? Wiki Giriş bölümü.
Haskell genel amaçlı bir programlama dilidir. Başka bir dili kullandığınız her şey için kullanılabilir. Kendi hayal gücünüz dışında hiçbir şeyle sınırlı değilsiniz. Ne için uygun? Hemen hemen her şey. İşlevsel bir dilin mükemmel olmadığı birkaç görev vardır.
Ve evet, ben Dreamincode'dan Rayne. :)
Vikipedi sayfasını okumadığınız takdirde, işlevsel programlamanın Nesne Odaklı programlama bir paradigma gibi bir paradigma olduğunu belirtmek isterim. Sadece bilmiyorsan. Haskell de çalıştığı gibi işlevsel; bu konuda gayet iyi çalışıyor.
Bir dilin Nesneye Yönelik bir dil olmaması, dilin herhangi bir şeyle sınırlı olduğu anlamına gelmez. Haskell genel amaçlı bir programlama dilidir ve Java kadar genel bir amaçtır.
Serin bir tane var, facebook PHP kodunu yeniden yazmak için otomatik bir araç oluşturdu. Kaynağı soyut bir sözdizimi ağacına ayrıştırırlar, bazı dönüşümler yaparlar:
if ($f == false) -> if (false == $f)
Nedenini bilmiyorum, ama bu onların özel tarzı gibi görünüyor ve sonra oldukça yazdırıyorlar.
https://github.com/facebook/lex-pass
Küçük etki alanına özgü diller oluşturmak için haskell kullanıyoruz. Büyük miktarda veri işleme. Web Geliştirme. Web örümcekleri. Test uygulamaları. Sistem yönetimi komut dosyaları yazma. Diğer taraflarla iletişim kuran arka uç komut dosyaları. İzleme komut dosyaları (munin ile birlikte iyi çalışan bir DSL'imiz var, uygulamalarınız için doğru monitör kodunun yazılmasını çok daha kolay hale getiriyor.)
Aslında her türlü şey. Matematiksel olarak eğimli iseniz, çok güçlü ve kullanışlı özelliklere sahip sadece günlük bir genel amaçlı dildir.
false
Solda yazmanın yararını görmeme rağmen , otomatik olarak yapmak için bir araç kullanma noktasını görmüyorum: zaten bir ==
operatörünüz varsa, o parçanın lex-pass'ın yakalanması amaçlanıyor ve =
bunun yerine bir şeyiniz varsa bunun kasıtlı olarak böyle olup olmadığını söylemenin kesin bir yolu yok.
Gönderen Haskell :
Haskell, katı olmayan anlambilim ve güçlü statik yazarak standartlaştırılmış, genel amaçlı tamamen işlevsel bir programlama dilidir . Bu, isimlendirici Haskell Curry'den almıştır.
Temel olarak Haskell, diğer genel amaçlı dilleri (örneğin C #, Java, C, C ++, vb.) Kullanarak oluşturacağınız hemen hemen her şeyi oluşturmak için kullanılabilir.
Bu Haskell ve kullanımları hakkında bilgi için oldukça iyi bir kaynaktır: