จุดประสงค์ของคำถามของฉันไม่ใช่เพื่อเริ่มสงครามเปลวไฟ แต่เป็นการตัดสินว่าในสถานการณ์ใดแต่ละภาษาคือ "เครื่องมือที่ดีที่สุดสำหรับงาน"
ฉันได้อ่านหนังสือหลายเล่มเกี่ยวกับ Clojure ( Programming Clojure , Practical Clojure , The Joy of Clojureและ Manning Early Access edition of Clojure in Action ) และฉันคิดว่ามันเป็นภาษาที่ยอดเยี่ยม ฉันกำลังอ่านLet Over Lambdaซึ่งส่วนใหญ่เกี่ยวข้องกับมาโคร Lisp ทั่วไปและมันก็เป็นภาษาที่น่าสนใจมากเช่นกัน
ฉันไม่ใช่ผู้เชี่ยวชาญด้าน Lisp (เป็นมือใหม่มากกว่า) แต่ภาษาตระกูลนี้ทำให้ฉันหลงใหลเช่นเดียวกับการเขียนโปรแกรมเชิงฟังก์ชันโดยทั่วไป
ข้อดีของ Clojure (และข้อเสียของ "อื่น ๆ "):
ทำงานบน JVM
JVM เป็นสภาพแวดล้อมทางภาษาที่มีความเสถียรและมีประสิทธิภาพสูงซึ่งตรงตามความฝันของ Sun ในเรื่อง "เขียนครั้งเดียววิ่ง [เกือบ] ที่ไหนก็ได้" ฉันสามารถเขียนโค้ดบน Macbook Pro รวบรวมเป็นไฟล์ JAR ที่ปฏิบัติการได้จากนั้นเรียกใช้บน Linux และ Microsoft Windows โดยมีการทดสอบเพิ่มเติมเล็กน้อย
JVM (ฮอตสปอตและอื่น ๆ ) รองรับการรวบรวมขยะคุณภาพสูงและการรวบรวมและการเพิ่มประสิทธิภาพแบบทันเวลาที่มีประสิทธิภาพมาก เมื่อไม่กี่ปีที่ผ่านมาฉันเขียนทุกอย่างที่ต้องทำงานเร็วใน C ตอนนี้ฉันไม่ลังเลที่จะทำใน Java
แบบมาตรฐานเรียบง่ายแบบมัลติเธรด Common Lisp มีแพ็คเกจมัลติเธรดมาตรฐานหรือไม่
เที่ยวบินไปถึงความน่าเบื่อของวงเล็บทุกคนด้วย
[]
,{}
และ#{}
แม้ผู้เชี่ยวชาญสามัญชัดอาจจะบอกว่ามีแมโครอ่านคุณสามารถเพิ่มเหล่านั้นเพื่อ CL
ข้อเสียของ Clojure :
- ทำงานบน JVM
- ไม่มีการเรียกซ้ำหรือการต่อเนื่องของหาง Common Lisp สนับสนุนความต่อเนื่องหรือไม่? ฉันเชื่อว่าโครงการต้องการการสนับสนุนทั้งสองอย่าง
ข้อดีของผู้อื่น (โดยเฉพาะ Lisp โดยเฉพาะ) (และข้อเสียของ Clojure):
มาโครตัวอ่านที่ผู้ใช้กำหนดเองได้
ข้อดีอื่น ๆ ?
ความคิด? ความแตกต่างอื่น ๆ ?