قسمت دوم D زبان برنامه نویسی
قسمت دوم D زبان برنامه نویسی
C/C++ برای چه کسانی مناسب نیست؟ ١.به طور واقع بینانه ، ھیچکس قصد تبدیل میلیونھا خط از D
اشاره مناسب apps برای D را کامپایل نم یکند C/C++ کد منبع اصلاح نشده D ندارد و از آنجا که D به
ھای ارث را به خوبی پشتیبانی م یکند). ٢.برنامه ھای خیلی کوچک : CAPF ، D نیست. (به ھرحال
احتمالاً مناسبتر است. ٣.به عنوان Perl , Dmdscript , Python یک زبان اسکریپتی یا دارای مفسر مانند
برای برنامه نویسان D مناسبتر است java یا Python زبان برنامه نویسی برای شروع: برای مبتدی ھا
یک زبان . D متوسط تا پیشرفته یک زبان دوم عالی است . ۴.زبان به کاربرد کلمات صحیح وسواس دارد
عملی است و ھر خصیصه از آن ترجیحاً قابل مقایسه و ارزیابی در ھمان حداست تا در حد ایده آل . به
ساختارھا و مفاھیمی دارد که به طور مجازی نیاز به اشاره گرھا را برای امور پی شپا افتاده D طور مثال
ازبین م یبرد. به طور مشابه تغییر نوعھا ھنوز وجود دارد برای آن جایی که سیستم نوع نیاز به نادیده
را در دسته ھای C) نسبت به D( این قسمت برخی خصوصیات جالب تر D گرفتن دارد .خصوصیات اصلی
از کلاسھا آغاز D مختلف طبقه بندی م یکند. برنامه نویسی شیءگرا کلاسھا : طبیعت شیءگرای
می شود. مدل وراثت ، وراثت یگانه است که با روابط تقویت م یشود. شیء کلاس در ریش هی شجره
وراثت می نشیند. بنابراین تمام کلاسھا یک مجموعه متداول تابعی را اجرا می کنند. کلاسھا به وسیله
ارجاع معرفی می شوند و چنان کد پیچیده ای برای آنکه پس از استثناھا پاک شود نیاز نیست. تعریف
مجدد عملگرھا: می توان کلاس را برآن واداشت که با استفاده از عملگرھای موجود ، سیستم نوع را
برای پشتیبانی نوعھای جدید گسترش دھند. مثلاً ایجاد کلاس اعداد بزرگ و سپس تعریف مجدد
عملگرھای (/,*,_,+) برای توانایی استفاده از آنھا در املای عبارات جبری معمولی.
پیمانه ھا : فایلھای منبع دارای ارتباطی ی کبه یک با پیمانه ھا ھستند. به جای ( Productivity) فراوری
می نماییم. ھیچ نگرانی در مورد import نمودن یک فایل از اعلان ھا فقط پیمانه را include#
یا ifndef# با header ھای متعدد از ھمان پیمانه نیست ھمچنین نیازی به پوشاندن فایلھای import
معمولاً نیاز دارد که توابع و C++ و از این قبیل نیست. اعلان در برابر تعریف pragma once # یا endif#
صورت می گیرد و تعریف که در فایل منبع با header کلاسھا دوبار اعلان شوند یک اعلان که در فایلھای
این یک روند مستعد خطا و کسل کننده است . به طور واضح برنام هنویس فقط نیاز دارد “C.” . پسوند
که یک بار آن را بنویسید و سپس کامپایلر باید داده ھای اعلان را بسط دھد و برای وارد کردن نمادین در
می کند: مثال D دسترس قرار دھد. دقیقاً آن گونه که
class ABC { int func() { return 7; } static int z = 7; } int q;
ھا یا املاھایی مانند زیر نیست : extern ، دیگر نیاز به تعریف جدای توابع عضو، اعضای استاتیک
int ABC::func() { return 7; } int ABC::z = 7; extern int q;
ھم نوشته می شوند اما توابع inline به صورت {;return توابع جزیی مانند { 7 C++ تذکر : البته در
پیچیده نه. علاوه برآن اگر یک ارجاع بعد از آن موجود باشد تابع نیاز به الگو دارد که از قبل موجود باشد
کار نمی کند . C++ مثال زیر در
class Foo { int foo(Bar *c) { return c->bar; } }; class Bar { public: int bar() { return اما ;{ { ; 3
کد ھم ارز در D کار می کند : class Foo { int foo(Bar c) { return c.bar; } } class Bar { int bar()
{ return 3; } }
است یا نه توسط تنظیمات بھینه ساز قابل کنترل است . قالب ھا inline به صورت D اینکه یک تابع
روشی واضح برای پشتیبانی برنام هسازی عمومی ھمراه با قدرت اختصاصی سازی به صورت D قالبھای
قسمت به قسمت ، پیشنھاد می کند. آرایه ھای شرکت پذیر آرایه ھای شرکت پذیر آرای هھایی ھستند با
یک نوع داده قراردادی (اختیاری) به عنوان ایندکس به جای آنکه به یک ایندکس از نوع اعداد صحیح
ھستند. این آرایه ھا ساختن سریع ، کارا و hash محدود باشند. در اصل آرایه ھای شرکت پذیر جدولھای
در C++ و C خالی از اشکال جدول ھای سمبل را آسان می نماید. تعریف نوعھای واقعی تعریف نوعھای
تعریف ،. D حقیقت نام مستعار نوع ھستند طوریکه ھیچ نوع جدیدی به طور واقعی مطرح نمی شود
نوعھای واقعی پیاد هسازی می کند جایی که :
;type def int handle
ایجاد می کند . بر کنترل نوع تأکید شده است و تعریف نوعھا handle به طور واقعی یک نوع جدید به نام
در تعریف مجدد توابع شریک می شوند. برای مثال :
int foo(int i); int foo(handle h);
دارد . این امر بیش از ھمه در ساخت bit یک نوع داده با نام D نوع داده پایه بیت است و bit نوع
آرایه ھایی از بیتھا مفید است :
;bit [ ] foo
، inline توقع پشتیبانی از توابع معمول از جمله توابع عمومی ، توابع مجدد تعریف شده ، توابع D توابع
توابع عضو ، توابع مجازی ، اشاره گرھا به توابع و … را داشته است علاوه برآن : توابع تودرتو توابع
و تکنیکھای بسته بندی locality می توانند درون توابع دیگر قرار گیرند. این امر در ساخت کد ، خاصیت
توابع بی نام می توانند به طور مستقیم در یک Functionliterals توابع بسیار مفید است. لفظ ھای توابع
دینامیک توابع محصور شده و توابع عضو کلاس بوسیله وکالت (Closure) عبارت جای داده شوند. وکالت
شدن برنامه سازی type safe می توانند ارجاع داده شوند که این باعث آسانتر شدن و (delegate)
عمومی می شود. پارامترھای ورودی، خروجی ، ورودی خروجی این خصوص یسازی نه تنھا کمک
می کند که توابع خود مستندتر شوند بلکه بسیاری از موارد لزوم اشار هگرھا را بدون قربانی کردن ھیچ
چیز حذف و امکاناتی را برای کمک بیشتربه کامپایلر در پیدا کردن اشکالات کد فراھم م یکند. بدین
ھای بیگانه ارتباط برقرار API این امکان فراھم میشود که مستقیماً با یک بازه وسیعتری از D ترتیب برای
C کند. و ھیچ نیازی برای کارھای جانبی مانند زبانھای تعریف ارتباطات وجود ندارد. آرایه ھا آرایه ھای
اشتباھات متعددی دارند که م یتوانند تصحیح شوند. 1 :اطلاعات بعد با آرایه ھمراه نیست و بنابراین باید
ھستند که به argr و argc ذخیره شده و جداگانه ارسال شود . مثال کلاسیک این مورد پارامترھای
فرستاده می شوند . main
main (int argc , char*argv[])
2آرایه ھا اشیاء سطح اول نیستند .وقتی یک آرایه به عنوان پارامتر به یک تابع فرستاده می شود به یک .
اشاره گر برگردانده می شود حتی با اینکه الگوی تابع به طور گیج کنند های می گوید که این آرایه است.
قابل تغییر اندازه C وقتی این برگرداندن انجام می شود تمام اطلاعات نوع آرایه گم م یشود. 3 .آرایه ھای
نیستند . این بدان معنی است که حتی چیزھای ساده ،انبوه و متراکم م یگردد مانند یک پشته که
قابل کنترل نیست چون اصلاً مرز C نیازدارد به عنوان یک کلاس پیچیده ساخته شود. ۴.مرز یک آرایه
آرایه مشخص نیست. ۵.آرایه ھا با علامت [ ] پس از شناسه اعلان می شوند . این به یک املای بی خود
و گیج کننده در اعلان اشیایی مانند اشاره گر به یک آرایه م یانجامد :
int (*array ) [3];
اعلان . int [3] * array ; علامت [ ] در سمت چپ قرار م یگیرد که فھم آن بسیار ساده تر است D در
تابعی که آرایه ای از اعداد Long [ ] func (int x); یک اشاره گر به یک آرایه سه تایی از اعداد صحیح
در چھار نوع می آیند : اشاره گرھا ، آرایه ھای استاتیک ، D صحیح بلند را برمی گرداند آرایه ھای
آرایه ھای دینامیک و آرای هھای شرکت پذیر ، قسمت آرایه ھا را ببنید ! رشته ھا پردازش رشت هھا آن قدر
زمخت و بدترکیب) که نیازمند پشتیبانی مستقیم در زبان برنامه C++ و C متداول است (و آن قدر در
الحاق رشته ھا ، کپی کردن و … را در دست می گیرند . ، D سازی است. زبانھای مدرن از جمله
رشته ھا رھاورد مستقیم پردازش بھینه شده آرایه ھا ھستند.
سه شنبه 15 تیر 1389 11:04 PM
تشکرات از این پست