سؤال

هل من الممكن تجميع لغات متعددة معا من أجل الحصول على أفضل لغات مختلفة.

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

المحلول

من الممكن بالتأكيد حلقة الوصل لهم معا (إذا مبرمجة بشكل مناسب) بعد تجميعها بشكل منفصل، إذا كانت المحامرة والربدون متوافقين جميعا. علي سبيل المثال:

g77 -c one.f
gcc -c two.c
gcc -o together one.o two.o

هذا يجمع ملف Fortran، ثم ملف ج، ثم يربطهما معا في ملف قابل للتنفيذ واحد together (على افتراض أنهم يسمون بعضهم البعض بشكل صحيح ؛-) باستخدام مجموعة أدوات دول مجلس التعاون الخليجي.

Microsoft's .NET هي وسيلة شعبية لاستخدام لغات متعددة معا - C #، F #، Ironpython، IronRuby، وهلم جرا. سيقوم Visual Studio بالتعامل مع التجميعات في رموز متوافقة والانضمام معا في التجميعات، ولكن يمكنك أيضا القيام بذلك "باليد" إذا كنت ترغب في ذلك.

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

نصائح أخرى

نعم، من الممكن، ولكن الكثير يعتمد على اللغات المحددة. على سبيل المثال، يتم استدعاء وظائف C أو C ++ فئات من Python بشكل روتيني.

من الصعب حقا التعامل نظف التعامل مع algol-68 thunks في C. القيام به قادرة، لكنني لا أعتقد أنني أريد أن أفعل ذلك كل يوم،

منصة .NET هي متعدد اللغات. الببغاء رائع لخلط بيرل، بيثون، روبي. ماذا تحاول أن تفعل؟

مثال جيد آخر على الجمع بين اللغة هي منصة Java. يمكنك التجزع Groovy، Jython، Jruby، Scala، Clojure، ولغات أخرى مع Java. تتطلب اللغات المختلفة محطات مترجم مختلفة، ولكن يمكنك الاتصال عموما من لغة إلى أخرى. Groovy و Scala مناسب بشكل خاص للتشغيل.

OH، واجهة Java الأصلية (JNI) تتيح لك الاتصال ج، C ++، التجمع ولغات أخرى من Java.

(الأسمال .NET تشارك هذه السمات نفسها، كما لاحظت الملصقات الأخرى.)

إذا كنت تستخدم .NET، فيمكنك ترجمة مشاريعك بلغات مختلفة إلى NetModules ثم ربطها في DLL / EXE واحد. لا يدعم Visual Studio هذا ولكن Msbuild يفعل. أسهل طريقة للحصول على ترجمة هي تحرير نسخة من ملف .csproj الخاص بك وتغيير نوع الإخراج إلى "الوحدة النمطية" وتوزز msbuild ضدها. ثم استخدم الأمر "Link" لربط وحداتك في EXE / DLL النهائي.

إلقاء نظرة على جرعة كبيرة. وبعد يختتم الخاص بك C/C++ رمز بحيث يمكنك الاتصال به من أي لغة أخرى تقريبا.

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