زبان برنامهنویسی D، یک زبان شی گرا، امری و چندالگویی سیستمی است که توسط Walter Bright از Digital Mars طراحی و در سال ۲۰۰۱ منتشر شد.
Bright توسط Andrei Alexandrescu در سال ۲۰۰۶ به تلاش توسعه و طراحی پیوست. با اینکه D مهندسی دوبارهای از سی پلاس پلاس است، کاملاً یک زبان جدا محسوب میشود؛ زیرا بسیاری از ویژگیهای هسته سی پلاس پلاس را نگه داشته و بسیاری را دور ریختهاست. در طراحی زبان دی همچنین از زبانهایی مانند پایتون، روبی، سی شارپ، ایفل و جاوا نیز الهام گرفته شدهاست. هدف طراحی زبان D ترکیب کارایی و امنیت زبانهای کامپایلری، با قدرت زبانهای پویای مدرن است. کد یک برنامه در زبان D شبیه به زبان سی پلاس پلاس است، اما کوتاهتر میباشد.
پارادایم برنامهنویسی | چندالگویی: تابعی، دستوری، شیءگرا |
---|---|
طراحی شده توسط | والتر برایت, Andrei Alexandrescu (since 2007) |
توسعهدهنده | Digital Mars, Andrei Alexandrescu (since 2007) |
ظهوریافته در | ۲۰۰۱ |
انتشار پایدار | |
استنباطی، ایستا، نیرومند | |
سیستمعامل | شبهیونیکس (فریبیاسدی، لینوکس 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 یک زبان امری مشابه 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 دسترسی دارد.
برنامه زیر توسط یک تابع بازگشتی، فاکتوریل یک عدد را محاسبه میکند.
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 عرضه میشود و دیگر این نسخه ادامه نخواهد یافت.
This article uses material from the Wikipedia فارسی article دی (زبان برنامهنویسی), which is released under the Creative Commons Attribution-ShareAlike 3.0 license ("CC BY-SA 3.0"); additional terms may apply (view authors). محتوا تحت CC BY-SA 4.0 در دسترس است مگر خلافش ذکر شده باشد. Images, videos and audio are available under their respective licenses.
®Wikipedia is a registered trademark of the Wiki Foundation, Inc. Wiki فارسی (DUHOCTRUNGQUOC.VN) is an independent company and has no affiliation with Wiki Foundation.