في هذه الحالات من الأفضل استخدام Clojure?[مغلقة]

StackOverflow https://stackoverflow.com/questions/1800896

  •  05-07-2019
  •  | 
  •  

سؤال

لقد وضع في اللثغة في المخطط ، ولكن كنت أقرأ عن Clojure ثم أريد أن أعرف في أي الحالات هو الأفضل لاستخدامها من استخدام اللثغة أو المخطط ؟ شكرا

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

المحلول

و"كلوجر يعمل على JVM" يعني أنك تحصل على الوفرة كاملة من مكتبات جافا المتاحة. يمكنك جعل اجهات جميلة في أرجوحة، واستخدام عميل ويب أو رمز الخادم اباتشي، توصيل سودوكو حلالا جاهزة الصنع ... ما تريد.

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

تحديث: حجة أخرى. كلوجر هي جميلة وظيفية بقوة، لذلك فمن زائد إذا كنت تريد أن تجبر نفسك على التفكير والكتابة وظيفيا.

نصائح أخرى

وهذا السؤال هو المستحيل الإجابة. يجب عليك استخدام كلوجر ما يقرب من 100٪ من الوقت على CL ومخطط، هو ما أود أن أقول. ولكن هذا لا يعني أن عليك أن يستمع لي. يمكن للآخرين أن يجعل حجة جيدة أن العكس هو الصحيح.

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

وهناك مكتبات لCL وخطة التي لم تكن موجودة في كلوجر أو جافا. هناك أناس يكرهون كيفية استخدام كلوجر الكثير من تركيب مثل [] و{} وتريد استخدام أقواس في كل مكان. إذا كنت تريد OOP على غرار CLOS أو الكثير من هياكل البيانات قابلة للتغيير، اللثغة آخر هو أفضل القول. وJVM هو الوزن الثقيل والأمتعة ربما الوزن الثقيل جدا والكثير بالنسبة لبعض الناس. وهناك الكثير من جافا تسرب إلى كلوجر (حسب التصميم) وهذا يسيء الحساسيات بعض الناس. وSTM وهياكل البيانات الثابتة لديها النفقات العامة التي تجعل بعض الأمور (على سبيل المثال عدد الطحن) أبطأ أو أقل أناقة. كلوجر هو جديد وما زال الخام في بعض المناطق، لا يزال سريع التغير والتطور في مجالات أخرى. لديها كلوجر بعد اجتياز اختبار الزمن، في حين أن اللثغ أخرى لديها بالفعل. كلوجر ليست "المعيار" وبعض الناس يجدون لغة محددة قبل تنفيذ أن يكون غير جذاب. وهلم جرا. أيا من هذه الأمور يهم بالنسبة لي، لكنها قد لك.

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

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

ومتى؟ بقدر المستطاع. لماذا ا؟ هياكل البيانات الثابتة - أنها حقا أن جيدة. هناك الكثير من أسباب أخرى جدا.

Clojure ينبغي أن تستخدم عند

  • كنت بحاجة إلى العمل مع القائمة جافا البرمجية.
  • كنت تعمل مع الناس الذين لديهم حساسية من اللثغة ("أيها الرئيس ، أود أن استخدام جافا التزامن مكتبة يسمى clojue مقابلأود أن أعيد كتابة هذا في مخطط" [1]
  • سوف تكون البرمجة متعددة المعالج النظام.

المخطط سيكون أفضل عندما:

  • تحتاج إلى إثبات الكود الخاص بك هو الصحيح.Clojures (دعوة إلى جافا) يعيق ولكن لا يمنع هذا.
  • كنت تعمل مع الناس الذين لديهم حساسية من جافا.
  • أنت النامية على منصة مع أي (جديد بما فيه الكفاية) JVM

[1] نعم هذا هو سيئة سيئة سيئة السبب.هذا هو العالم الذي نعيش فيه...

ABCL (والمسلحة الدب اللثغة المشتركة) والعديد من تطبيقات نظام (KAWA، SISC ، ...) تشغل أيضا على JVM.

واللثغة المشتركة عموما غير متوفرة في "النكهات" مختلفة - ABCL هو واحد منهم. تجميع البعض لC، إلى التعليمات البرمجية الأصلية، لدينا بيئات تطوير واسعة أو ملحقات المتخصصة مثل اللغات منطق أو قواعد البيانات.

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

.

وهناك الكثير من الأسباب ، وبعض المذكورة أعلاه.بلدي يأخذ هو:

  1. قبل المكتبات الموجودة.هذا هو هذه فائدة.أنا فقط لا يمكن أن الثناء هذه الميزة بما فيه الكفاية.
  2. اللغة هي أكثر تكيفا الأجهزة المتوفرة حاليا (multi-core) و التنمية نماذج في استخدام اليوم.فمن أسهل بكثير أن سبب عن التزامن.الجوانب الوظيفية هي أجمل أيضا.يمكنك أن تفعل البرمجة الوظيفية في Lisp, من الواضح, ولكن من السهل جدا لكسر النموذج تدري ، عن غير قصد و عن غير قصد.
  3. عبر منصة.تشغيل متطابقة البرامج على لينكس, ويندوز ، ماك.هناك الكثير من مواليد اللثغ التي تعمل عبر منصات ، ولكن دعم جميع الميزات على جميع منصات قليلا متقطعا و باستمرار يجب أن تكون في حالة تأهب عن الأشياء التي هي في عداد المفقودين على واحدة منصة أو أخرى.وبالمثل ، المكتبات تحتاج دائما دعمت باستمرار عبر المنصات.ABCL بعض JVM مخطط تطبيقات هذا الدعم المتواصل فضلا, ولكن أنا لا تزال تفضل Clojure بسبب النقطة 2.
  4. طبيعة اللغة المجتمع.دعونا نواجه الأمر, الكثير من الوقت Common Lisp المجتمع هو مجرد سيئة للتعامل مع.هذا هو ليست القضية مع Clojure على الإطلاق.فإنه من السهل الحصول على مساعدة مفيدة دون التعالي و خسة هذا غالبا ما يأتي مع إجابة من Common Lisp المجتمع.كما يجب تعلمت بنفسي عدة مرات ، لا يوجد سؤال غبي بحيث أنك لن تحصل على مهذبا ومفيدة رد Clojure المجتمع.

إذا كان علي أن أجد شيئا واحدا يشكو سيكون IDE الدعم.ربما هو سؤال من تعلم عادات جديدة, ولكن لا يزال من السهل بالنسبة لي أن التعامل مع اليات تطوير جافا من Clojure.لقد حاولت استخدام Clojure مربع ، enclojure على NetBeas, La Clojure على Intellij IDEA, و عكس اتجاه عقارب الساعة على الكسوف.أنهم جميعا العمل على ما يرام إذا كنت تعمل في المقام الأول من REPL, ولكن من أجل تجميع وتنفيذ ملفات فئة, أنهم جميعا لا تزال تشعر قليلا الخرقاء.

ومجموعة فرعية من كلوجر يمكن أيضا تجميع إلى جافا سكريبت

وكلوجر يعمل على JVM (وعلى CLR)، حتى لا يكون هناك ذلك.

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

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

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

وكلوجر الصخور.

وأنا أحاول دائما لتعلم لغات جديدة، لذلك أنا مهتم بمعرفة كلوجر. ولكن، لا SBCL وبعض تطبيقات أخرى اللثغة المشتركة بكثير، أسرع بكثير من كلوجر؟ لن تحتاج إلى حد كبير أكثر من 4 معالجات (ومهمة موازاة معقول) لتعويض الفارق في الأداء بين التطبيق كلوجر وحتى إصدار SBCL ترابط واحد من نفس التطبيق؟

وكقاعدة عامة من الإبهام، وأنا أميل لصالح كلوجر على لغات أخرى في الحالات التي يكون فيها أي من هذه صالح مشروع القانون: (1). نموذج نطاق يميل للبحث العودية جدا و / أو الرسم البياني مثل. (2). هناك فرصة للاستفادة من بيئة JVM متعددة النواة (على سبيل المثال، مطاطا شجرة الفاصولياء) (3). هناك حاجز غامض بين البيانات ورمز (اعتقد RPN حاسبة حيث العقد يمكن أن يكون المشغلين أو أرقام)

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

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