زبان برنامه‌نويسی D بخش سوم
S h a b g a r d . O R G
.::Security Group::.

*Nix *Nix *Nix *Nix *Nix *Nix *Nix مبتدی مبتدی مبتدی

    Search for in  

  خانه

  *Nix

      مبتدی

      متوسط

      تخصصی

  Windows

      مبتدی

      متوسط

      تخصصی

  network

  Programming

      PHP

  Security

  Hacking

  Program

      MS-Word

      Graphic

  Cisco

  Hardware



زبان برنامه‌نويسی D بخش سوم
Posted by on Dec 31, 2004, 17:10

کنترل منابع (Grabage Collection)
تخصیص حافظه در D کاملاً با جمع‌آوری زباله همراه است. تجربه شهودی بیان می‌کند که تعداد زیادی از خصوصیات ++C برای کنـــترل رهاسازی حافظــــه لازم است . با جمــع‌آوری زباله زبان بسیار ساده‌تر می‌شود.
حکمی هست که می‌گوید جمع‌آوری زباله برای جوجه برنامه‌نویسها و تنبل‌ها است. من به یاد دارم زمانی را که این حرف در مورد ++C گفته می‌شد. بعد از همه هیچ چیز در ++C نیست که در C قابل انجام نباشد یا در اسمبلر برای آن منظور.
خصوصیات جمع‌آوری زباله کد خسته کننده پیگیری تخصیص حافظه‌های مستعد خطا که در C و ++C لازم است را حذف می‌کند. این نه تنها بدین معناست که گسترش برنامه‌ها سریعتر انجام می‌گیرد و هزینه‌های نگهداری کاهش می یابد بلکه برنامه به میزان زیادی در دفعات اجرا سریعتر است.

کنترل حافظه ساده و واضح
با وجود اینکه D یک زبان دارای جمع‌آوری زباله است ، اعمال new و delete می‌توانند در کلاسهای خاص اجرا شوند همانگونه که یک تخصیص دهنده سفارشی به کار می‌رود.
RAII
RAII
یک تکنیک پیشرفته گسترش نرم‌افزار برای کنترل تخصیص منابع و آزادسازی آنها است ، D از RAII در یک روش کنترل شده قابل پیش‌بینی که مستقل از چرخه جمع‌آوری زباله است پشتیبانی می‌کند .

کارایی
توده سبک وزن
D
ساختمان‌های سبک ساده C را پشتیبانی می‌کند هم برای سازگاری با ساختمان داده‌های C و نیز به خاطر اینکه آنها در جاهایی که قدرت کامل کلاسها کارایی ندارد مفیدند.
Inline Assembler
درایور سخت افزار ، کاربردهای سیستمی با کارایی بالا ، سیستم های تعبیه شده و کدهای خصوصی شده بعضی وقتها نیاز به غرق شدن در زبان اسمبلی دارند تا کار انجام شود . در حالی که پیاده سازی های D نیاز به کارگیری اسمبلر خطی ندارند ، این خصوصیت تعریف شده و قسمتی از زبان است . اغلب نیازهای کد اسمبلی به وسیله این بخش قابل برآوری است که نیاز به اسمبلرهای جداگانه و DLL ها را مرتفع می سازد .
همچنین بسیاری از پیاده سازی های D توابع اصلی را شبیه به پشتیبانی ذاتی C از پردازش درگاههای ورودی خروجی ، دسترسی مستقیم به عملیاتهای ممیز شناور و … پشتیبانی می کند .

قابلیت اعتماد
یک زبان پیشرفته باید برنامه نویس را در رفع تمامی اشکالات از کد یاری کند . این کمک به چندین صورت می تواند ارائه شود . از آسان سازی کاربرد تکنیکهای قدرتمند تر ، تا گوشزد کردن کد غلط آشکارا توسط کمپایلر و کنترل زمان اجرا .

معاهدات ( Contracts )
طراحی به وسیله کنترات ( ساخته B.Meyer ) یک تکنیک انقلابی برای کمک به مطمئن شدن از صحت برنامه است و نسخه DBC زبان D شامل پیش شرطهای توابع ، پس شرطهای توابع ، یکسانی های کلاس و کنتراکتهای ثابت کننده است .

آزمایش واحد
آزمایش قسمتها می تواند به یک کلاس افزوده شود طوری که به صورت خودکار در لحظه شروع اجرای برنامه اجرا شوند . این در هشدار دادن اینکه پیاده سازی کلاس در هر بار ساخته شدن ،‌سهواً‌‌‌‌‌‌‌‌ با شکست مواجه نشده است مفید است آزمایش واحد قسمتی از کد کلاس را تشکیل می دهد . ایجاد آنها یک قسمت طبیعی پر دارد گسترش کلاس خواهد شــــد برخلاف پشت گوش انداختن کد تمام شده از گروههای آزمایش.
آزمایش واحد در دیگر زبانها قابل انجام است اما نتیجه جالب از آب در نمی آید زیرا این زبانها با این فکر عجین نیستند . آزمایش واحد یک خصوصیت اصلی و بارز در D است . برای توابع کتابخانه ای به خوبی عمل می کند هم ضمانت می کند که تابع حقیقتاً کار می کند و هم با مثال بیان می کند که تابع چگونه کار می کند . خیل کثیر کدهای منشاء کاربردی و کتابخانه های ++C موجود در اینترنت برای دانلود را در نظر بگیرید . چه تعداد از آنها با تستهای کلی همراه است ( تست واحد را هم در نظر نگیرید ) ؟ کمتر از یک درصد . روش معمول این است که اگر کامپایل شده اجرا هم می شود و شگفت زده خواهیم شد اگر هشدارهای کامپایلر اشکالات واقعی باشند .
در کنار طراحی با کنتراکت ، آزمایش واحد ، D را به مراتب به بهترین زبان برای نوشتن قابل اعتماد و کاربردهای سیستمی قدرتمند تبدیل می کند.

خصوصیات و شرح اشکال زدایی
اکنون اشکال زدایی بخشی از املای زبان است ( debug ) . که در زمان کامپایل قابل فعال یا غیر فعال شدن است بدون کاربرد دستورات پیش پردازنده یا ماکروها . املای debug یک قابلیت تشخیص سازگار - استوار و قابل حمل و قابل فهم را فعال می کند که آیا کد منبع حقیقی قابل ایجاد در کامپایل اشکال زدایی و کامپایل نهایی هست ؟
پردازش استثناء
مدل برتر try - catch - finally به جای مدل فقط try - catch به کار رفته است . نیاز نیست که اشیای زائد ایجاد کنیم فقط برای اینکه معناهای نــــهایی را توسط مخرب ( destructor ) پیاده سازی کنیم .

هماهنگی و هم زمانی
برنامه سازی چند رشته ای متداولتر می شود و D مبناهایی برای ساخت برنامه های چند رشته ای فراهم می کند . هم زمان سازی می تواند هم در سطح متد و هم در سطح شیئی انجام شود .
synchronize int func ( ) {.}
توابع همزمان شده ( سنکرون شده ) در هر زمان فقط به یک رشته اجازه می دهند که آن تابع را اجرا کند . عبارت synchronix\ze در اطراف قطعه ای از عبارات احاطه می کند و دسترسی به وسیله شیئی یا به صورت عمومی را کنترل می کند .

پشتیبانی تکنیکهای قدرتمند
آرایه های دینامیک به جای اشاره گر ها
متغییرهای ارجاعی به جای اشاره گر ها
اشیای ارجاعی به جای اشاره گرها
جمع آوری زباله به جای کنترل واضح و دستی حافظه
مبانی موجود برای همزمانی رشته ها
عدم وجود ماکرویی که به طور غیر عمدی به کد آسیب بزند .
توابع inline به جای ماکروها
کاهش وسیع نیاز به اشاره گرها
سایز انواع مرکب واضح و مشخص است
عدم شک در مورد علامت دار بودن کاراکتر ها
عدم نیاز به دوبار اعلان در کد منبع و فایلهای header
پشتیبانی واضح از تجزیه و تحلیل برای افزودن کد اشکال زدایی


حمید نصیبی (hamidnsaba@yahoo.com)






---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
Latest Headlines

 *Nix
 نصب سيستم عامل لينوكس وفارسي نويسي در محيط
kavoshgar.blogsky.com
 نصب سيستم عامل لینوکس مندریک 9.2 Mandrake linux
 راهنماي كاربران جديد لينوكس
 راهنماي كاربران جديد لينوكس
 تعاريف پايه و نكات كاربردي در لينوكس و يونيكس
 تنظیماتIP و شبکه در گنو / لینوکس
 تعیین سطوح دسترسی کاربران در لینوکس
 تاریخچه لینوکس
 ظاهر پوسته فرمان
 استفاده از پوسته فرمان در لینوکس
 Windows
 بازگرداندن ویندوز خراب شده به حالت قبل از بروز مشکل
 چگونه میتوان در ويندوز 98 و ME به درايو NTFS دسترسي داشت
 با افزودن پسورد دوم براي ورود به ویندوز XP امنیت خود را تا حد زیادی افزایش دهید
 برنامه های تحت داس و قدیمی را چگونه در XP اجرا کنیم
 نصب ويندوز 98 يا ME در محیط ويندوز NT يا XP فقط در یک دقیقه و نیم
 مقدمات و نيازهاي شما براي يادگيري TCP/IP
 امكانات شبكه اي ويندوز
 SSL چيست ؟
 آموزش HyperTerminal
 آموزش كرك فايل هاي SAM
 network
 كارت شبكه يا LAN Card
 شبكه سرى يا BNC
 شبكه Hub
 تنظيم و كنترل برنامه Network Neighborhood
 استفاده از شبكه و عمل Sharing
 نصب و تنظيم برنامه Wingate جهت اتصال شبكه به سرور و اينترنت
 AAA (Authentication, Authorization and Accounting)
 مقدمه ای بر شبکه خصوصی مجازی (VPN)
 ip و port
  RFC چيست؟
 Programming
 زبان برنامه نویسی D قسمت اول
 زبان برنامه سازی D تحت لینوکس قسمت دوم
 زبان برنامه‌نويسی D بخش سوم
 زبان برنامه نویسی D بخش چهارم
 زبان برنامه نویسی D بخش پنجم
 زبان برنامه‌نویسی D بخش ششم
 نرم‌افزار آزاد یا باز‌متن چیست؟
 مقدمه ای بر برنامه نويسی شی گراء در دات نت
 آموزش رتينا
 ايجاد فايل XML با استفاده از يک بانک اطلاعاتی
 Security
 بررسی نحوه عملکرد فایروال Firewallیا ديواره آتش
 مقايسه سرورهای لينوکس و ويندوز
 چه فایلهائی میتوانند برای کاربران مخاطره آمیز باشند !
 امنيت برنامه های وب ( بخش اول )
 امنيت برنامه های وب ( بخش دوم )
 امنيت برنامه های وب ( بخش سوم )
 امنيت برنامه های وب ( بخش چهارم )
 امنيت برنامه های وب ( بخش پنچم )
 امنيت نامه های الکترونيکی ( بخش اول )
 مفاهيم اوليه پروتکل TCP/IP ( بخش اول )
 Hacking
 چگونه هکر شویم؟ بخش اول
 چگونه هکر شویم؟ بخش دوم
 هنر هشتم : كرك كردن
 مقدمات قبل از شروع يادگيری هک
 Port Scanning
 Port Scanning
  کاربرد نرم‌افزار nmap
 IP Scanning
 پورت ۷۹
 پورت ۸۰ چيست؟
 Program
  آموزشهاي افكتهاي فتوشاپ
 Shocking Text
 مبانی آشنايی با Word
  آموزش ساخت متن یخی
 نصب تم در موزیلا فایرفاکس
 کلید های میانبر در فایرفاکس
 Cisco
 آشنايي با مدارک سيسکو
 Cisco Systems
 Hardware
 آشنايي با پورت USB
 نحوه انتخاب يك كارت صدا