أفضل الممارسات للمشاريع متعددة اللغات البرمجة

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

  •  10-07-2019
  •  | 
  •  

سؤال

هل لدى أي شخص أي خبرة في القيام بذلك؟أنا أعمل الآن على برنامج فك تشفير Java بلغة C++، ولكني أرغب في الحصول على لغة ذات مستوى أعلى لإجراء التحويلات الفعلية للأشجار الداخلية.أشعر بالفضول إذا كان الحمل الزائد لتنظيم البيانات بين اللغات يستحق الاستفادة من لغة أكثر تعبيراً ولغة لتوضيح ما أحاول تحقيقه بشكل أفضل (مثل هاسكل).هل يتم ذلك بالفعل في "العالم الحقيقي"، أم أنه عادةً ما يتم اختيار لغة في بداية المشروع والالتزام بها؟هل من نصائح لمن جربها؟

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

المحلول

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

هل يحدث في العالم الحقيقي؟ نعم. أنا أعمل حاليا على مشروع والتي تتكون من كل من PHP والهدف-ج التعليمات البرمجية.

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

نصائح أخرى

تعتمد

وتكاليف التنظيم على اللغات والهندسة المعمارية كنت تعمل مع. على سبيل المثال، إذا كنت على CLR أو JVM، هناك حلول إمكانية التشغيل المتداخل منخفضة التكلفة المتاحة - على الرغم من أنني أعلم أنك تعمل مع ربما غير المدارة C ++

.

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

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

  • SWIG (غلاف مبسط و مولد واجهة يمكن أن تأخذ ج أو C ++ (أو عدة لغات أخرى) رأس الملف وإنشاء ملف واجهة للغة عالية المستوى مثل بيرل أو بايثون التي تسمح للوصول إلى واجهة برمجة التطبيقات.هناك الأنظمة الأخرى التي تستخدم هذا أقبل.

  • يدعم جافا JNI, ، ومختلف أنظمة أخرى مثل بايثون com.ctypes, ، فيجوال وركس دي إل إل/سي عشق هي آليات أصلية التي تسمح لك صراحة إنشاء المكالمة إلى أسفل مستوى النظام الفرعي.

  • تم تصميم Tcl / Tk بشكل صريح ليكون مضمن ، وله ملف واجهة برمجة التطبيقات الأصلية لمكتبة C لإضافة خطافات إليها اللغة.التركيبات ل هذا يشبه هياكل argv[] في C ، وتم تصميمها لجعلها من السهل نسبيا واجهة أ برنامج C القائم على سطر الأوامر في تي سي إل.هذا مشابه لما سبق مثال ، ولكن قادمة من العكس اتجاه.العديد من لغات البرمجة النصية مثل دعم بايثون ولوا وتي سي إل هذا النوع من الآليات.

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

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