به طور خلاصه، ضميمه اي نسبتا جديد براي خانواده زبان برنامه نويسي c است که قرار است جايگزين مناسبي براي ++ c باشد. اين زبان برنامه نويسي، الگوهاي طراحي و فناوري هايي را از ديگر زبان هاي برنامه نويسي همچون جاوا و c# وام گرفته است.
از ويژگي هاي d مي توان به garbage collected (زباله هاي جمع شده) اشاره کرد که به همراه شيوه اجراي اين برنامه، آن را بسيار سريع تر از رقيبان خود در ماشين مقصد اجرا مي کند. توسعه دهندگان d ، تاکنون کامپايلري براي کامپيوتر 86x ايجاد کرده اند که در محيطهاي ويندوز و لينوکس قابل اجرا است. همچنين، تلاش هايي براي يک پارچه کردن d با gcc 1 در حال انجام است.
اين زبان توسط والتر برايت، مولف کامپايلرهاي++ c/c شرکت ديجيتال مارس2 و برنامه نويس اسبق کامپايلر براي zorland و symantec ، مولف اوليه اين زبان بوده است و از پروژه پياده سازي آن حمايت مي کند. اگرچه بسياري از تصميمات، درمورد پيشبرد اين زبان برنامه نويسي، در گروه هاي خبري و گفتگو اتخاذ مي شود.
تفاوت d با ديگر زبان ها ++ c d به منظور پوشش ضعف ها و کمبودهاي c++ طراحي شده است، اما با وجود قدرتمند بودن آن، پيچيدگي هاي ناخواسته باعث زمين گير شدن آن شده است. شايد بزرگترين تغيير d نسبت به c++ ، خودکار کردن garbage collection باشد، هرچند که دستورات مستقيم همانند سابق براي خالي کردن زباله کار مي کنند.
java اگر چه جاوا پدر اصلي d نيست، اما بسياري از تکنيک هاي جاوا در آن جاي داده شده است. تاجايي که برخي ادعا مي کنند، syntax هاي از پيش تعيين شده در d از بسياري جهات، به جاوا شبيه است. در صورتي که در حقيقت بايد شبيه به يکي از زبان هاي شي گراي مدرن باشد. شباهت هاي ميان اين دو بسيار است.
هر دو بين عملوندهاي (.)، ->) و (::) تفاوتي قائل نمي شوند. هر دو null را به عنوان کلمه کليدي مي شناسند و از ويژگي try-catch-finally پشتيباني مي کنند. اما، تفاوت اساسي ميان d و جاوا، اين است که کدهاي دستور زبان d به زبان ماشين ترجمه مي شود و مستقيما در ماشين مقصد اجرا مي شود.
# c اين دو، يعني# c و d در حقيقت دو پاسخ به يک سوال اساسي هستند: چگونه مي توانيم++ c را بهتر کنيم؟ هر دو از++ c مشتق شده اند و عناصري از جاوا را در خود دارند. مهم ترين تفاوت ميان d و# c ، اين است که d بر خلاف # c داخل ماشين مجازي اجرا نمي شود. بنابراين مي تواند در به کارگيري کدهاي سيستمي (سطح پايين) مورد استفاده قرار گيرد. اين امر باعث مي شود d قابليت مديريت دستي و ريز به ريز حافظه را در اختيار برنامه نويس قرار دهد، هرچند که# c به گونه اي کاملا متفاوت اين کار را انجام مي دهد. هنوز# c نتوانسته است، توانايي قالبي3 را همچون c++ پياده کند و اين موضوع، از برتري هاي d محسوب مي شود.
بار دوم، d چيست؟ تا به حال دريافتيم که d چه چيزهايي نيست. اما بهتر است نقاط قوت و رقابتي اين سيستم عامل را بررسي کنيم. اين زبان مي تواند کتاب خانه ها و کدهايي که با زبان c نوشته شده اند را استفاده کند و به آن ها متصل شود. بدين ترتيب، ديگر نيازي نيست نگران پشتيباني از کدهاي قديمي خود باشيد. اما، d هنوز به طور کامل با c++ همخواني ندارد. اما نگران نباشيد، به زودي بسته اي براي پشتيباني از c++ در راه است. برنامه نويسي سيستمي گفتيم که شيوه اجراي d به چه صورت است، بدين ترتيب d مي تواند از اسمبلي داخل متن4 براي کدنويسي استفاده کند.
سرعت سيستمي را تصور کنيد که با کدهاي ماشين داخل کدهاي شيء گرا نوشته باشيد. وضوح واژه اي و گرامري يکي از اهداف d رفع بسياري از پيچيدگي هاي ناکارآمد c++ است که در بحث استانداردسازي کدها، باعث بروز مشکل براي کامپايلر شده است. گرامر ساده، کار را هم براي کامپايلر و هم براي برنامه نويس آسان مي کند و باگ هاي رايج را کاهش مي دهد. به عنوان مثال، d گرامر پرانتزي ضمخت تعريف قالب ها را کنار مي گذارد و تحليل و خواندن را آسان تر مي کند. حذف ويژگي هاي کهنه شايد بزرگترين هدف زبان d ، حذف ويژگي هاي منسوخ شده و يا ويژگي هاي پيچيده بي مصرف باشد. براي مثال، d کاملا به دور از پيش پردازنده c عمل مي کند، در عوض به توانايي هاي روش درون ساخته تکيه مي کند.
همچنين، d ارث بري چندگانه و اغلب پيچيده c++ را، با ارث بري ساده و يگانه جاوا و واسطه هاي آن جايگزين مي کند. قابل ذکر است که اين ها، تمام ويژگي ها يا نقاط ضعف اين زبان برنامه نويسي نبود و سعي شد نگاهي اجمالي به اين زبان برنامه نويسي انداخته شود. براي کشف بقيه ويژگي هاي اين زبان بهتر است، در وهله اول وب سايت اين زبان را جستجو کنيم و بعد به سراغ گروه هاي برنامه نويس d برويم که قطعا در تالارهاي گفتگوي مجازي به بحث هاي داغي مشغولند.