Clojure ne işe yarar? [kapalı]


100

İnsanlar Clojure'u hangi gerçek dünya uygulamaları için kullanıyor?

Yapıştırıcı şeyler için Groovy, büyük sistemler için Java, ayrıştırma ve yapıştırma için Python / Perl betikleri kullanıyorum. Java'dan Clojure'a seslendiğimi görebiliyordum ama kendi başına nerede kullanacağımı göremiyorum. Anlık görevler için hemen hemen her betik dilini kullanmak bana çok daha kolay geliyor.

Ben bir Groovy uzmanı ya da hayran değilim ama daha iyi bir destek çerçevesine, araçlara ve birçok dil yapısına (kapamalar, işlevsel programlama) sahip olması beni şaşırtıyor. Aynı şey Scala için de söylenebilir.

Geleceği diğer sistemlere gömülü bir dil olabilir mi?


23
Bana sandviç yapmak dışında her şey.
buğdaylar

12
@wheaties: Denedin (sandwich me BLT)mi?
FrustratedWithFormsDesigner

3
Clojure'u neden "büyük sistemler" için de kullanmayasınız? ISTM, Java'dan daha az ayrıntılı olduğundan, sistemlerinizin Clojure'da bu kadar büyük olmasına gerek yoktur. :-)
Ken

2
Cevaplara baktığımızda - sanırım insanlar onu bazı harika şeyler için kullanıyorlar. Acaba uzun vadeli geliştirme çalışmaları için kaç işletme bunu seçecek?
Fortyrunner

1
Uzun zaman geçtiğini biliyorum, ancak işlevsel bir dilde programlama yapmak keskin bir zihin gerektirir. Keskin beyinler pahalıdır, bu yüzden Clojure'un LTD potansiyelini iş açısından bilmiyorum - bugün bile olduğundan (beş yıl sonra) çok daha yaygın hale gelene kadar.
Sean Allred

Yanıtlar:


93

Clojure'u şunlar için kullandım:

  1. Web sayfalarını kazıma
  2. Kabuk betikleri
  3. Web siteleri oluşturma
  4. OpenGL ile oynamak
  5. Zaman uyumsuz web sunucuları yazma
  6. HTML Şablonu Oluşturma
  7. Paralel görevler çalıştırma (birden çok URL getirme ve paralel olarak işleme)
  8. Gerçek zamanlı sesle oynamak
  9. Simülasyonlar

Bu pratik / eğlenceli şeyler.

Ama Clojure'un da bol miktarda teorik derinliği var. Ana akım İşlevsel Programlamanın potansiyelini gerçekten anladıkça giderek daha alakalı hale gelecek fikirler.

Kişisel bir görüş, ancak Clojure düz çıktı, şimdiye kadar akademik ve profesyonel olarak kullandığım tüm diller için (çalışan programcı için gereksiz acıya neden olmadan) yazılımı doğru şekilde düzenlemek için daha iyi dil yapıları sağlar - C, C ++, Objective-C, Java, JavaScript, Python, Ruby.

Clojure'un mükemmel olduğu söylenemez. Ama bana öyle geliyor ki, orada bulunanların çoğundan daha iyi bir temel üzerine kurulmuş.


David Nolen siz misiniz? "Clojurescript: Lisp'in İntikamı" üzerine konuşmayı yapan adam. Harika bir konuşmaydı!
Amogh Talpallikar

1
//, "Yazılımın doğru şekilde organize edilmesi için daha iyi dil yapıları sağlar" derken neyi kastediyorsunuz? EG dev.clojure.org/display/community/Library+Coding+Standards ?
Nathan Basanese

2
Modern donanım başlatma süresinde @maSnun yaklaşık 1 saniye veya daha azdır. Bu, kabuk betikleri için iyidir.
dnolen

1
@dnolen Zaman ayırıp cevap verdiğiniz için teşekkürler. Ben yeni bir clojure meraklısıyım ve lein uberjar ile oluşturduğum jar dosyasını çalıştırmaya çalıştığımda 20 saniye kadar sürüyor. OS X, core i5 ve 16GB RAM'li Macbook kullanıyorum. Herhangi bir özel optimizasyon kullanıyor musunuz?
masnun

5
@maSnun uberjar'lar kabuk betikleri için değildir, uygulama dağıtımı içindir. Uygulamaları optimize etmek genel bir JVM sorusudur, Clojure'a özgü bir şey değildir. Clojure ile hash bang kabuk komut dosyalarını diğer herhangi bir komut dosyası dili kadar kolay yazabilirsiniz ve bunu tavsiye ederim.
dnolen


18

Clojure, büyük hacimli verileri işlemek için yaygın olarak kullanılmaktadır . Veri madenciliği / ticari yapay zeka (yani: Runa) ve büyük ölçekli tahminler (aka WeatherBill) için çok uygundur. Clojure'ün eşzamanlılık hikayesi, paralel işlemenin sadece tek cevap olduğu bu veri ağırlıklı alanlarda gerçekten yardımcı oluyor.


13

Bu cevaplaması zor bir soru. Ne yapmak istiyorsun? Clojure'un gerçekten uygun olmadığı pek çok şey yok. Demek istediğim, JVM başlatma süresi nedeniyle ( pasta veya benzeri bir şey kullanmadığınız sürece) bir kapalı komut satırı komut dosyaları için gerçekten harika değil , ancak bu herhangi bir JVM dili için söylenebilir.

Clojure özellikle eşzamanlılık görevleri için uygundur. Eşzamanlılık için harika bir dil olması için sıfırdan inşa edildi ve STM sistemi harika. Eşzamanlılıkla ilgili bazı şeyler yapmanız gerekiyorsa, Clojure bu görev için özellikle uygun olabilir.

Ancak Clojure'un genel amaçlı bir dil olduğu unutulmamalıdır. Yalnızca belirli nişlere uygun değildir ve diğer JVM dillerinin uygun olabileceği şeylerin çoğu veya tümü için yararlı olma eğilimindedir.

Clojure, kendi başına harika bir dil olacak şekilde tasarlandı ve mutlaka bir yapıştırıcı dil değil. Java koduna doğrudan dokunmadan Clojure'da sistemleri sıfırdan oluşturabilirsiniz. Güzel bir yapıştırıcı dil yapmadığından değil, pek çok insanın onu bu şekilde kullandığını biliyorum.

Aklınızda bir şey varsa, yapılacak en iyi şey, seçenek olan her dilde çözümün nasıl görüneceğini düşünmektir. Groovy'de daha iyi görünüyorsa / hissediyorsa, Groovy ile gidin. İkisi de tamamen farklı diller ve her ikisinin de amaçları var.


O zaman bile kendimi CLI Clojure senaryoları yazarken buldum, çünkü dili yazmayı keyifli bulduğum ve durumumda başlangıç ​​zamanını önemsemediğim için.
nha

7

Clojure'u Groovy veya java'yı kullandığınız her yerde kullanabilirsiniz. Bunu neden yapmak istersiniz? Bazı insanlar peltek yemeyi sever. Bunlar Groovy yerine clojure seçecekler. Bazı insanlar peltekten hoşlanmaz. Onlar Groovy'yi seçecekler.


2
Bu sadece tercih edilen bir konu değil, clojure başka bir dilin sahip olmadığı tonlarca özelliğe sahip) nedense kimse bir şeyden bahsetmedi, konferanslardaki konuşmaları zar zor hatırlıyorum, bu yüzden burada uygun bir cevap
yazamayacağım
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.