scala - سكالا ضد Groovy مقابل Clojure




language-comparisons (4)

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


سكالا

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

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

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

رائع

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

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

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

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

كلوجر

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

ميزات مثل دعم STM إعطائها بعض من أفضل دعم التزامن خارج منطقة الجزاء ، في حين يتطلب سكالا مكتبة طرف ثالث مثل عكا لتكرار هذا.

من الناحية النحوية ، إنها أيضاً أبعد من اللغات الثلاث من كود جافا التقليدي.

أنا أيضا يجب أن تكشف أنني أكثر دراية مع سكالا :)


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

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


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

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

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

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


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

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

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

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

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

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

كشعار نهائي ، أنا معتاد جدا على سكالا ، وفقط فقط على بين الاثنتين الأخريين.





language-comparisons