سؤال

أريد أن أجعل لغة مترجمة. أنا حاليا تقييم الرسل. حتى الآن أنا أبحث في ج نظرا لسرعتها من التنفيذ، وتجميع مترجم صغير وسهل الاستخدام يسمى TCC.

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

فيما يلي بعض أفكاري على الآخر المحتمل:

  1. الجمعية: غير قابلة للتنفيذ وألم إجمالي للبرنامج.
  2. .NET: شعور ببطء حقا. 5 ثوان للبدء و 5 ثوان لتقييم 1 + 2 على Ironpython و boo. غير قادر على تشغيل دون مكتبة كبيرة.
  3. JVM: يشعر بطيئا بعض الشيء. لا يمكن الوصول إلى المكتبات الثنائية. غير قادر على تشغيل دون مكتبة كبيرة.
  4. LLVM: لا دعم Windows. أسمع أن الحجم القابل للتنفيذ المترجم هو 16 ميغابايت +
  5. ج: تبدو متخلفة.
  6. C ++: ربما. لا يمكن العثور على واحد صغير مجاني لطيف يمكنني الحزمة.

هل يمكن لأي منكم تغيير رأيي أو لديك المزيد لإضافته إلى هذه القائمة؟

يحرر

لقد كنت تجريب مع LLVM مؤخرا. اكتشفت أن لديهم ثنائيات مسبقة وذلك من الممكن تجميعها إلى الجمعية الأصلية.

http://www.antlr.org/wiki/display/cs652/generating+machine+Executable+binaries+with+lvm.

فيما يلي الخطوات:

  1. قم بتشغيل LLVM-AS في التجميع LLVM، الذي يتجاوز ملف Bytecode LLVM.
  2. تشغيل LLC على ملف Bytecode LLVM لإعطاء ملف التجميع.
  3. قم بتشغيل مجمع في ملف التجميع لإحداث ملف كائن. (أو تشغيل LLVM-LD الذي يبدو أنه يعتمد على مترجم C مثبتا خارجيا)
  4. ترجمة إلى الملف القابل للتنفيذ مع دول مجلس التعاون الخليجي وما إلى ذلك
هل كانت مفيدة؟

المحلول

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

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

شخصيا، أفضل أنني أفضل LLVM (بنية مثيرة) أو .NET's IL: سهل الاستخدام للغاية، لديه دعم أداة رائعة (العاكس, سيسيل, ريفلكسيل وأخيرا وليس آخرا، API .NET انعكاس) واثنين من التطبيقات الفعالة للغاية (أي تطبيق Microsoft Canonical و Mono).

لكنني لا أستطيع المطالبة بالخبرة في أي من المهندسين، لذا اتخاذ هذه الإجابة مع حبة من الملح.

نصائح أخرى

في هذه الحالة LLVM ربما خيار أفضل.

LLVM لديه دعم Windows، فإنه يستغرق الأمر بعض الوقت لتجميع

لن يمنحك C ++ الكثير، استخدم C بدلا من ذلك. ولكن إذا كنت ترغب في استخدام اللغة في الويب، فاستخدم .NET أو Java، تأكد من أنها بطيئة في التحميل ولكن عندما تكون كذلك، فإنها سريعة مثل C.

بالنسبة Smarteiffel. نحن نستخدم ج ك نهاية خلفية.

TCC هو خيار جيد جدا للتنمية - على الرغم من عدم الإصدار النهائي (الكائن المنتج يعادل دول مجلس التعاون الخليجي -O0)

آخر لإضافة إلى القائمة: Slava تم تنفيذه مؤخرا SmallTalk على عامل الخلفية. وبعد لم أحاول هذا نفسي، لكن لدي شعور بأنه سيقدم المزيد من الميزات التي تريدها من المستوى الأعلى مع أكثر مثل الحجم / الأداء من تلك ذات المستوى الأدنى.

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

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