زبان برنامه نویسی 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, 16:46

آشنایی با زبان برنامه سازی D تحت لینوکس

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

چرا D ؟
واقعاً چرا؟ کی زبان برنامه‌نویسی دیگری نیاز دارد؟
صنعت نرم‌افزار راه درازی از زمان اختراع زبان C تاکنون پیچیده است. به وسیله ++C تعداد زیادی مفاهیم جدید به زبان C افزوده شد. اما سازگاری گذشته با C در آن ادامه یافت ، شامل سازگاری با تقریباً تمام ضعفهای طراحی اصلی زبان C.
تلاشهای زیادی برای برطرف ساختن آن ضعفها تاکنون صورت گرفته است اما در پی سازگاری با گذشته خنثی شده است. در ضمن هر دوی C و ++C دستخوش یک رشد پیوسته خصوصیات جدید شده‌اند.
این خصوصیات جدید باید به دقت به ساختار موجود خورانده شود بدون نیاز به بازنویسی کد قدیمی نتیجه نهایی بسیار پیچیده است ؛ C استاندارد تقریباً ۵۰۰ صفحه است و ++C استاندارد حدود ۷۵۰ صفحه! حقیقت شلوغی کامپایلر ++C این است که کامپایلرهای انــــدکی به طور مؤثر استاندارد را دست نخورده به کار می‌گیرند.
برنامه نویسان ++C گرایش می‌یابند که در جزایر خاصی از زبان برنامه بسازند و در نظر می‌گیرند کاربرد بسیار خوب بعضی خصوصیات را در حالی که از دیگر مجموعه‌ها اجتناب می‌کنند . با وجود اینکه کد از یک کامپایلر به کامپایلر دیگر قابل حمل است می‌تـــواند مشکل باشد که از برنامه نویسی به برنامه نویسی دیگر منتقل شود.
توانایی بزرگ ++C این است که می‌تواند تعداد زیادی سبکهای اصلی برنامه‌نویسی را پشتیبانی کنند . اما در کاربرد طولانی مدت سبکهای دارای اشتراک و متناقض یک مانع هستند و سبب تأخیر.
ناامید کننده است که زبانی چنین قدرتمند ، اعمال پایه‌ای مانند تغییر اندازه آرایه‌ها و الحاق رشته‌ها را انجام نمی‌دهد. بله ++C توانایی برنامه نویسی قدرتمند برای پیاده سازی آرایه های قابل تغییر اندازه و رشته ها را فراهم می‌کنند (مانند نوع بردار در STL ) . به هرحال چنین خصوصیات بنیادی ، بایستی جزء قسمتهای زبان باشد. آیا قدرت و قابلیتهای ++C ، قابل گسترش ، طراحی مجدد و پیاده‌سازی به یک زبان ساده وارتگنال و کاربردی می‌باشد؟ آیا تمامی آنها می‌تواند داخل بسته‌ای قرار گیرد که برای کامپایلرنویسان به آسانی قابل پیاده‌سازی صحیح باشد و کامپایلرها را قادر کند که به نحوی کارا ، کدهای بهینه شده و پرتکاپو ایجاد کند؟
فناوری پیشرفته کامپایلر به نقطه‌ای رسیده است که خصوصیاتی از زبان که به منظور جبران کردن فناوری ابتدایی کامپایلر وجود دارند ، می‌توانند حذف شوند. (مثالی ازاین نمونه می‌تواند واژه کلیدی “Register” در C باشد ، مثالی ظریفتر ماکروی پیش‌پردازنده در C است) . ما می‌توانیم به قناوری پیشرفته‌ی بهینه سازی کامپایلر اعتماد کنیم تا دیگر به خصوصیاتی از زبان که برای دست یافتن به کیفیت کد قابل‌قبول (جدای از کامپایلرهای ابتدائی) لازم است نیاز نداشته باشیم.
D
درنظر دارد که هزینه‌های گسترش نرم‌افزار را حداقل %10 کاهش دهد توسط افزودن خصوصیات بهینه‌سازی بالابرنده میزان سودمندی و تولید و همچنین با تعدیل کردن خصوصیات زبان ، به طوری که اشکالات وقت‌گیر متداول از ابتدا حذف می‌شوند.

خصوصیات حفظ شده از C++/C
منظره کلی D شبیه C و ++C است . این موضوع آموختن D و انتقال کد به آن را آسانتر می‌کند. گذر از C++/C به سوی D باید طبیعی حس شود و برنامه نویس مجبور نخواهد بود که یک راه کاملاً جدید انجام کارها را فراگیرد. استفاده از D به این معنا نیست که برنامه نویس به یک ماشین مجازی خاص زبان اجرا محدود شود مانند ماشین مجازی جاوا یا Smalltalk . هیچ ماشین مجازی D وجود ندارد یک کامپایلر سرراست است که Objectfile های قابل پیوند (Link) تولید می‌کند. D به سیستم عامل متصل می‌شود دقیقاً مانند C. ابزارهای آشنای متداول مانند “MAKE” مستقیماً در برنامه‌نویسی D گنجانده شده است.
منظره عمومی و احساس موجود در C++/C ابقا خواهد شد . همان املای جبری به کار خواهد رفت و اغلب عبارات و فرمهای دستورات و طرح‌بندی عمومی.
برنامه‌های D می‌تواند هم به کسب C ـ توابع و داده‌ها ـ و هم در کسب ++C نه شیءگرا ـ یاترکیبی از هردو قابل نوشتن است.

D
برای چه کسانی مناسب است؟
برنامه نویسانی که به طور مداوم از ابزارهای تجزیه و تحلیل کد استفاده می‌کنند تا خطاها را حتی قبل از کامپایل شدن ازبین ببرند.
افرادی که عمل کامپایل را با بالاترین سطح هشدارها انجام می‌دهند یا از کامپایلر می‌خواهند که هشدارها را به منزله خطا تلقی کند.
مدیران برنامه‌نویسی که مجبورند به راهنماییهای سبک برنامه‌نویسی برای اجتناب از اشکالات معمول C اعتماد کنند.
افرادی که براین باورند که وعده‌های سبک شیءگرای ++C به خاطر پیچیده‌گیهایش برآورده نمی‌شود.
برنامه‌نویسانی که از قدرت بیانگر ++C لذت می‌برند اما به خاطر نیاز به صرف تلاش زیاد برای اداره حافظه و یافتن اشکالات اشاره‌گرها ، ناامید شده‌اند.
پروژه‌هایی که نیاز به تست همراه و تصدیق و تأیید دارند.
برنامه‌نویسانی که فکر می کنند زبان باید دارای خصوصیات کافی باشد . برای رفع نیاز دائمی اداره دستی و مستقیم اشاره‌گرها.
برنامه‌نویسان محاسبات عددی . D دارای خصوصیات زیادی برای پشتیبانی مستقیم اعمال مورد نیاز برنامه نویسان محاسبات می‌باشد ، مانند پشتیبانی مستقیم از نوع داده مرکب و اعمال تعریف شده برای بی‌نهایت و NAN’S (این خصوصیات در استاندارد C99 اضافه شد ولی در ++C نه)
بخش تجزیه لغوی و تجزیه نحوی D از یکدیگر در نهایت مجزا هستند و همچنین از تجزیه‌گر معنایی.
این بدین معناست که نوشتن ابزارهای ساده برای اداره کردن کد منبع D بر سطح عالی آسان است بدون اینکه مجبور به ساختن یک کامپایلر کامل باشیم . همچنین بدین معناست که کد منبع ، قابل انتقال به فرم tokenها است برای کاربردهای خاص.


حمید نصیبی (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
 نحوه انتخاب يك كارت صدا