Apa kegunaan Clojure? [Tutup]

100

Untuk aplikasi dunia nyata apa orang menggunakan Clojure?

Saya menggunakan Groovy untuk lem, Java untuk sistem besar, skrip Python / Perl untuk parsing dan lem. Saya dapat melihat diri saya memanggil Clojure dari Java, tetapi saya tidak dapat melihat di mana saya akan menggunakannya dengan sendirinya. Menurut saya, akan lebih mudah menggunakan hampir semua bahasa skrip untuk tugas-tugas adhoc.

Saya bukan ahli Groovy atau fanboy dengan cara apa pun, tetapi menurut saya ia memiliki kerangka kerja dukungan yang lebih baik, alat, dan banyak konstruksi bahasa (penutupan, pemrograman fungsional). Hal yang sama bisa dikatakan untuk Scala.

Mungkinkah masa depannya adalah sebagai bahasa yang tertanam di sistem lain?

Fortyrunner
sumber
23
Semuanya kecuali membuatkan saya sandwich.
Wheaties
12
@wheaties: Sudahkah Anda mencoba (sandwich me BLT)?
FrustratedWithFormsDesigner
3
Mengapa Anda tidak menggunakan Clojure untuk "sistem besar" juga? ISTM itu, karena tidak terlalu bertele-tele daripada Java, sistem Anda tidak perlu terlalu besar di Clojure. :-)
Ken
2
Melihat jawabannya - Saya rasa orang-orang menggunakannya untuk beberapa hal keren. Saya bertanya-tanya berapa banyak perusahaan yang akan memilihnya untuk pengembangan jangka panjang?
Fortyrunner
1
Saya tahu ini sudah lama sekali, tetapi dibutuhkan pemikiran yang tajam untuk memprogram dalam bahasa fungsional. Pikiran yang tajam itu mahal, jadi saya tidak tahu tentang potensi LTD Clojure dari sudut pandang bisnis - tidak sampai itu menjadi jauh lebih luas daripada sekarang (lima tahun kemudian).
Sean Allred

Jawaban:

93

Saya telah menggunakan Clojure untuk:

  1. Mengikis halaman web
  2. Skrip shell
  3. Membangun situs web
  4. Bermain-main dengan OpenGL
  5. Menulis server web asinkron
  6. HTML Templating
  7. Menjalankan tugas paralel (mengambil banyak URL dan memproses secara paralel)
  8. Bermain-main dengan audio waktu nyata
  9. Simulasi

Itu hal yang praktis / menyenangkan.

Tetapi Clojure juga memiliki banyak kedalaman teoretis. Ide yang akan menjadi semakin relevan saat arus utama datang untuk benar-benar memahami potensi Pemrograman Fungsional.

Pendapat pribadi, tetapi Clojure memberikan konstruksi bahasa yang lebih baik untuk mengatur perangkat lunak dengan benar (tanpa menyebabkan rasa sakit yang tidak semestinya bagi pemrogram yang bekerja) dari semua bahasa yang saya gunakan sejauh ini secara akademis dan profesional - C, C ++, Objective-C, Java, JavaScript, Python, Ruby.

Bukan berarti Clojure sempurna. Tetapi bagi saya, tampaknya itu dibangun di atas fondasi yang lebih baik daripada kebanyakan yang ada di luar sana.

dnolen
sumber
Apakah Anda David Nolen? orang yang memberikan ceramah tentang "Clojurescript: Lisp's Revenge". Itu adalah pembicaraan yang luar biasa!
Amogh Talpallikar
1
//, Apa yang Anda maksud dengan, "menyediakan konstruksi bahasa yang lebih baik untuk mengatur perangkat lunak dengan benar"? EG dev.clojure.org/display/community/Library+Coding+Standards ?
Nathan Basanese
2
@maSnun pada waktu pengaktifan perangkat keras modern adalah sekitar 1 detik atau kurang. Ini bagus untuk skrip shell.
dnolen
1
@dnolen Terima kasih telah meluangkan waktu untuk membalas. Saya adalah penggemar clojure baru dan membutuhkan waktu sekitar 20 detik ketika saya mencoba menjalankan file jar yang saya buat dengan lein uberjar. Saya menggunakan OS X, Macbook dengan core i5 dan RAM 16GB. Apakah Anda menggunakan pengoptimalan khusus?
masnun
5
@maSnun uberjars bukan untuk skrip shell, melainkan untuk penerapan aplikasi. Mengoptimalkan aplikasi adalah pertanyaan umum JVM, tidak ada yang khusus untuk Clojure. Anda dapat menulis skrip shell hash bang dengan Clojure semudah bahasa skrip lainnya dan itulah yang akan saya rekomendasikan.
dnolen
20

Mungkin mulai dengan alasan Rich Hickey .

Sedangkan untuk aplikasi dunia nyata, bagaimana dengan roll call penggunaan produksi dari grup google ini?

Corbin Maret
sumber
18

Clojure digunakan secara ekstensif untuk memproses data dalam volume besar. Ini sangat cocok untuk data mining / komersial-AI (yaitu: Runa) dan prediksi skala besar (alias WeatherBill). Kisah konkurensi Clojure sangat membantu dalam domain padat data ini di mana pemrosesan paralel hanyalah satu-satunya jawaban.

Arthur Ulfeldt
sumber
13

Nah, itu pertanyaan yang sulit dijawab. Apa yang ingin kamu lakukan? Tidak banyak yang Clojure tidak cocok untuk itu. Maksud saya, itu tidak terlalu bagus untuk satu dari skrip baris perintah karena waktu startup JVM (kecuali Anda menggunakan kue atau yang serupa), tetapi itu dapat dikatakan untuk bahasa JVM apa pun.

Clojure sangat cocok untuk tugas konkurensi. Itu dibangun dari bawah ke atas untuk menjadi bahasa yang luar biasa untuk konkurensi, dan sistem STM-nya fantastis. Jika Anda perlu melakukan beberapa hal yang berhubungan dengan konkurensi hardcore, Clojure mungkin sangat cocok untuk tugas itu.

Namun, orang harus ingat bahwa Clojure adalah bahasa tujuan umum. Ini tidak hanya cocok untuk ceruk tertentu, dan cenderung berguna untuk banyak atau semua hal yang mungkin cocok untuk bahasa JVM lainnya.

Clojure dirancang untuk menjadi bahasa yang fantastis dalam dirinya sendiri, dan tidak harus menjadi bahasa perekat. Anda dapat membangun sistem dari awal di Clojure tanpa harus menyentuh kode Java secara langsung. Bukan berarti itu tidak menjadi bahasa perekat yang bagus, saya tahu banyak orang telah menggunakannya seperti itu.

Jika Anda memiliki sesuatu dalam pikiran, hal terbaik yang harus dilakukan adalah mempertimbangkan seperti apa solusinya dalam bahasa apa pun yang merupakan opsi. Jika terlihat / terasa lebih baik di Groovy, gunakan Groovy. Keduanya adalah bahasa yang sangat berbeda, dan keduanya memiliki tujuan.

Rayne
sumber
Bahkan kemudian saya menemukan diri saya menulis skrip CLI Clojure, hanya karena saya menemukan bahasanya menyenangkan untuk ditulis dan tidak keberatan waktu startup dalam kasus saya.
nha
7

Anda dapat menggunakan Clojure di mana pun Anda akan menggunakan Groovy atau java. Mengapa Anda ingin melakukan itu? Beberapa orang menyukai cadel. Mereka akan memilih clojure daripada Groovy. Beberapa orang tidak menyukai cadel. Mereka akan memilih Groovy.

Vagif Verdi
sumber
2
Ini bukan materi pilihan saja, clojure memiliki banyak fitur yang tidak dimiliki bahasa lain) entah bagaimana tidak ada yang menyebutkan apa-apa, saya hampir tidak ingat pembicaraan di konferensi jadi saya tidak akan bisa menulis jawaban yang tepat di sini
holms