سؤال

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

شكرا مقدما.

تعديل: أفهم إمكانية النظرية لترجمة لغة واحدة إلى أخرى. سؤالي هو أكثر قليلا التقنية: هل ينفذون وقت تشغيل كامل في OBJC وحزم ذلك؟ (أشك في ذلك ...) أو أنهم فقط يترجمون رمز C # في OBJC / ثنائي / إلخ؟

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

المحلول

يستخدم Monotouch الترجمة المدة في الوقت المناسب لإنتاج ملف واحد مترجم ثابت - لذلك لا يقوم بتطبيق وقت التشغيل .NET على iPhone. يستخدم Monotouch ملزما لمكتبات iPhone المعرضة ل C #. لا يوجد ترجمة لتحقيق الهدف-ج.

في الأساس، يمنحك معرفة العمل في C # ومجموعة الأدوات المرتبطة بها مع تعريض مكاتب مكتبة OS OS الأساسية.

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

نصائح أخرى

monotouch ليس مترجم. إنه ببساطة وقت تشغيل أحادي التشغيل على iPhone، مع بعض الخداع الهوى لجعله متوافقا مع قيود iPhone.

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

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

Monotouch يفترض أن ميناء أحادي إلى iPod.

Mono نفسه هو تطبيق مفتوح المصدر لوقت التشغيل .NET (وبعض أدوات DEV) في بيئات NIX المختلفة.

كان هذا عمالة ضخمة بقيادة ميغيل دي إيكاجا التي أدركت في وقت مبكر أهمية .NET وقم بتنفيذها على فتح منصات. من الظفر أنه حصل على قدر كبير من الدعم من Microsoft نفسه حيث أعطى مونو القدرة على الانتعاش بين NativeNet و Mono.

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

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

النظرية هي أن أي نظام "Turing Complete" يمكنه القيام بأي شيء يمكن لأي نظام آخر "Turing Complete" القيام به. لذا بالنظر إلى أي بيئة لغة برمجة كاملة بشكل معقول، يجب أن تكون قادرا على محاكاة تكنولوجيا المعلومات باستخدام بيئة برنامج أخرى.

هناك العديد من الأمثلة على هذا حولها. Jpython يدير المحاكاة C بيثون في جافا JVM. بلدي اثنين من المفضلة الشخصية هي الذي يدير ألعاب الطيف ZX الأصلية في متصفحك و نوث خلط آلة تجميع كلاهما جافا سكريبت نقي.

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