سؤال

أعجبني كثيراً ما قرأته عن د.

  • وثائق موحدة (من شأنها أن تجعل وظيفتي أسهل كثيرًا.)
  • القدرة على الاختبار مدمجة في اللغة.
  • دعم رمز التصحيح في اللغة.
  • التصريحات إلى الأمام.(اعتقدت دائمًا أنه كان من الغباء إعلان نفس الوظيفة مرتين.)
  • بنيت في ميزات لاستبدال المعالج المسبق.
  • وحدات
  • typedef المستخدمة لفحص النوع المناسب بدلاً من التعرج.
  • وظائف متداخلة.(سعال باسكالسعال)
  • معلمات الدخول والخروج(كم هو واضح ذلك!)
  • يدعم البرمجة منخفضة المستوى - أنظمة مضمنة ، أوه نعم!

لكن:

  • هل يمكن لـ D دعم نظام مضمن لن يدير نظام التشغيل؟
  • هل الإعلان الصريح بأنه لا يدعم معالجات 16 بت PROPLUSE تمامًا من التطبيقات المدمجة التي تعمل على هذه الآلات؟في بعض الأحيان لا تحتاج إلى مطرقة لحل مشكلتك.
  • يعد تجميع البيانات المهملة أمرًا رائعًا على نظامي التشغيل Windows أو Linux، ولكن لسوء الحظ، يجب أن تقوم التطبيقات المضمنة في بعض الأحيان بإدارة واضحة للذاكرة.
  • التحقق من حدود المصفوفة، أنت تحبه، وتكرهه.رائعة لضمان التصميم، ولكنها غير مسموح بها دائمًا لمشاكل الأداء.
  • ما هي الآثار المترتبة على النظام المضمن، الذي لا يعمل بنظام التشغيل، لدعم مؤشرات الترابط المتعددة؟لدينا عميل لا يحب المقاطعات.أقل بكثير من نظام التشغيل/تعدد مؤشرات الترابط.
  • هل يوجد D-Lite للأنظمة المدمجة؟

لذا فإن D مناسب بشكل أساسي للأنظمة المدمجة التي تحتوي على بضعة ميغابايت فقط (أحيانًا أقل من ميغابايت)، ولا تعمل بنظام تشغيل، حيث يجب معرفة الحد الأقصى لاستخدام الذاكرة في وقت الترجمة (حسب المتطلبات.) وربما على شيء أصغر من 32 بت المعالج؟

أنا مهتم جدًا ببعض الميزات، ولكن لدي انطباع بأنها تستهدف مطوري تطبيقات سطح المكتب.

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

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

المحلول

يجب أن أقول إن الإجابة المختصرة على هذا السؤال هي "لا".

  • إذا كانت أجهزتك تعمل بنظام 16 بت، فستواجه مشكلات كبيرة في تركيب D فيه - فمن الواضح أنه غير مصمم له.
  • D ليست لغة خفيفة في حد ذاتها، فهي تولد الكثير من معلومات نوع وقت التشغيل التي يتم ربطها عادةً بتطبيقك، وهذا مطلوب أيضًا للمتغيرات الآمنة للكتابة (وبالتالي ميزات التنسيق القياسية سواء كانت Tango أو Phobos).وهذا يعني أنه حتى أصغر التطبيقات تكون كبيرة الحجم بشكل مدهش، وبالتالي قد تؤدي إلى استبعاد D من الأنظمة ذات ذاكرة الوصول العشوائي المنخفضة.كما أن D مع وقت التشغيل باعتباره lib مشترك (والذي يمكن أن يخفف من بعض هذه المشكلات)، لم يتم اختباره إلا قليلاً.
  • تتطلب جميع مكتبات D الحالية مكتبة C القياسية أسفلها، وبالتالي عادةً ما تتطلب نظام تشغيل أيضًا، لذا فحتى هذا يتعارض مع استخدام D.ومع ذلك، توجد حبات تجريبية في D، لذا فهي ليست مستحيلة في حد ذاتها.لن تكون هناك أي مكتبات لها، اعتبارًا من اليوم.

أنا شخصياً أود أن أراك ناجحاً، لكني أشك في أنه سيكون عملاً سهلاً.

نصائح أخرى

اقرأ أولاً وقبل كل شيء إجابة لارسيفي.لقد عمل في وقت التشغيل D ويعرف ما يتحدث عنه.

أردت فقط أن أضيف: بعض ما سألت عنه هو ممكن بالفعل.لن يوصلك إلى كل الطريق، والخطأ جيد مثل ميل هنا ولكن مع ذلك، لمعلوماتك:

يعد جمع البيانات المهملة أمرًا رائعًا على Windoze أو Linux، ولكن لسوء الحظ، يجب أن تقوم التطبيقات المضمنة في بعض الأحيان بإدارة الذاكرة بشكل صريح.

يمكنك إيقاف تشغيل جمع البيانات المهملة.أنظمة تشغيل D التجريبية المختلفة تقوم بذلك.انظر std.gc الوحدة النمطية، على وجه الخصوص std.gc.disable.لاحظ أيضًا أنك لا تحتاج إلى تخصيص الذاكرة new:يمكنك استخدام malloc و free.حتى المصفوفات يمكن تخصيصها باستخدامها، ما عليك سوى إرفاق مصفوفة D حول الذاكرة المخصصة باستخدام شريحة.

التحقق من حدود المصفوفة، أنت تحبه، وتكرهه.رائعة لضمان التصميم، ولكنها غير مسموح بها دائمًا لمشاكل الأداء.

ال مواصفات المصفوفات يتطلب على وجه التحديد أن يسمح المترجمون بالتحقق من الحدود أطفئ (انظر "ملاحظة التنفيذ"). gdc يوفر -fno-bounds-check, ، و في dmd استخدام -release يجب تعطيله.

ما هي الآثار المترتبة على النظام المضمن، الذي لا يعمل بنظام التشغيل، لدعم مؤشرات الترابط المتعددة؟لدينا عميل لا يحب المقاطعات.أقل بكثير من نظام التشغيل/تعدد مؤشرات الترابط.

أنا أقل وضوحًا بشأن هذا الأمر، ولكن نظرًا لأن معظم أوقات تشغيل لغة C تسمح بإيقاف تشغيل مؤشرات الترابط المتعددة، فيبدو أنه من المحتمل أن يحصل المرء على د وقت التشغيل لتعطيله أيضًا.سواء كان ذلك سهلاً أو ممكنًا الآن على الرغم من أنني لا أستطيع إخبارك.

الإجابات على هذا السؤال قديمة:

هل يمكن لـ D دعم نظام مضمن لن يعمل بنظام تشغيل؟

يمكن أن يكون د تم تجميعها بشكل متقاطع لـ ARM Linux ولل أرم كورتيكس-M.تهدف بعض المشاريع إلى إنشاء مكتبات لمعماريات Cortex-M مثل MiniLibD لـ STM32 أو هذا المشروع الذي يستخدم مكتبة عامة لـ STM32.(يمكنك تنفيذ نظام التشغيل البسيط الخاص بك في D على ARM Cortex-M.)

هل التصريح الصريح بأنه لا يدعم معالجات 16 بت يمنعه بالكامل من التطبيقات المضمنة التي تعمل على مثل هذه الأجهزة؟في بعض الأحيان لا تحتاج إلى مطرقة لحل مشكلتك.

لا، انظر الإجابة أعلاه...(لكنني لا أتوقع أن يتم دعم البنى "الأصغر" من Cortex-M في المستقبل القريب.)

يعد تجميع البيانات المهملة أمرًا رائعًا على نظامي التشغيل Windows أو Linux، ولكن لسوء الحظ، يجب أن تقوم التطبيقات المضمنة في بعض الأحيان بإدارة واضحة للذاكرة.

يمكنك كتابة كود جمع البيانات المهملة مجانا.(يبدو أن مؤسسة D تهدف إلى إنشاء مكتبة Phobos القياسية "المتوافقة مع GC مجانًا"، لكن هذا العمل قيد التقدم.)

التحقق من حدود المصفوفة، أنت تحبه، وتكرهه.رائعة لضمان التصميم، ولكنها غير مسموح بها دائمًا لمشاكل الأداء.

(كما قلت، هذا يعتمد على "ذوقك الشخصي" وقرارات التصميم.لكنني أفترض وجود حمل أداء مقبول للتحقق من الالتزام نظرًا لخلفية مطوري برنامج التحويل البرمجي D وأهداف تصميم D.)

ما هي الآثار المترتبة على النظام المضمن، الذي لا يعمل بنظام التشغيل، لدعم مؤشرات الترابط المتعددة؟لدينا عميل لا يحب المقاطعات.أقل بكثير من نظام التشغيل/تعدد مؤشرات الترابط.

(ما هو السؤال؟يمكن للمرء تنفيذ تقنية multithreading باستخدام إمكانيات اللغة D على سبيل المثال. كما هو موضح في هذا السؤال.بالمناسبة:إذا كنت تريد استخدام المقاطعات فكر في هذا مشروع "hello World" لـ Cortex-M3.)

هل يوجد D-Lite للأنظمة المدمجة؟

ال مجموعة SafeD الفرعية من D الأهداف في المجال المضمن.

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