در تپش این هفته، ماجرای فریب و تعرض در پوشش عرفانهای دروغین و رمالی را بررسی کردیم
این زبان توسط والتر برایت، مولف کامپایلرهای++ 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 برویم که قطعا در تالارهای گفتگوی مجازی به بحثهای داغی مشغولند. برای اطلاعات بیشتر، به لینکهای زیر مراجعه کنید:
http://digitalmars.com/d
پینوشتها
Gnome C Compiler.1
Digital Mars.2
Template.3
In-line-assembly.4
امیربهاالدین سبطالشیخ
در تپش این هفته، ماجرای فریب و تعرض در پوشش عرفانهای دروغین و رمالی را بررسی کردیم
گزارش «جامجم» درباره دستاوردهای زبان فارسی در گفتوگو با برخی از چهرههای ادب معاصر
معاون وزیر بهداشت: