Clojure มีประโยชน์อย่างไร? [ปิด]


100

ผู้คนใช้ Clojure เพื่อใช้งานแอปพลิเคชันใดในโลกแห่งความจริง

ฉันใช้ Groovy สำหรับงานกาว, Java สำหรับระบบใหญ่, สคริปต์ Python / Perl สำหรับการแยกวิเคราะห์และทากาว ฉันเห็นว่าตัวเองเรียก Clojure จาก Java แต่ฉันไม่เห็นว่าฉันจะใช้มันตรงไหนดี มันทำให้ฉันประหลาดใจว่าการใช้ภาษาสคริปต์เกือบทุกภาษาสำหรับงาน adhoc จะง่ายกว่า

ฉันไม่ใช่ผู้เชี่ยวชาญเรื่อง Groovy หรือแฟนบอย แต่อย่างใด แต่มันทำให้ฉันประหลาดใจว่ามันมีกรอบการสนับสนุนที่ดีกว่าเครื่องมือและโครงสร้างภาษามากมาย (การปิดการเขียนโปรแกรมเชิงฟังก์ชัน) เช่นเดียวกันอาจกล่าวได้สำหรับ Scala

เป็นไปได้ไหมว่าอนาคตของมันจะเป็นภาษาที่ฝังอยู่ในระบบอื่น ๆ ?


23
ทุกอย่างยกเว้นทำแซนวิชให้ฉัน
วีทตี้

12
@wheaties: ลอง(sandwich me BLT)รึยัง?
FrustratedWithFormsDesigner

3
ทำไมคุณไม่ใช้ Clojure สำหรับ "ระบบใหญ่" ด้วยล่ะ? ISTM ที่มีรายละเอียดน้อยกว่า Java ระบบของคุณไม่จำเป็นต้องมีขนาดใหญ่มากใน Clojure :-)
Ken

2
ดูคำตอบ - ฉันเดาว่าผู้คนกำลังใช้มันเพื่อสิ่งดีๆ ฉันสงสัยว่าองค์กรต่างๆจะเลือกใช้เพื่อการพัฒนาระยะยาวได้อย่างไร?
Fortyrunner

1
ฉันรู้ว่ามันเป็นเวลานาน แต่ต้องใช้ความคิดที่เฉียบแหลมในการเขียนโปรแกรมด้วยภาษาที่ใช้งานได้ จิตใจที่เฉียบแหลมนั้นมีราคาแพงดังนั้นฉันจึงไม่รู้เกี่ยวกับศักยภาพของ LTD ของ Clojure จากมุมมองทางธุรกิจไม่ใช่จนกว่ามันจะแพร่หลายไปไกลกว่าที่เป็นอยู่ในปัจจุบัน (ห้าปีต่อมา)
Sean Allred

คำตอบ:


93

ฉันใช้ Clojure สำหรับ:

  1. การขูดหน้าเว็บ
  2. เชลล์สคริปต์
  3. การสร้างเว็บไซต์
  4. เล่นกับ OpenGL
  5. การเขียนเว็บเซิร์ฟเวอร์ async
  6. HTML Templating
  7. การรันงานคู่ขนาน (ดึง URL หลายรายการและประมวลผลพร้อมกัน)
  8. เล่นกับเสียงเรียลไทม์
  9. การจำลอง

นั่นคือสิ่งที่ใช้ได้จริง / สนุก

แต่ Clojure มีความลึกทางทฤษฎีมากมายเช่นกัน แนวคิดที่จะมีความเกี่ยวข้องมากขึ้นเมื่อกระแสหลักเข้าใจถึงศักยภาพของ Functional Programming อย่างแท้จริง

ความคิดเห็นส่วนตัว แต่ Clojure flat out ให้โครงสร้างภาษาที่ดีกว่าสำหรับการจัดระเบียบซอฟต์แวร์อย่างถูกต้อง (โดยไม่ก่อให้เกิดความเจ็บปวดเกินควรสำหรับโปรแกรมเมอร์ที่ทำงาน) ของทุกภาษาที่ฉันใช้จนถึงตอนนี้ในเชิงวิชาการและวิชาชีพ - C, C ++, Objective-C, Java, JavaScript, Python, Ruby

ซึ่งไม่ได้หมายความว่า Clojure นั้นสมบูรณ์แบบ แต่สำหรับฉันแล้วดูเหมือนว่ามันถูกสร้างขึ้นบนรากฐานที่ดีกว่าสิ่งที่มีอยู่ทั่วไป


คุณคือ David Nolen หรือเปล่า? ผู้ชายที่คุยเรื่อง "Clojurescript: Lisp's Revenge" เป็นการพูดที่ยอดเยี่ยมมาก!
Amogh Talpallikar

1
// คุณหมายถึงอะไร "ให้โครงสร้างภาษาที่ดีขึ้นสำหรับการจัดระเบียบซอฟต์แวร์อย่างถูกต้อง" เช่นdev.clojure.org/display/community/Library+Coding+Standards ?
Nathan Basanese

2
@maSnun เวลาเริ่มต้นฮาร์ดแวร์สมัยใหม่อยู่ที่ประมาณ 1 วินาทีหรือน้อยกว่า ใช้ได้ดีสำหรับเชลล์สคริปต์
dnolen

1
@dnolen ขอบคุณที่สละเวลาตอบกลับ ฉันเป็นคนใหม่ที่คลั่งไคล้ clojure และใช้เวลาประมาณ 20 วินาทีเมื่อฉันพยายามเรียกใช้ไฟล์ jar ที่ฉันสร้างด้วย lein uberjar ฉันใช้ OS X, Macbook ที่มี core i5 และ 16GB RAM คุณใช้การเพิ่มประสิทธิภาพพิเศษใด ๆ หรือไม่?
masnun

5
uberjars @maSnun ไม่ได้มีไว้สำหรับเชลล์สคริปต์ แต่สำหรับการปรับใช้แอปพลิเคชัน การเพิ่มประสิทธิภาพแอปพลิเคชันเป็นคำถามทั่วไปของ JVM ไม่มีอะไรเฉพาะเจาะจงสำหรับ Clojure คุณสามารถเขียนแฮชบังเชลล์สคริปต์ด้วย Clojure ได้อย่างง่ายดายเหมือนกับภาษาสคริปต์อื่น ๆ และนั่นคือสิ่งที่ฉันอยากจะแนะนำ
dnolen


19

Clojure ถูกใช้อย่างกว้างขวางสำหรับการประมวลผลข้อมูลจำนวนมาก เหมาะอย่างยิ่งกับการขุดข้อมูล / AI เชิงพาณิชย์ (เช่น: Runa) และการคาดการณ์ขนาดใหญ่ (aka WeatherBill) เรื่องราวการเกิดขึ้นพร้อมกันของ Clojure ช่วยได้มากในโดเมนที่มีข้อมูลจำนวนมากซึ่งการประมวลผลแบบขนานเป็นเพียงคำตอบ


14

นั่นเป็นคำถามที่ตอบยาก เธออยากทำอะไรล่ะ? มีไม่มากที่ Clojure ไม่เหมาะสำหรับ ฉันหมายความว่ามันไม่ดีจริงๆสำหรับสคริปต์บรรทัดคำสั่งเดียวเนื่องจากเวลาเริ่มต้น JVM (เว้นแต่คุณจะใช้เค้กหรือสิ่งที่คล้ายกัน) แต่สามารถพูดได้สำหรับภาษา JVM ใด ๆ

Clojure เหมาะอย่างยิ่งกับงานที่เกิดขึ้นพร้อมกัน มันถูกสร้างขึ้นตั้งแต่ต้นจนเป็นภาษาที่ยอดเยี่ยมสำหรับการทำงานพร้อมกันและระบบ STM นั้นยอดเยี่ยมมาก หากคุณต้องการทำสิ่งที่เกี่ยวข้องกับการเกิดพร้อมกันแบบฮาร์ดคอร์ Clojure อาจเหมาะกับงานนั้นเป็นพิเศษ

อย่างไรก็ตามเราต้องจำไว้ว่า Clojure เป็นภาษาสำหรับวัตถุประสงค์ทั่วไป ไม่เพียง แต่เหมาะกับบางช่องเท่านั้นและมีแนวโน้มที่จะเป็นประโยชน์สำหรับหลาย ๆ อย่างหรือทั้งหมดที่ภาษา JVM อื่น ๆ อาจเหมาะสม

Clojure ได้รับการออกแบบให้เป็นภาษาที่ยอดเยี่ยมในแบบของตัวเองและไม่จำเป็นต้องเป็นภาษากาว คุณสามารถสร้างระบบได้ตั้งแต่ต้นใน Clojure โดยไม่ต้องสัมผัสกับโค้ด Java โดยตรง ไม่ใช่ว่ามันไม่ได้สร้างภาษากาวที่ดีฉันรู้ว่าหลายคนใช้มันเช่นนี้

หากคุณมีบางอย่างอยู่ในใจสิ่งที่ดีที่สุดที่ต้องทำคือพิจารณาว่าโซลูชันจะเป็นอย่างไรในภาษาใด ๆ ที่เป็นตัวเลือก ถ้าดู / รู้สึกดีขึ้นใน Groovy ให้ไปกับ Groovy ทั้งสองภาษาต่างกันอย่างสิ้นเชิงและทั้งสองมีจุดประสงค์


ถึงอย่างนั้นฉันก็พบว่าตัวเองกำลังเขียนสคริปต์ CLI Clojure เพียงเพราะฉันพบว่าภาษานั้นน่าเขียนและไม่คำนึงถึงเวลาเริ่มต้นในกรณีของฉัน
nha

7

คุณสามารถใช้ Clojure ได้ทุกที่ที่คุณจะใช้ Groovy หรือ java ทำไมคุณถึงอยากทำเช่นนั้น? บางคนชอบเสียงกระเพื่อม คนเหล่านั้นจะเลือก clojure มากกว่า Groovy บางคนไม่ชอบเสียงกระเพื่อม คนเหล่านั้นจะเลือก Groovy


2
มันไม่ได้เป็นเยื่อของทางเลือกเท่านั้น Clojure มีตันคุณลักษณะภาษาอื่น ๆ ที่ไม่ใช่มี) อย่างใดไม่มีใครกล่าวถึงสิ่งที่ผมแทบจะจำได้ว่าการเจรจาในการประชุมดังนั้นฉันจะไม่สามารถที่จะเขียนคำตอบที่เหมาะสมในการที่นี่
Holms
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.