لغة البرمجة D هي لغة متعددة الاغراض وحديثة المزايا بإمكانات متقدمة. تستند نحوياً على لغة ++C/C مع اختلافات عديدة بطبيعة الحال، يتم ترجمة برامجها للغة الآلة بشكل مشابه لما يحصل في ++C/C من ما يجعلها لغة مناسبة لتطوير البرمجيات منخفضة المستوى كسواقات العتاد وأنظمة التشغيل.
تتيح D ايضاً الدخول المباشر لأي مكتبة تم تطويرها بلغة C ودخول جزئي لمكتبات ++C، تمتلك حالياً مترجمات على نظم التشغيل الثلاث: وندوز، لينوكس، وماك.
روابط لغة D:
المزايا
تحاول D ان تحل معظم مشاكل البرمجة الموجودة في لغات البرمجة الاخرى، على سبيل المثال، ادارة الذاكرة تستند على مجمع نفايات كالموجود في #C ولكن في نفس الوقت تتيح D نظام ادارة ذاكرة يدوي لمن يرغب في استخدامه عن طريق تجاوز (override) وظائف new و delete.
تقدم كذلك دعم لميزة RAII التي تتمتع بها لغة ++C (تعني Resource Acquisition Is Initialization) رغم ان اللغات التي تستخدم مجمع نفايات تواجه مشكلة مع هذه الميزة.
تقدم D ايضاً مزايا اساسية مبنية كجزء من اللغة لدعم البرمجة المتوازية (Parallel Programming).
وتمتلك نظاماً لبرمجة القوالب (Generic Programming/Templates) من الصعب ان تجد له مثيل!
تجمع D ما بين امكانات الحلول البرمجية منخفضة المستوى (يمكن حتى كتابة اكواد Assembly بشكل مباشر كما في ++C/C) والحلول مرتفعة المستوى (سرعة ترجمة موازية لـ #C، ادارة ذاكرة ذاتية، مصفوفات عملية... الخ).
العيوب
جميع عيوبها كتقنية مرتبطة مباشرة بعمرها القصير وعدم الاهتمام والمشاركة في تطويرها من قبل عدد كافي من المطوّرين:
- ادواتها الاساسية غير متكاملة ولا مستقرة (المترجمات، متتبع الأخطاء، المحررات،.. الخ)
- هنالك انقسام في مجتمع المطوّرين أثر على اللغة برمتها بشكل سلبي، حيث ستجد مكتبتان قياسيتان مختلفتان تماماً (Phobos و Tango) ورغم أن المكتبة الرسمية اصبحت Phobos مع الاصدارة الثانية من لغة D لكن ستجد العديد من المكتبات والبرامج لا زالت تحتاج Tango!
- موقع اللغة غير جذاب على الاطلاق وطريقة تصفح وثائق اللغة أقل ما يقال عنها انها غبية (ليس هنالك بحث ولا فهرس حتى!)
- لا تملك مكتبة حقيقية لانشاء البرامج ذات واجهة الاستخدام الرسومية حتى الآن. المكتبات الموجودة إما تكون port لمكتبة معروفة (مثل Gtk و SWT) او تكون لا زالت في المرحلة التجريبية والتطوير بطيء (إن لم يكن قد توقف تماماً)
SALCHIPD
رأيت لغة D قبل فترة ولكن لم احاول تجربتها، قبل عدة ايام كنت في حالة انقطاع انترنت-ية فقررت ان اتسلى قليلاً مع D
كتجربة، وجدت نفسي اطوّر محاكي لجهاز العاب قديم جداً يحمل اسم CHIP8 (من السبعينات!) يستند على لغة مشابهه لـ Assembly يتم تنفيذها عن طريق Virtual Machine، ولم اكن املك اكثر من يوم واحد من الوقت لتطوير المحاكي، من ما يعني اني سأحاول الاستفادة من لغة D كلغة تطوير سريعة...
نتيجة الاختبار؟
D مناسبة جداً كلغة تطوير سريعة! في نهاية اليوم كان لدي محاكي لجهازين بدل واحد! CHIP8 والنسخة المطوّرة منه SUPERCHIP.
استخدمت مكتبة SDL عن طريق مكتبة خاصة بلغة D تقدم الدخول لمكتبات عديدة معروفة مرتبطة بالالعاب تحمل اسم Derelict، تستفيد من امكانية D التعامل مباشرة مع مكتبات ++C/C بحيث يمكن استخدام LIB/DLL بشكل مباشر مع D، ستجد ملفي SDL.dll و SDL_Mixer.dll مع المحاكي على سبيل المثال.
وهذا هو المحاكي مع الكود الكامل ووثائق الجهاز وعدد كبير من الالعاب للتجربة:
SALCHIPD.zip (890.16 kb)
تأكد من قراءة ملف readme.txt خاصة جزء مفاتيح التحكم لأن جهاز CHIP8 يستخدم لوحة مفاتيح ستعشرية! (نعم قديم لهذه الدرجة )