۲.
مقدار
دهی اولیه به صورت واضح مورد نیاز است
۳.
مجاز
نبودن متغییرهای محلی به کار نرفته
۴.
عدم
' ; '
تکی
در بدنه حلقه ها
۵.
عمل
انتساب ،مقادیر بولی بر نمی گرداند.
۶.
از
رده خارج کردن API
های
متروک
کنترل
زمان اجرا
۱.
عبارات
اثبات صحت (
)assert
۲.
کنترل
مرزهای آرایه
۳.
case تعریف
نشده در استثنای switch
۴.
استثنای
تجاوز از اندازه حافظه
۵.
ورودی
، خروجی و طراحی یکسان کلاس به وسیله
کنتراکت
سازگاری
تقدم
عملگر و قوانین سنجش
D
عملگرهای
C و
قوانین تقدم آنها را حفظ می کند همچنین
ترتیب قوانین سنجش و قوانین تقدم .
این
از اشکالات ریز که از ابتدای برنامه نمایان
می شود جلوگیری می کند .
دسترسی
مستقیم به API
های
C
نه
تنها D
نوع
داده های مطابق با C
دارد
همچنین دسترسی مستقیم به توابع C
را
فراهم می سازد .
هیچ
نیازی به نوشتن توابع بسته بندی شده یا
کدی برای کپی کردن اجزای متراکم یک توده
به صورت یک به یک نیست.
پشتیبانی
از تمام نوع داده های C
ارتباط با
هر API
زبان
C و
یا کد کتابخانه ای C
ممکن
است .
این
پشتیبانی تمام انواع C
99 را
در بر می گیرد .
D شامل
توانایی صف بندی اعضای ساختمان برای مطمئن
شدن از سازگاری با فرمتهای داده خارجی می
باشد.
پردازش
استثنای سیستم عامل
مکانیسم
پردازش استثناهای D
متصل
به روشی است که سیستم عامل در سطح زیرین
استثناها را در یک برنامه کاربردی پردازش
می کند .
کنترل
پروژه
نسخه
سازی
D SPAN>.
D تکنیک
if# و
نبود
هشدار
کامپایلرهای
D
هشدارهایی
برای کدهای نامطمئن تولید نمی کنند .
کد
یا توسط کامپایلر قابل قبول است یا نیست
. این
خصوصیت هر گونه بحثی در این زمینه که آیا
هشدار خطایی صحیح است یا نه و نیز هر بحثی
در این باره که با آن هشدار چه کنیم را از
بین می برد .
نیاز
برای هشدار کامپایلر نشانهی طراحی ضعیف
زبان است .
استهلاکDeprecation
به
مرور زمان ،بعضی کدهای کهنه کتابخانه با
نو تر و نسخه بهتر جایگزین می شود .
نسخه
قدیمی باید برای پشتیبانی کدهای به جا
مانده از قبل موجود باشد اما می تواند لقب
مستهلک بگیرد .
کدهایی
که نسخه های مستهلک را به کار می گیرند ،
می توانند به انتخاب برنامه نویس توسط یک
سویچ کامپایلر برچسب غیر قانونی بخورند
که باعث آسان شدن کار برنامه نویسان برای
نشان دادن هر وابستگی به خصوصیات مستهلک
می شود .
نمونه برنامه
D غربال
اراتستن (تست
اعداد اول):
import c.stdio ;
bit [8191] flags ;
int main (){
int i , count , prime , k ,
iter ;
print f(“ 10 iterations \n”
);
for ( iter = 1 ; iter<=10
; iter ++ ) {
count = 0 ;
flags [ ] = 1 ;
for ( i = 0 ; i < flags .
length ; i ++ ){
if ( flags [i] ) {
prime = i + i +3;
k = i + prime;
while ( k < flags .
Length ) {
flags , [ k] = 0 ;
k + = prime ;
}
count + = 1;
}
}
}
print f ( “ % d primes” ,
count ) ;
return 0 ;
}
حمید
نصیبی (hamidnsaba@yahoo.com)