سؤال

يمكن لشخص ما يرجى توضيح الاختلافات الرئيسية بين scala، groovy و clojure. أعلم أن كل من هذه النصجات لتشغيل jvm ولكني أحب مقارنة بسيطة بينهما.

هل كانت مفيدة؟

المحلول

groovy هي لغة مكتوبة ديناميكيا، وضع بناء جملاصها قريبا جدا من Java، مع عدد من تحسينات بناء الجملة التي تسمح برمز أخف وأقل مرجما. يمكن تشغيله من خلال مترجم فوري وكذلك تجميعه، مما يجعل من الجيد بالنسبة للنباتات البرمجية السريعة والبرامج النصية والتعلم لغات ديناميكية دون الحاجة إلى تعلم بناء جملة جديد (على افتراض أنك تعرف Java). اعتبارا من Groovy 2.0، فإنه أيضا لديه دعم متزايد تجميع ثابت. وبعد يدعم Groovy الإغلاق ولديه دعم للبرمجة بأسلوب وظيفي إلى حد ما، على الرغم من أنه لا يزال بعيدا إلى حد ما عن التعريف التقليدي للبرمجة الوظيفية.

جلب هي لهجة LISP مع عدد قليل من الميزات المتقدمة مثل الذاكرة المعاملات البرمجيات. وبعد إذا كنت تحب LISP وترغب في استخدام شيء من هذا القبيل تحت JVM، فمن أجلك. ربما أكثر من غيرها لغة وظيفية يعمل على JVM، وبالتأكيد الأكثر شهرة. أيضا، لديها تركيز أقوى على ثبات من لهجات LISP الأخرى، والتي تأخذها أقرب إلى قلب عشاق اللغة الوظيفية.

سكالا هي لغة ذات توجه كائن كامل، أكثر من جافا، مع واحدة من الأكثر تقدما اكتب أنظمة متاح على اللغات غير البحثية، وبالتأكيد نظام النوع الأكثر تقدما على JVM. كما يجمع بين العديد من المفاهيم وميزات اللغات الوظيفية، دون المساس بتوجيه الكائنات، لكن الحل الوسط الخاص به على خصائص اللغة الوظيفية تأطئ بعض عشاق الأخير.

Groovy لديه قبول جيد وإطار ويب شهير في الشجر. كما أن نظام بناء الخرج، الذي أصبح بديلا شائعا في مافن. أنا شخصيا أعتقد أن هذه لغة ذات فائدة محدودة، خاصة مثل Jython و Jruby تبدأ في تحقيق غزوات على أرض JVM، مقارنة بالآخرين.

لدى Clojure، حتى خصم بعض الميزات المثيرة للاهتمام للغاية، وجاذب قوي من خلال كونه لهجة LISP على JVM. قد يحد من شعبيتها، منحت، لكنني أتوقع أن يكون لها مجتمع مخلص من حولها لفترة طويلة.

يمكن أن يتنافس Scala مباشرة مع جافا، واعطيه تشغيل مقابل أموالها على جميع الجوانب تقريبا. لا يمكن أن يتنافس بشعبية في الوقت الحالي، بالطبع، وعدم وجود دعم قوي للشركات قد يعيق قبوله في بيئات الشركات. إنها أيضا لغة ديناميكية أكثر بكثير من جافا، بمعنى كيف تتطور اللغة. من وجهة نظر اللغة، هذا شيء جيد. من منظور المستخدمين الذين يخططون لوجود الآلاف من خطوط التعليمات البرمجية المكتوبة فيها، وليس كذلك.

كإفصاح نهائي، أنا معتاد جدا على Scala، وعلى دراية بالآخرين.

نصائح أخرى

سكالا

تطورت سكالا من لغة وظيفية خالصة تعرف باسم قمع ويمثل التنفيذ للغرف النظيف لجميع بناء جملة جافا تقريبا، يختلف فقط عند إجراء تحسن واضح أو حيث سينمنح الطبيعة الوظيفية للغة. تشمل هذه الاختلافات كائنات Singleton بدلا من الأساليب الثابتة، واكتب الاستدلال.

كان الكثير من هذا يعتمد على العمل السابق مارتن أوديسكي مع بيتزا لغة. يذهب تكامل OO / FP إلى أبعد من مجرد إغلاق، وقد أدى إلى وصف اللغة بأنها ما بعد وظيفية.

على الرغم من هذا، فهذا هو الأقرب إلى Java بعدة طرق. يرجع ذلك أساسا إلى مزيج من دعم OO والطباعة الثابتة، ولكن أيضا بسبب هدف صريح في تصميم اللغة يجب أن يدمج بإحكام للغاية مع Java.

groovy

الأخدود يعالج صراحة اثنين من أكبر انتقادات جافا من قبل

  • يجري مكتوب ديناميكيا، مما يزيل الكثير من الثنائيات و
  • إضافة إغلاق إلى اللغة.

ربما صيغة الأقرب إلى Java، لا يوفر بعض البنيات الوظيفية الأكثر ثراء توفر عباءة و SCALA، ولكن لا تزال تقدم تحسنا تطوريا واضحا - وخاصة لكتابة برامج Script-Syle.

Groovy لديه أقوى دعم تجاري للغات الثلاث، معظمها عبر Springsource.

جلب

Clojure هي لغة وظيفية في عائلة Lisp، وهي أيضا مكتوبة ديناميكيا.

ميزات مثل دعم STM تعطيه بعضا من أفضل دعم التزامن خارج الصندوق، في حين يتطلب Scala مكتبة ذات طرف ثالث مثل عكا لتكرار هذا.

بناء على النحوي، هو أيضا الأبعد من اللغات الثلاث من رمز Java النموذجي.

يجب علي أيضا الكشف عن أنني أعرف أكثر من Scala :)

لم يكن لدي وقت للعب مع كلوي. ولكن بالنسبة إلى Scala vs Groovy، فهذه هي الكلمات من جيمس ستراشان - خالق رائع

"على الرغم من أن نصيحي على الرغم من الاستبدال طويل الأجل ل Javac هو Scala. أنا معجب جدا به للغاية! أستطيع أن أقول بصراحة ما إذا كان شخص ما قد أظن لي البرمجة في كتاب سكالا من قبل مارتن أوديسكي، ليكس ملعقة وبيل فينتر مرة أخرى في عام 2003 ربما لم يخلق أبدا رائعا ".

يمكنك قراءة القصة بأكملها هنا

يمكن تمييزها مع المكان الذي سيصلون إليه أو المطورين الذين يستهدفونه بشكل أساسي.

groovy هو قليلا مثل نسخة البرمجة النصية من جافا. وقت طويل للمبرمجين Java يشعرون في المنزل عند بناء تطبيقات رشيق يدعمها الهندسة الكبيرة. Groovy على الشجر، كما يوحي الاسم مشابها لإطار القضبان. بالنسبة للأشخاص الذين لا يريدون أن يكلفوا عناء جافا في كل وقت.

سكالا هل قد يشعر لغة البرمجة الموجهة والوظيفية أو برامج الروبي أو Python أكثر فأكثر أقرب إلى هذا. يستخدم الكثير من الأفكار الجيدة المشتركة الموجودة في لغات البرمجة هذه.

جلب هي لهجة لغة برمجة LISP حتى قد يشعر LISP أو مخطط أو مطوري Haskell في المنزل أثناء التطوير بهذه اللغة.

أنا أقرأ كتاب المبرمجين البراغماتي "وصفات رائعة: تشحيم عجلات جافا" من سكوت ديفيس، حقوق الطبع والنشر 2008 وطباعتها في أبريل من نفس العام.

إنه أمر قدما قليلا ولكن الكتاب يجعل من الواضح أن Groovy هو حرفيا تمديد Java. يمكنني كتابة رمز Java يعمل تماما مثل Java وإعادة تسمية الملف * .groovy ويعمل بشكل جيد. وفقا للكتاب، يكون العكس صحيحا إذا قمت بتضمين المكتبات المطلوبة. حتى الآن، يبدو أن التجربة تحمل هذا.

من الواضح أن بناء الجملة مختلف تماما (Groovy هو الأقرب إلى Java)، لكنني أفترض أن هذا ليس ما تطلبه.

إذا كنت مهتما باستخدامها لإجراء تطبيق Java، فمن المحتمل أن Scala ليس اختيارا جيدا، حيث يوجد لا طريقة سهلة لتقييم من جافا، في حين أن Groovy مناسب بشكل خاص لهذا الغرض.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top