دی (زبان برنامه‌نویسی)

زبان برنامه‌نویسی D، یک زبان شی گرا، امری و چندالگویی سیستمی است که توسط Walter Bright از Digital Mars طراحی و در سال ۲۰۰۱ منتشر شد. Bright توسط Andrei Alexandrescu در سال ۲۰۰۶ به تلاش توسعه و طراحی پیوست. با اینکه D مهندسی دوباره‌ای از سی پلاس پلاس است، کاملاً یک زبان جدا محسوب می‌شود؛ زیرا بسیاری از ویژگی‌های هسته سی پلاس پلاس را نگه داشته و بسیاری را دور ریخته‌است. در طراحی زبان دی همچنین از زبان‌هایی مانند پایتون، روبی، سی شارپ، ایفل و جاوا نیز الهام گرفته شده‌است. هدف طراحی زبان D ترکیب کارایی و امنیت زبان‌های کامپایلری، با قدرت زبان‌های پویای مدرن است. کد یک برنامه در زبان D شبیه به زبان سی پلاس پلاس است، اما کوتاه‌تر می‌باشد.

دی (زبان برنامه‌نویسی)
الگو برنامه‌نویسیزبان ترجمه‌شده، پارادایم برنامه‌نویسی: برنامه‌نویسی رویه‌ای، برنامه‌نویسی شیءگرا، برنامه‌نویسی تابعی، برنامه‌نویسی جنریک، concurrent
طراحی شده توسطWalter Bright, Andrei Alexandrescu (since 2007)
توسعه‌دهندهDigital Mars, Andrei Alexandrescu (since 2007)
ظهوریافته در۲۰۰۱ (۲۰۰۱)
انتشار پایدار
2.071.0[1]
۵ آوریل ۲۰۱۶ (۲۰۱۶-۰۴-05)[2]
وابستگی زیاد و کم به نوع، static, inferred
سیستم‌عاملشبه‌یونیکس (فری‌بی‌اس‌دی، لینوکس etc.), مایکروسافت ویندوز، اواس ده
پروانهبوست (کتابخانه‌های سی++) (DMD frontend, standard and runtime libraries),
source available (DMD backend),
Fully open-source (LDC and GDC)
.d
وبگاه
پیاده‌سازی‌های بزرگ
DMD (reference implementation), GDC, LDC
متأثر از
سی (زبان برنامه‌نویسی)، سی++، سی شارپ، ایفل (زبان برنامه‌نویسی)، جاوا (زبان برنامه‌نویسی)
تأثیر گذاشته بر
MiniD, DScript، والا (زبان برنامه‌نویسی)، Qore، سوئیفت (زبان برنامه‌نویسی)، Genie

    D Programming در ویکی‌کتاب (انگلیسی)

    ویژگی‌ها

    ۱. چند الگویی
    ۱٫۱ امری: زبان D یک زبان امری مشابه C است. توابع، داده‌ها، دستورها، اعلان‌ها و عبارات کاملاً مانند زبان C عمل می‌کنند. از تفاوت‌های مهم زبان D با زبان C در امری بودن، می‌توان به حلقه foreach اشاره کرد که امکان حرکت کردن روی یک collection را به ما می‌دهد. همچنین، زبان D دارای توابع تو در تو است که داخل یکدیگر تعریف می‌شوند.
    ۱٫۲ شی گرایی: زبان D بر پایه سلسله مراتب وراثت تکی بنا شده‌است و از وراثت چندگانه پشتیبانی نمی‌کند.
    ۱٫۳ Meta Programming
    ۱٫۴ تابعی: زبان D از بسیاری ویژگی‌های برنامه‌نویسی تابعی پشتیبانی می‌کند؛ مانند ثابت توابع، اشیای بازگشتی-تغییرناپذیر و همچنین توابع با اولویت بالا
    ۱٫۵ موازی: مثلاً در یک حلقهٔ for همه دفعات تکرار حلقه همزمان اجرا می‌شوند .

    import std.stdio : writeln;
    import std.range : iota;
    import std.parallelism : parallel;
    
    void main()
    {
        foreach (i; iota(10).parallel) {
            // The body of the foreach loop is executed in parallel for each i
            writeln("processing ", i);
        }
    }
    


    ۱٫۶ همروندی

    import std.stdio, std.concurrency;
    
    void foo()
    {
        bool cont = true;
    
        while (cont)
        {
            receive( // delegates are used to match the message type
                (int msg) => writeln("int received: ", msg),
                (Tid sender) { cont = false; sender.send(-1); },
                (Variant v) => writeln("huh?") // Variant matches any type
            );
        }
    }
    
    void main()
    {
        auto tid = spawn(&foo); // spawn a new thread running foo()
    
        foreach (i; 0 .. 10)
            tid.send(i);   // send some integers
        tid.send(1.0f);    // send a float
        tid.send("hello"); // send a string
        tid.send(thisTid); // send a struct (Tid)
    
        receive((int x) => writeln("Main thread received message: ", x));
    }
    


    ۲. مدیریت حافظه: برای این کار هم می‌توان از توابع new و delete استفاده کرد و هم از malloc و free به همان شکل زبان C به صورت مستقیم؛
    ۳. SafeD: به زیر مجموعه‌ای از زبان D گفته می‌شود که از نظر مدیریت حافظه قابل اطمینان است. (هیچ چیز در حافظه نوشته نمی‌شود مگر اینکه برای آن حافظه فضایی گرفته شده باشد و هیچ چیز نوشته نمی‌شود اگر آن حافظه بازیابی شده باشد)

    تعامل با سایر سیستم‌ها

    برنامه رابط دودویی سی، در تمامی انواع مشتق شده C پشتیبانی می‌شود. کتابخانه استاندارد زبان C، خود بخشی از زبان D است. از آنجایی که C++ خود یک برنامه رابط دودویی تک ندارد، زبان D تنها قادر به دسترسی به کد C++ نوشته شده در برنامه رابط دودویی زبان C است.
    در ویندوز، زبان D به Component Object Model دسترسی دارد.

    نمونه‌ای از کد زبان D

    برنامه زیر توسط یک تابع بازگشتی، فاکتوریل یک عدد را محاسبه می‌کند.


    ulong factorial(ulong n)
    {
        if (n<2)
            return 1;
        else
            return n * factorial(n-1);
    }
    

    ابزارهای توسعه

    ویرایشگرها و محیط‌های توسعه یکپارچه متعددی برای زبان D وجود دارد. شامل: Eclipse, Microsoft Visual Studio, SlickEdit,Emacs,vim,SciTE,Smultron,TextMate,MonoDevelop,Zeus,Geany
    برنامه‌های زبان D می‌توانند توسط هر کامپایلر زبان C، اشکال زدایی شوند.

    تاریخچه

    Walter Bright در سال ۱۹۹۹ تصمیم گرفت روی زبان جدیدی کار کند. زبان D اولین بار در دسامبر ۲۰۰۱ منتشر شد و در ژانویه ۲۰۰۷ به نسخه ۱٫۰ رسید. اولین نسخه زبان D که D1 نامیده شد، مبتنی بر مبانی شی گرایی، امری بودن و چند الگویی بود؛ مشابه سی پلاس پلاس
    در همان سال ۲۰۰۷، اولین نسخه D2 منتشر شد. در واقع D2 برای تثبیت D1 عرضه شد و بسیاری از خطاهای D1 را برطرف کرده بود.
    در سال ۲۰۱۱، پروژه زبان D بر روی GitHub قرار گرفت تا از توسعه بر مبنای خطایابی رها شود. در همان سال، Andrei Alexandrescu اعلام کرد که در ۳۱ دسامبر ۲۰۱۲ نسخه آخر D1 عرضه می‌شود و دیگر این نسخه ادامه نخواهد یافت.

    منابع

    1. "{{جا:PAGENAME}} url=http://dlang.org/changelog.html#2.071.0". D Programming Language 2.0. Digital Mars. line feed character in |title= at position 16 (help); Missing or empty |url= (help); |access-date= requires |url= (help)
    2. "Release D 2.071.0". Retrieved 16 April 2016.

    پیوند به بیرون

    This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.