ใครช่วยกรุณาอธิบายความแตกต่างที่สำคัญระหว่าง Scala, Groovy และ Clojure ฉันรู้ว่าคอมไพล์เหล่านี้ทำงานบน JVM แต่ฉันต้องการเปรียบเทียบง่าย ๆ ระหว่างพวกเขา
ใครช่วยกรุณาอธิบายความแตกต่างที่สำคัญระหว่าง Scala, Groovy และ Clojure ฉันรู้ว่าคอมไพล์เหล่านี้ทำงานบน JVM แต่ฉันต้องการเปรียบเทียบง่าย ๆ ระหว่างพวกเขา
คำตอบ:
Groovyเป็นภาษาที่พิมพ์แบบไดนามิกซึ่งมีไวยากรณ์อยู่ใกล้กับ Java มากโดยมีการปรับปรุงทางไวยากรณ์ที่อนุญาตให้มีรหัสที่เบากว่า มันสามารถทำงานผ่านล่ามเช่นเดียวกับการรวบรวมซึ่งทำให้ดีสำหรับการสร้างต้นแบบอย่างรวดเร็วสคริปต์และการเรียนรู้ภาษาแบบไดนามิกโดยไม่ต้องเรียนรู้ไวยากรณ์ใหม่ (สมมติว่าคุณรู้ Java) ในฐานะของ Groovy 2.0 ก็ยังได้รับการสนับสนุนเพิ่มขึ้นสำหรับการคงรวบรวม Groovy รองรับการปิดและสนับสนุนการเขียนโปรแกรมในรูปแบบที่ใช้งานได้ดีแม้ว่ามันจะยังห่างไกลจากคำจำกัดความดั้งเดิมของการเขียนโปรแกรมการทำงาน
Clojureเป็นภาษาถิ่นของเสียงกระเพื่อมด้วยคุณสมบัติขั้นสูงน้อยเช่นซอฟรานแซคชันหน่วยความจำ หากคุณชอบ Lisp และต้องการใช้สิ่งที่ชอบภายใต้ JVM Clojure เหมาะสำหรับคุณ มันอาจเป็นภาษาที่ใช้งานได้ดีที่สุดใน JVM และเป็นภาษาที่มีชื่อเสียงที่สุด นอกจากนี้ยังให้ความสำคัญกับการเปลี่ยนแปลงไม่ได้มากกว่าภาษา Lisp อื่น ๆ ซึ่งจะนำมันเข้าใกล้หัวใจของผู้ที่ชื่นชอบการใช้ภาษา
Scalaเป็นภาษาเชิงวัตถุอย่างสมบูรณ์มากกว่า Java ด้วยหนึ่งในระบบพิมพ์ที่ทันสมัยที่สุดที่มีในภาษาที่ไม่ใช่การวิจัยและแน่นอนว่าเป็นระบบพิมพ์ที่ทันสมัยที่สุดใน JVM นอกจากนี้ยังรวมแนวคิดและคุณลักษณะต่าง ๆ ของภาษาที่ใช้งานได้โดยไม่กระทบต่อการวางแนวของวัตถุ แต่การประนีประนอมกับลักษณะของภาษาเชิงหน้าที่ทำให้ผู้ที่ชื่นชอบในยุคหลัง
Groovy ได้รับการยอมรับเป็นอย่างดีและเป็นกรอบเว็บยอดนิยมใน Grails นอกจากนี้ยังเพิ่มประสิทธิภาพการสร้างระบบ Gradle ซึ่งกำลังกลายเป็นทางเลือกยอดนิยมของ Maven โดยส่วนตัวฉันคิดว่ามันเป็นภาษาที่มียูทิลิตี้ที่ จำกัด โดยเฉพาะอย่างยิ่งเมื่อ Jython และ JRuby เริ่มรุกล้ำเข้าไปใน JVM-land เทียบกับคนอื่น ๆ
Clojure แม้แต่การลดคุณสมบัติบางอย่างที่น่าสนใจมีความสนใจอย่างมากเพียงแค่เป็นภาษา Lisp บน JVM มันอาจจำกัดความนิยมที่ได้รับ แต่ฉันคาดหวังว่ามันจะมีชุมชนที่ภักดีรอบตัวมันเป็นเวลานาน
Scala สามารถแข่งขันกับ Java โดยตรงและให้เงินกับมันในเกือบทุกด้าน แน่นอนว่ามันไม่สามารถแข่งขันได้ในความนิยมในขณะนี้และการขาดการสนับสนุนที่แข็งแกร่งของ บริษัท อาจขัดขวางการยอมรับในสภาพแวดล้อมขององค์กร นอกจากนี้ยังเป็นภาษาไดนามิกมากกว่า Java ในแง่ของวิธีการที่ภาษาวิวัฒนาการ จากมุมมองของภาษานั่นเป็นสิ่งที่ดี จากมุมมองของผู้ใช้ที่วางแผนว่าจะมีการเขียนโค้ดหลายพันบรรทัดไม่ใช่อย่างนั้น
เป็นการเปิดเผยขั้นสุดท้ายฉันคุ้นเคยกับ Scala และคุ้นเคยกับอีกสองคนเท่านั้น
Scala วิวัฒนาการมาจากภาษาที่ใช้งานได้จริงที่รู้จักกันในชื่อFunnelและแสดงให้เห็นถึงการใช้งานห้องสะอาดของไวยากรณ์เกือบทั้งหมดของ Java ซึ่งแตกต่างกันเฉพาะที่สามารถทำการปรับปรุงที่ชัดเจนได้ ความแตกต่างดังกล่าวรวมถึงวัตถุแบบซิงเกิลแทนที่จะเป็นวิธีการแบบคงที่และการอนุมานประเภท
สิ่งนี้มีพื้นฐานมาจากงานก่อนหน้าของมาร์ตินโอชสกี้กับภาษาพิซซ่า การรวมเข้าด้วยกันของ OO / FP เป็นมากกว่าแค่การปิดและนำไปสู่การใช้ภาษาที่ถูกอธิบายว่าเป็นการทำงานภายหลัง
อย่างไรก็ตามเรื่องนี้มันใกล้เคียงกับ Java ในหลาย ๆ สาเหตุหลักมาจากการรวมกันของการสนับสนุน OO และการพิมพ์แบบคงที่ แต่ยังเนื่องจากเป้าหมายที่ชัดเจนในการออกแบบภาษาที่ควรรวมเข้ากับ Java อย่างแน่นหนา
Groovy แสดงถึงการวิพากษ์วิจารณ์ที่ใหญ่ที่สุดของ Java อย่างชัดเจน
บางทีมันอาจจะใกล้เคียงกับsyntactically ของ Java มากกว่าการเสนอฟังก์ชั่นที่สมบูรณ์กว่าที่ Clojure และ Scala ให้ แต่ก็ยังมีการพัฒนาที่ชัดเจนโดยเฉพาะอย่างยิ่งสำหรับการเขียนโปรแกรมสคริปต์ -syle
Groovy มีการสนับสนุนเชิงพาณิชย์ที่แข็งแกร่งที่สุดในสามภาษาส่วนใหญ่ผ่านทางแหล่งสปริง
Clojure เป็นภาษาที่ใช้งานได้ในตระกูล LISP นอกจากนี้ยังพิมพ์ด้วยแบบไดนามิก
คุณลักษณะต่างๆเช่นการสนับสนุน STM ให้การสนับสนุนการทำงานพร้อมกันที่ดีที่สุดในขณะที่ Scala ต้องการห้องสมุดบุคคลที่สามเช่นAkkaเพื่อทำซ้ำสิ่งนี้
วากยสัมพันธ์มันเป็นที่สุดของสามภาษาจากรหัสจาวาทั่วไป
ฉันต้องเปิดเผยด้วยว่าฉันรู้จักสกาล่ามากที่สุด :)
ฉันไม่เคยมีเวลาเล่นกับ clojure แต่สำหรับ scala vs groovy คำนี้มาจาก James Strachan - ผู้สร้าง Groovy
"แม้ว่าเคล็ดลับของฉันสำหรับการทดแทนระยะยาวของ javac คือ Scala ฉันประทับใจมากกับเรื่องนี้ฉันพูดได้เลยว่าถ้ามีคนแสดงให้ฉันเห็นการเขียนโปรแกรมในหนังสือสกาล่าโดย Martin Odersky, Lex Spoon และ Bill Venners ย้อนกลับไปในปี 2003 ฉัน อาจไม่เคยสร้าง Groovy มาก่อน "
คุณสามารถอ่านเรื่องราวทั้งหมดได้ที่นี่
พวกเขาสามารถแยกความแตกต่างกับที่พวกเขามาจากหรือนักพัฒนาที่พวกเขากำลังกำหนดเป้าหมายหลัก
Groovyเป็นจาวาสคริปต์เวอร์ชั่นเล็กน้อย โปรแกรมเมอร์ Java เป็นเวลานานรู้สึกเหมือนอยู่บ้านเมื่อสร้างแอพพลิเคชั่นที่ได้รับการสนับสนุนจากสถาปัตยกรรมขนาดใหญ่ Groovy on Grails เป็นชื่อที่แนะนำคล้ายกับ Rails framework สำหรับผู้ที่ไม่ต้องการรบกวนการใช้คำฟุ่มเฟือยของ Java ตลอดเวลา
Scalaเป็นภาษาโปรแกรมเชิงวัตถุและฟังก์ชั่นการทำงานและโปรแกรมเมอร์ Ruby หรือ Python อาจรู้สึกใกล้ชิดกับโปรแกรมนี้มากขึ้น มันใช้ความคิดที่ดีทั่วไปจำนวนมากที่พบในภาษาการเขียนโปรแกรมเหล่านี้
Clojureเป็นภาษาของ Lisp ภาษาโปรแกรมดังนั้นนักพัฒนา Lisp, Scheme หรือ Haskell อาจรู้สึกเหมือนอยู่บ้านในขณะที่พัฒนาด้วยภาษานี้
ฉันกำลังอ่านหนังสือนักเขียนโปรแกรมอย่างจริงจัง "สูตร Groovy: จาระบีล้อของ Java" โดย Scott Davis, ลิขสิทธิ์ 2008 และพิมพ์ในเดือนเมษายนของปีเดียวกัน
มันค่อนข้างล้าสมัย แต่หนังสือทำให้ชัดเจนว่า Groovy เป็นส่วนเสริมของ Java อย่างแท้จริง ฉันสามารถเขียนโค้ด Java ที่ทำงานเหมือนกับ Java และเปลี่ยนชื่อไฟล์ * .groovy และใช้งานได้ดี อ้างอิงจากหนังสือการย้อนกลับเป็นจริงถ้าฉันรวมไลบรารีที่จำเป็น จนถึงขณะนี้การทดลองดูเหมือนจะทนได้
เห็นได้ชัดว่าไวยากรณ์นั้นแตกต่างอย่างสิ้นเชิง (Groovy ใกล้เคียงกับ Java มากที่สุด) แต่ฉันคิดว่านั่นไม่ใช่สิ่งที่คุณต้องการ
หากคุณสนใจที่จะใช้สคริปต์เหล่านี้กับแอ็พพลิเคชัน Java Scala อาจไม่ใช่ตัวเลือกที่ดีเนื่องจากไม่มีวิธีที่ง่ายในการประเมินจาก Java ในขณะที่ Groovy เหมาะอย่างยิ่งสำหรับวัตถุประสงค์นั้น
eval
จำเป็น