دِلفی (Delphi) یا به تعبیری ویژوآل پاسکال – یک زبان برنامه نویسی است و بستری برای توسعهٔ نرمافزار که شرکت بورلند آن را تولید کرده است.
این زبان، در بدو انتشار خود در سال ۱۹۹۵، به عنوان یکی از نخستین ابزارهایی مطرح شد که از توسعهٔ نرمافزار بر مبنای متدولوژی RAD((Rapid Application Developmentپشتیبانی میکردند؛ یعنی تولید و توسعهٔ سریع برنامههای کاربردی این نرم افزار بر مبنای پاسکال شیگرا بوده و از این زبان مشتق شده است.
البته بورلند نسخهای از دلفی و سیپلاسپلاسبیلدر را برای لینوکس به نام کایلیکس (Kylix) ارائه کرد که مورد استقبال توسعه دهندگان نرمافزارهای لینوکس قرار نگرفت.
نرمافزارهای دلفی در ابتدا به صورت مستقیم از کتابخانههای ویندوز و کتابخانهٔ مخصوص خود به نام VCL استفاده میکرد، اما پس از نسخه ۶ دلفی، امکانات استفاده از داتنت هم به آن اضافه شد.
در حال حاضر میتوان دلفی را یکی از رایجترین زبانهای ممکن در ایران دانست.زبانِ دلفی که پیشتر بنام پاسکال شیءگرا (Object-Pascal) خوانده میشد و برای طراحی نرمافزاهای تحت ویندوز به کار میرفت، امروزه چنان توسعه یافته است که برای تولید نرمافزارهای تحت سیستمعاملِ لینوکس و داتنت نیز به کار میآید.
بیشترین کاربرد دلفی در طراحی برنامههای رومیزی و پایگاه دادهها است، اما به عنوان یک ابزارِ «چند- منظوره»، برای طراحی انواع گوناگونی از پروژههای نرمافزاری نیز مورد استفاده قرار میگیرد.
دلفی 2006 شرکت بورلند در سال ۲۰۰۶ نرمافزار جدید خود را با ویژگیهای جدید به بازار ارائه کرد.
این برنامه جدید امکان برنامه نویسی با دلفی و سی پلاس پلاس و همچنین سیشارپ را بطور همزمان ارائه میدهد.
بدین ترتیب برنامه نویسانی که با ابزارهای مختلفی کار میکنند براحتی میتوانند در این محیط جدید برنامه نویسی کنند.
ویژگی مهم این نگارش نسبت به نگارش ۲۰۰۵ بحث مدیریت حافظه است.
در نگارش ۲۰۰۵ ضعفهائی در این زمینه وجود داشت که در این نسخه حل شده است.
شرکت بورلند افتخار دارد که به عنوان اولین شرکت تولید کننده IDE زبانهای برنامه نویسی مانند دلفی و سی شارپ بیلدر و جی بیلدر(مخصوص زبان جاوا) و ....
از تکنولوژی دات نت در محصولات خود استفاده کرده است.
دلفی 2007 در اواخر سال 2006 شرکت بورلند یک شرکت تابع با نام CodeGear را تاسیس کرد تا این شرکت بتواند تمام انرژی خود را صرف محیط های برنامهنویسی مشهور خود یعنی دلفی و ++C بیلدر و...
کند.
بن اسمیت نام اولین مدیر CodeGear بود.
شرکت بورلند نیز فعالیتهای خود را در زمینه Application Lifecycle Management ادامه میدهد.
اولین محصول این شرکت، CodeGear Delphi 2007 هست که بسیاری از نقائص موجود در دلفی 2006 از جمله سرعت پائین آن در این محصول برطرف شده است و بعد از دلفی 7 میتوان از آن به عنوان محصولی مطمئن و قابل استفاده نام برد، هر چند که دلفی 2006 هم محصولی کارامد هست.
از دیگر محصولات CodeGear میتوان به Delphi 2007 For PHP اشاره کرد که تحول شگرفی در رابطه با استفاده از تکنولوژی Ajax در دلفی است.
C++ -2 زبان برنامهنویسی ++C (تلفظ می شود: سی پلاس پلاس) یک زبان برنامهنویسی کامپیوتری عمومی با قابلیتهای سطح بالا و سطح پایین میباشد.
این زبان دارای قابلیتهای کنترل نوع ایستا، نوشتار آزاد، چندمدلی، معمولا زبان ترجمه شده با پشتیبانی از برنامهنویسی ساختیافته، برنامهنویسی شیگرا، برنامه نویسی جنریک است.
زبان ++c یک زبان سطح میانی در نظر گرفته میشود.
این زبان دارای قابلیت زبانهای سطح بالا و پایین بصورت همزمان است.
زبان ++C توسط بییارنه استراستروپ دانمارکی در سال ۱۹۷۹ در آزمایشگاه های بل (Bell Labs) و بر مبنای زبان C ساخته شد و آن را "C با کلاس" نامگزاری نمودند.
در سال ۱۹۸۳ به ++c تغییر نام داد.
توسعه با اضافه نمودن کلاسها و ویژگیهای دیگری مانند توابع مجازی، سربارگزاری عملگرها، وراثت چندگانه، قالب توابع، و پردازش استثنا انجام شد.
این زبان برنامهنویسی در سال ۱۹۹۸ تحت نام ISO/IEC 14882:1998 استاندارد شد.
نسخه فعلی استاندارد این زبان ISO/IEC 14882:2003 است.
نسخه جدیدی از استاندارد (که به صورت غیررسمی C++0x نامیده میشود) در دست تهیه است.
تاریخچه زبان استراستروپ کار بر روی زبان «c با کلاس» را در سال ۱۹۷۹ آغاز کرد.ایده ساخت این زبان جدید در زمان کار بر روی تز دکترای خود به ذهن استراستروپ خطور نمود.
او متوجه شد که سیمولا دارای ویژگیهای مناسب برای ساخت برنامههای بسیار بزرگ است اما برای استفاده عملی بسیار کند است اما BCPL با وجود سرعت بسیار زیاد برای ساخت برنامههای بزرگ بسیار سطح پایین است.
زمانی که استراستروپ کار خود را در آزمایشگاه های بل (Bell Labs) آغاز نمود با مشکل تحلیل هسته unix با توجه به محاسبات توزیع شده روبرو شده بود.
با یادآوری تجربیات خود در دوران دکترا، او زبان C را با استفاده از ویژگیهای سیمولا گسترش داد.
C به این دلیل انتخاب شد که C یک زبان عمومی، سریع، قابل حمل، و بصورت گسترده در حال استفاده بود.
علاوه بر C و سیمولا زبانهای دیگری مانند ALGOL 68، ADA، CLU، ML نیز بر ساختار این زبان جدید اثر گذاشت.
در ابتداویژگیهای کلاس، کلاسهای مشتق شده، کنترل نوع قوی، توابع درون خطی، و آرگومان پیشفرض از طریق Cfront به C اضافه شد.
اولین نسخه تجاری در سال ۱۹۸۵ ارائه شد.در سال ۱۹۸۳ نام زبان از «C با کلاس» به ++C تغییر یافت.
ویژگیهای دیگر شامل توابع مجازی، سربارگزاری عملگر و نام تابع، ارجاعات، ثوابت، کنترل حافظه توسط کاربر بصورت آزاد، کنترل نوع بهتر، و توضیحات یک خطی به صورت BCPL با استفاده از «//» نیز به آن اضافه شد.
در سال ۱۹۸۵ اولین نسخه زبان برنامهنویسی ++C انتشار یافت و مرجع مهمی برای این زبان فراهم شد در حالی که هیچ استاندارد رسمی وجود نداشت.
در سال ۱۹۸۹ ویرایش 2.0 از زبان ++C ارائه شد.
ویژگیهای جدیدی مانند ارثبری چندگانه، کلاسهای انتزاعی، اعضای ایستای توایع، اعضای ثابت تابع، و اعضای حفاظت شده به آن اضافه شد.
در سال ۱۹۹۰ «راهنمای مرجع ++C » منتشر شد.
این کار بنیان استانداردهای بعدی شد.
آخرین ویژگیهای اضافه شده شامل موارد زیر بودند: قالب توابع، استثناها، فضاهای نام، تبدیلات جدید، و یک نوع داده منطقی.در حین تکامل ++C کتابخانه استاندارد نیز بوجود آمد.
اولین نسخه کتاب استاندارد شامل کتابخانه جریانات I/O بود که جایگزین printf و scanf شد.
در ادامه مهمترین ویژگی اضافه شده Standard Template Library بوده است.
استاندارد زبان بعد از سالها کار کمیته مشترک ANSI–ISO در سال ۱۹۹۸ ++C را استاندارد نمودند (ISO/IEC 14882:1998).
به مدت چند سال پس از انتشار استاندارد این کمیته گزارشات معایب را مورد بررسی قرار داده نسخه اصلاح شده استاندارد ++C منتشر شد.
در سال ۲۰۰۵ گزارشی فنی بنام «گزارش فنی کتابخانه ۱» (که معمولا بصورت اختصار TR1 خوانده میشود) انتشار یافت.
با وجود این که گزارش بخشی رسمی از استاندارد نیست ولی بخشهایی را به آن اضافه نموده که انتظار میرود در نسخههای بعدی استاندارد در نظر گرفته شود.
پشتیبانی از این گزارش در حال افزایش بین تمام کامپایلرهای فعلی است.در حالی که ++C به هیچ موسسهای وابسته نیست این مستندات بصورت آزادانه در دسترس نیستند.
نام ++C این نام منسوب به ریک ماسکیتی (اواسط ۱۹۸۳) است و برای اولین بار در دسامبر سال ۱۹۸۳ به کار برده شد.
در طول مدت تحقیق این زبان بنام «C جدید» و بعدها «C با کلاس» خوانده شد.
در علوم کامپیوتر هنوز هم ++C به عنوان ابرساختار C شناخته میشود.
آخرین نام از عملگر ++ در زبان C (که برای افزایش مقدار متغیر به اندازه یک واحد بکار میرود) و یک عرف معمول برای نشان دادن افزایش قابلیتها توسط + ناشی گشته است.
با توجه به نقل قولی از استراستروپ: «این نام ویژگیها تکاملی زبان در C را نشان میدهد.» +C نام زبانی غیرمرتبط به این زبان است.استراستروپ مبدا این نام را در فصل اول کتاب خود «زبان برنامهنویسی ++C» اشاره مینماید که معنی دیگر ++C را میتوان در ضمائم کتاب جرج ارول بنام ۱۹۸۴ یافت.
در سه قسمت از زبان تخیلی Newspeak «کلمات C» برای اشاره به لغات فنی و حرفهای بکار میرود.
«دو علامت +» برای ایجاد صفات عالی از صفات Newspeak به کار میرفت بنابراین ++C به معنای زبانی با بیشترین شباهت به C است.وقتی که به صورت خصوصی از ریک ماسکیتی در مورد این اسم سوال شد او در جواب گفت که این اسم بصورت خودمانی در بین آنها به کار میرفته است و تصور نمیکردند که این نام بصورت نام رسمی این زبان درآید.
توسعه آینده ++C همچنان در حال تکامل است تا نیازهای آینده را پاسخگو باشد.
نسخه جدید استاندارد ++C در حال بررسی است و تحت عنوان C++0x است که انتظار میرود در سال ۲۰۱۰ منتشر گردد.
تغییرات کنونی نشان میدهد که که همچنان به صورت چندمدلی ++C تاکید میگردد.
توسعههای مهم پشتیبانی از چندرشتهای و مفاهیمی برای راحت نمودن کار با قالبهاست.
اضافه نمودن ویژگی جمعآوری زباله به آن به شدت مورد بحث است.
Boost.org گروهی برای بیشترین استفاده از ویژگیهای فعلی ++C میباشد.
آنها ویژگیهای تابعی و فرابرنامهنویسی آن را گسترش میدهند و در مورد ++C به کمیته استاندارد نصیحتهایی نموده است که کدام ویژگیها خوب عمل نمیکنند و کدامها نساز به توسعه دارند.
فلسفه در کتاب «طراحی و تکامل ++C» بییارنه استراستروپ قوانین مورد استفاده در طراحی ++C را بیان مینماید.
دانستن این قوانین به فهمیدن نحوه عملکرد ++C و چرایی آن کمک میکند.
جزئیات بیشتر در کتاب قابل دسترسی است:++C طراحی شده است تا یک زبان عمومی با کنترل نوع ایستا و همانند C قابل حمل و پربازده باشد.++C طراحی شده است تا مستقیما و بصورت جامع از چندین شیوه برنامهنویسی (برنامهنویسی ساختیافته، برنامهنویسی شیگرا، انتزاع داده، و برنامهنویسی جنریک) ++C طراحی شده است تا به برنامهنویس امکان انتخاب دهد حتی اگر این انتخاب اشتباه باشد.
++C طراحی شده است تا حداکثر تطابق با C وجود داشته باشد و یک انتقال راحت از C را ممکن سازد.
++C از بکاربردن ویژگیهای خاص که مانع از عمومی شدن است خودداری مینماید.
++C از ویژگیهایی که بکار برده نمیشوند استفاده نمیکند.
++C طراحی شده است تا بدون یک محیط پیچیده عمل نماید.
کتابخانه استاندارد در سال ۱۹۹۸ استاندارد ++C شامل دو بخش هسته زبان و کتابخانه استاندارد ++C است.
این کتابخانه شامل بیشتر بخشهای STL و کتابخانه استاندارد C است.
بیشتر کتابخانههای ++C در استاندارد وجود ندارند و یا استفاده از تعریف قابلیت پیوند کتابخانهها را میتوان در زبانهایی مانند فرترن، C، پاسکال، بیسیک نوشته شوند.
البته با توجه به ویژگیهای کامپایلر مشخص خواهد شد که کدام زبان را میتوان استفاده نمود.
کتابخانه استاندارد ++C شامل کتابخانه استاندارد C با یک سری تغییرات برای بهبود عملکرد است.
بخش بزرگ بعدی این کتابخانه STL است.
STL شامل ابزار بسیار قدرتمندی مانند نگهدارندهها (مانند vector و list)، تکرارکنندهها (اشارهگرهای عمومی شده) برای شبیهسازی دسترسی مانند آرایه الگوریتمهایی برای جستجو و مرتبسازی در آنها وجود دارند.
نقشهها (نقشههای چندگانه) (آرایه شرکتپذیر) و مجموعهها (مجموعههای چندگانه) واسطهای عمومی فراهم میسازند.
در نتیجه با استفاده از قالب تابع، الگوریتمهای جنریک با هر نگهدارنده و دارای تکرارکننده عمل نماید.
همانند C ویژگیهای کتابخانه را میتوان با استفاده از شبه دستور include# شامل یک سرآیند استاندارد اضافه نمود.
c دارای ۶۹ کتابخانه استاندارد است که ۱۹ تا از آنها نامناسب تشخیص داده شدهاند.استفاده از کتابخانه استاندارد - مانند std::vector یا std::string به جای آرایههای C- موجب ایجاد برنامههای مطمئنتر شده است.STL در آغاز محصولی جداگانه از HP و سپس SGL پیش از ادغام در کتابخانه استاندارد ++C بوده است.
استاندارد عبارت STL را بکار نمیبرد بلکه آن را بخشی از کتابخانه میداند اما مردم هنوز هم آن را برای جداسازی بخشهای مختلف کتابخانه با این نام بکار میبرند.(جریانهای ورودی/خروجی، جهانیسازی، تشخیص، زیرمجموعه کتابخانه C) بیشتر کامپایلرها کتابخانه استاندارد و STL را پیادهسازی مینماید.
پیادهسازیهای مستقلی نیز همانند STLport نیر وجود دارند.
پروژههای دیگر نیز پیادهسازیهای خود را از STL با توجه به اهداف خود بوجود میآورند.
ویژگیهای معرفی شده در ++C در مقایسه با C زبان ++C ویژگیهای جدیدی را معرفی نموده است مانند تعریف متغیر به عنوان عبارت، تغییر نوعهای همانند تابع، new/delete، نوع داده bool، توابع درونخطی، آرگومان پیشفرض، گرانبارسازی عملگر و تابع، فضای نام و عملگر تعیین حوزه ::، کلاسها (شامل تمام ویژگیهای مربوط به کلاسها همانند وراثت، اعضای تابع، توابع مجازی، کلاسهای انتزاعی، و سازندهها)، قالبها، پردازش استثنا، کنترل نوع زمان اجرا، عملگرهای سربار شده ورودی (>).
برخلاف باور عموم ++C نوع داده ثابت را معرفی ننموده است.
کلمه const کمی پیش از استفاده از این کلمه در ++C توسط زبان C بصورت رسمی بکار گرفته شد.در بعضی حالات ++C تعداد کنترل نوع بیشتری نسبت به زبان C انجام میدهد.
(برای اطلاعات بیشتر بخش «ناهماهنگی با C» را در پایین ببینید)توضیحات با استفاده از // قبل از زبان C در زبان BCPL معرفی شده بود که مجددا در زبان ++C به کار گرفته شد.
بعضی ویژگیهای ++C بعدا توسط C به کار گرفته شد مانند نحوه تعریف for، توضیحات به شکل ++C (با استفاده از //)، و کلمه inline با وجود اینکه تعریف این کلمه در C99 با تعریف آن در زبان ++C هماهنگی ندارد.
همچنین در C99 ویژگیهایی معرفی شده است که در ++C وجود ندارند مانند ماکروهای قابل تغییر و استفااده بهتر از آرایهها به عنوان آرگومان.
بعضی کامپایلرها این ویژگیها را پیاده نمودهاند اما در بقیه این ویژگیها موجب ناهماهنگی میگردد.
پیش پردازنده ++C بطور عمومی در سه فاز ترجمه میگردد: پیشپردازنده، ترجمه به کد object، پیوند (که دو مرحله آخر به عنوان عمل کامپایل شناخته میشود.) در اولین مرحله در پیشپردازنده، شبهدستورات پیشپردازنده تغییرات لغوی بر روی کد منبع ایجاد مینمایند و آن را به به مراحل دیگر تحویل میدهند.
شبه دستورات پیشپردازنده با استفاده از کاراکتر # قبل از هر گونه فضای خالی آغاز گشته و رشتههایی را در کد منبع با فایل یا رشتههای دیگر با توجه به قوانین تعریف گشته توسط برنامهنویس جایگزین مینماید.
این دستورات معمولا اعمال زیر را انجام میدهند: جایگزینی ماکروها، شمول فایلهای دیگر (برخلاف ویژگی سطح بالاتر مانند شمول ماجولها/پکیجها/یونیتها/کامپوننتها)، کامپایل شرطی و/یا شمول شرطی.
به عنوان مثال: #include که این دستور تمام سمبلها در فایل سرایند کتابخانه استاندارد iostream را در فایل منبع وارد میسازد.
کاربرد معمول دیگر به عنوان ماکرو خوانده میشود: #define MY_ASSERT(x) assert(x) که کد (MY_ASSERT(x را با (assert(x در فایل منبع جایگزین مینماید.
که این جایگزینی امکان کنترل استفاده از این تابع را در اختیار برنامهنویس قرار میدهد.استفاده از ماکروها در عمل چندان توصیه نمیگردد چرا که امکان کنترل نوع آرگومانها را از بین برده در نتیجه ممکن است اشتباهاتی را وارد کد منبع نماید.
طریقه دیگر برای انجام این کار استفاده از توابع درونخطی است.علاوه بر شبهدستورات معمول تعدادی شبه دستور برای کنترل جریان کامپایل وجود دارد که امکان شمول یا عدمشمول قطعهای کد یا سایر ویژگیهای کامپایل را در اختیار ما قرار میدهد.دستورات پیشپردازنده برای کاربردهای عددی نیز به کار میرود که هماکنون استفاده از const به جای #define ترجیح داده میشود.
این کار علاوه بر ایجاد کنترل نوع قوی مانع از گمراهی در فضاهای نام میگردد.هدف کمیته استانداردسازی از بین بردن پیشپردازنده است اما با توجه به خصوصیت مدولار ++C بعید به نظر میآید که این حذف امکانپذیر باشد.
قالبها قالبها متفاوت با ماکروها هستند.
در حالی که هر دوی این ویژگیهای زمان کام پایل برای ایجاد کامپایل شرطی استفاده میشوند قالبها محدود هب تغییرات لغوی و متنی نیستند.
قالبها با آگاهی از معنا و سیستم نوع در زبان استفاده شده و سایر ویژگیهای زمان کامپایل میتوانند از عملیات سطح بالا برای کنترل ترتیب اجرا براساس نوع پارامترها استفاده نمایند.
ماکروها کنترل خود را بر کامپایل از طریق ویژگیهای از پیش تعیین شهد انجام میدهند ولی قادر به ایجاد انواع جدید و کنترل نوع نیستند و فقط محدود به تغییرات متنی پیش از کامپایل هستند.
به زبان دیگر ماکروها کنترل خود را با استفاده از نشانههای از پیش تعیین شده انجام میدهند اما همانند قالبها نمیتوانند نشانهها را خود ایجاد نمایند.
قالبها ابزاری برای چندریختی ایستا و برنامهنویسی جنریک است.
علاوه بر این قالبها یک ویژگی تورینگ-کامل هستند که به این معناست که هر برنامه قابل محاسبه توسط کامپیوتر را میتوان با استفاده از فرابرنامهنویسی قالبها نوشت.بطور خلاصه استفاده از قالبها به معنای نوشتن هر تابع یا کلاس باشتفاده از تمامی انواع ممکن است که در قالب آن را پیش از کامپایل معین نمیکنیم.
اشیا سی++ چندین ویژگی شیگرا را زبان سی معرفی نمود معرفی کلاس چهار ویژگی که در زبانهای شیگرا و بعضا غیر شیگرا حضور دارد یعنی انتزاع، بستهبندی، وراثت، و چندریختی را فراهم کرد.
اشیا نمونههای ساخته شده از کلاس در زمان اجرا هستند.
میتوان کلاس را نمونهای از قالبها دانست که چندین مورد از آنها بوجود میآید.
بستهبندی بستهبندی به معنای جمعآوری عملیات و داده در یک محل میباشد.
سی++ بستهبندی را با ایجاد امکان تعریف هر کلاس به صورت public، private، protected پیادهسازی نموده است.
اعضای private فقط توسط اعضای کلاس و یا کلاسها دقیقا بیان شده (friend) قابل دسترسی هستند.
اعضای protected توسط کلاسهای ارث برده شده و اعضای کلاس و کلاسهای friend قابل دسترسی هستند.در تعاریف شیگرا باید تنها توابعی بستهبندی گردند که باید از نحوه پیاده سازی این نوع بخصوص اطلاع داشته باشد.
سی++ این ویژگی را با استفاده از توابع عضو و توابع دوست فراهم نموده اما قطعی نکرده است.
در سی++ این امکان وجود دارد که تمام نوع را عمومی تعریف نمایند اما در صورتی که نیاز باشد فقط بخشی از آن عمومی گردد در نتیجه این زبان نه تنها شیگرا است از مدلهای ضعیفتر همانند برنامهنویسی مدولار پشتیبانی مینماید.عموما توصیه بر این است که تمام اعضا به صورت خصوصی یا حفاظت شده تبدیل گردند و فقط توابعی که باید توسط دیگر کلاسها به عنوان واسط استفاده شوند عمومی باقی بمانند.
وراثت وراثت این امکان را ایجاد میکند که یک نوع ویژگی دیگر انواع را داشته باشد.
وراثت از یک کلاس پایه میتواند عمومی، خصوصی یا حفاظت شده باشد.
این تعیین سطح دستزسی مشخص میسازد آیا کلاسهای نامربوط و یا مشتق شده میتوانند به اعضای عمومی یا حفاظت شده کلاس پایه دسترسی داشته باشند.
تنها وراثت عمومی به معنای وراثت به کار رفته بصورت عموم است.
دو نوع دیگر وراثت به ندرت مورد استفاده قرار میگیرند.
اگر تعیینکننده سطح دسترسی حذف شود سطح دسترسی برای کلاس خصوصی و برای ساختمان به صورت عمومی تعریف میگردد.
کلاسهای پایه ممکن است یثورت مجازی تعریف شوند که به آن وراثت مجازی گویند.
وراثت مجازی تضمین میکند که فقط یک نمونه از کلاس پایه وجود داشته باشد و مشکلاتی همانند مشکلات وراثت چندگانه بوجد نیاید.وراثت چندگانه یکی از ویژگیهای مورد بحث در سی++ است.
وراثت چندگانه امکان اشتقاق از چند کلاس پایه را فراهم مینماید که موجب بوجود آمدن گراف رابطه وراثت بسیار پیچیده است.
به عنوان مثال «گربه پرنده» میتواند از کلاس «گربه» و کلاس «پستانداران پرنده» ارث برد.
در زبانهای دیگر مانند سیشارپ و جاوا به صورت دیگری ویژگی مشابه را پیادهسازی مینماید هر کلاس میتواند از چندین واسط اشتقاق یابد اما فقط یک کلاس پایه برای اشتقاق وجود دارد(واسطها برخلاف کلاس پایه فقط تعریف هستند و هیچگونه پیادهسازی را شامل نمیگردند).
چندریختی امکان استفاده از یک واسط برای چندین پیادهسازی فراهم مینماید و اشیا در شرایط مختلف رفتار مختلفی از خود نشان میدهند.سی++ دو نوع چندریختی در اختیار برنامهنویس قرار میدهد: چندریختی زمان کامپایل و چندریختی زمان اجرا.
چندریختی زمان کامپایل امکان تصمیمگیریهای زمان اجرا را فراهم نمیسازد و چندریختی زمان اجرا اغلب موجب پایین آمدن بازدهی میگردد.
چندریختی ایستا چندریختی ایستا شامل گرانبارسازی تابع، گرانبارسازی عملگر، آرگومان پیشفرض، و قالب کلاسها و تابع است.
گرانبارسازی تابع گرانبارسازی تابع امکان تعریف چندین تابع با نام یکسان اما با تعداد آرگومانهای متفاوت را فراهم میسازد.
این توابع از طریق تعداد پارامترها یا نوع رسمی آنها شناسایی میگردند.
در نتیجه یک تابع ممکن است با توجه به موقعیت استفاده معنای مختلفی داشته باشد.
نوع داده برگشتی برای تشخیص توابع از یکدیگر مورد استفاده قرار نمیگیرد.
گرانبارسازی عملگر بطور مشابه گرانبارسازی عملگر امکان استفاده از یک عملگر مشخص میشود که عملکرد متفاوتی با توجه به عملوندهای خود دارد.
این عملگرهای گرانبار شده موجب فراخوانی تابع مشخصی متناسب با آن موقعیت میگردند.
گرانبارسازی عملگر ترتیب اجرا یا تعداد عملوندهای یک عملگر را تغییر نمیدهد.
عملگرهای .
:: .* ?
نمیتوانند گرانبار شوند.
ساختار برنامه ها ساختار برنامه ها در این زبان بدین صورت است که همانند زبان سی، هر برنامه بایستی یک تابع اصلی (main) به عنوان بدنه برنامه داشته باشد.
هر برنامه معمولا از تعداد زیادی فایل تشکیل می شود که به هم الحاق می گردند (با دستور include) و به این فایل های الحاقی سرآیند (Header) میگوییم.
فایل های الحاقی حاوی کد ها یا نسخه های اجرایی کلاس ها (مجموعه متغیر ها و توابع) می باشند که در بدنه اصلی برنامه از آنها استفاده می شود.
معمولاً هر کلاس (که تعریف یک نوع داده ای با متد های مربوط به آن است) را در یک سرآیند مینویسند.
هر سرآیند که معمولا تنها تعاریف (معرفی) کلاس را در خود دارد به همراه فایل های پیاده سازی به زبان ++C یا پیاده سازی های کامپایل شده (به صورت فایل اشیا مانند dll یا so یا ...
) می تواند به کار برده شود.
به مجموعه های یکپارچه ای از کلاس های پیاده سازی شده (به صورت فایل های سرآیند با پیاده سازی های کد یا اشیای زبان ماشین) که برای برنامه نویسی به کار می روند، یک کتابخانه ++C گفته می شود و قدرت اصلی این زبان در امکان به کارگیری کتابخانه های آماده می باشد.
کتابخانه های بزرگ ++C مانند STL، MFC، QT و ...
مجموعه قدرتمندی برای تولید برنامه در این زبان ایجاد کرده اند.
محیطهای برنامه نویسی یک برنامه به زبان ++C می تواند در محیط های ++Turbo C++ , Borland C و ++Dev C نوشته شود.
این محیطهای برنامهنویسی، همراه با یک کمپایلر عرضه میشوند که کار تبدیل برنامه به فایل اجرایی را راحت میکند.
C# -3 سیشارپ همچون زبان برنامهنویسی جاوا زبانیست شئگرا و سطح بالا (high level).
محصول شرکت Microsoft و بر پایه .NET از آنجایی که شئگرائی و سطح بالا بودن از ابزارهای مدیریّت مؤثّر و کارآمد پیچیدگی در فضای پیچیدۀ اینترنت مدرن می باشند، در واقع میشود جاوا و سیشارپ را از جمله زبان های اصلی برای ایجاد و انجام برنامههای کاربردی تحت وب (web applications) و خدمات وب دانست.بر اساس ادّعای شرکت مایکروسافت، این زبان در سال 2000 توسط تیمی به سرکردگی آندرس هلزبرگ و نیز سکات ویلتاموث ساخته شد.
سیشارپ که فقط برای دات نت است در مجموعه NET Platform SDK.
ارائه گردید که در محیط های برنامه نویسی استودیوی بصری دات نت (Visual Studio .NET)، در نسخههای 2003 و 2005 آن موجود است.
دستورات زبان سیشارپ مانند جاوا سطح بالا تر از C و ++C است و از VB ساده تر.
این زبان همانند پیدایش زبان C انقلابی را در امر برنامه نویسی موجب شد، چراکه به طور همزمان میتواند امکانات سطح پاین و سطح بالا را به بهترین شکل پشتیبانی کند.
در طراحی این زبان برای جلوگیری از پیدایش Bug در زمان اجرا بسیار تلاش شده و اجازه هر کاری (مانند ساخت اشاره گر) را نمیدهد(مگر اینکه اصرار بر انجام این کارها داشته باشید) سکّوی دات نت در ماه ژوئن سال 2000 میلادی بود که شرکت مایکروسافت ابداع و ایجاد سکّوی (platform) جدید برنامه نویسی خود را موسوم به دات نت (Microsoft .NET) اعلام نمود.
در جهت بهبود سکّوهای پیشین مایکروسافت،دات نت مدل تازهای را برای ایجاد نرم افزار های کاربردی ارائه میدهد که در آنجا زبان های گوناگون می توانند در کنار هم قرار گیرند و با یکدیگر به همکاری بپردازند.
این درست مدل کوچکتری ست از تمامی فضای اینترنت بدانگونه که عوامل گوناگون میتوانند در سطوحی گسترده به همکاری اقدام کنند.
انعطاف پذیری سی شارپ سی شارپ زبانی است کاملا شی گرا و بر پایه .NET Framework این زبان مانند بسیاری از زبانهای شی گرای دیگر از فایل های کتابخانه ای Net.
استفاده میکند و همچنین فقط بر روی سیستم عامل Microsoft Windows XP SP2(یا بعد از آن) که .NET Framework بر روی آن نصب باشد اجرا میشود سی شارپ به کلی برای دات نت طراحی شده و علاوه بر تولید پروژه های Console Programs در تولید Windows Application هم بسیار قوی است سی شارپ بر پایه نظریه اولیه سی طراحی شده و همچنین بسیاری از صفات خود را از C++ و Java و Delphi به ارث برده است ولی به گفته مایکروسافت بر پایه C برای رقابت با Java و به سادگی VB طراحی شده است.
در کل سی شارپ یک زبان مدرنیزه شی گرا میباشد که در محیط Visual Studio بسیار قدرت یافته است .
مثالی از سی شارپ تمام کدهای سی شارپ بر پایه کلاس ها تعریف میشوند یک برنامه ساده سی شارپ این چنین است : public class MyClass { public MyClass() { // implementation } } برنامه ساده ای که متنی را در خرجی چاپ میکند چنین در سی شارپ نوشته میشود hello.cs: public class Program { public void Main() { System.Console.WirteLine("Hello , World"); } } منبع اطلاعات در سی شارپ سی شارپ میتواند به خوبی با Database ها ارتباط برقرار کرده و آنها را ویرایش و یا از آنها اطلاعات بگیرد این ویژگی که در Visual Studio .NET به خوبی پشتیبانی شده کار را برای کاربر بسیار راحت کرده تا جایی که فقط با چند دستور ساده میتوان با منبع اطلاعات ارتباط برقرار کرد.
در این زبان از بانک اطلاعات به صورت Connectionless استفاده میشود.
به این شکل که کل بانک به داخل یک Dataset بر روی حافظه اصلی کپی میشود و سپس استفاه میشود.این روش به منظور کاهش ترافیک شبکه طراحی شده است.
فایلهای تولیدی در سی شارپ فایلهایی که بیشتر با کاربر سر و کار دارند عبارتند از : فایلهای با پسوند .Sln : این فایل سطح بالای Solution است که برای هر برنامه یک فایل از این نوع موجود است .
هر فایل Solution یک یا چند فایل پروژه را در خود دارد.
فایلهای با پسوند .Csproj: این یک فایل پروژه C# است .هر فایل پروژه یک یا چند فایل سورس دارد .
فایل های سورس در یک پروژه باید به یک زبان برنامه نویسی نوشته شود .
فایلهای با پسوند Cs: این یک فایل سورس است و کد برنامه در این فایل نوشته می شود و این فایل شامل کدی است که ویژوال استودیو به صورت خود کار ایجاد می کند .
فایل Assemblyinfo.cs: این یک فایل سورس دیگر است با این تفاوت که می توان از این فایل برای اضافه کردن مواردی مثل اسم نویسنده و تاریخ نوشتن برنامه و امثال آن به برنامه استفاده می شود.
فایل .Ico: این آیکون برنامه است .آیکونی که در زمان اجرای برنامه در نوار وظیفه قرار می گیرد.
ابزارهای دیگر در سی شارپ سی شارپ نه فقط مخصوص ساخت یک برنامه DOS یا Windows Form است بلکه میتوان با آن نرم افزارهای کاربردی تری مانند Movie Collection ها را به صورت سفارشی کمپایل کرد حتی قدرت بسیار بالای این زبان در ساخت Screen Saver ها هم بسیار زبان زد است که این خود نوعی مزیت نسبت به C++ یا دیگر نرم افزارهای برنامه نویسی به شمار میرود ولی این زبان برای این کارهای ساده طراحی نشده است.
از جمله کارهایی که این زبان میتواند انجام دهد طراحی نرم افزار برای SmartPhone,Pocket PC ,Windows CE, Linux است.
در ضمن این زبان برای طراحی وب سایت به زبان ASP.Net نیز به کار برده میشود.
همچینین برای کار با Registry و فایلها مناسبترین زبان است.
در زمینه کار با بانکهای اطلاعاتی و APIها نیز بسیار قوی است BASIC -4 Basic فرزند دردانه بیل گیتس به جرات مى توان ادعا کرد که در دنیاى امروز کمتر کسى را مى توان یافت که نام و آوازه «بیل گیتس» رئیس و بنیانگذار مایکروسافت و ثروتمندترین مرد جهان را نشنیده باشد.
اما دانستن این موضوع جالب است که پیش از مایکروسافت نام بیل گیتس با «بیسیک» (Basic) عجین بوده است و این ماجرا به زمان دانشجویى گیتس و دوستش «پل آلن» در ۱۹۶۴ بازمى گردد و در واقع همکارى مشترک آنها در توسعه بیسیک بود که چند سال بعد منجر به تاسیس مایکروسافت شد.
این دو با تولد اولین بیسیک در سال ۱۹۶۴ در کالج دارتموث به تلاش در توسعه آن همت گماشتند و در این راه با زیرکى و دوراندیشى مثال زدنى با طراحى انواع مفسرها و مترجم هاى بیسیک توانستند آن را به عنوان یکى از فراگیرترین و کاربردى ترین زبان هاى کامپیوترى تا امروز مطرح سازند.
بیسیک اکنون ۴۰ ساله است و هنوز هم گیتس در مایکروسافت آن را تر و خشک مى کند و مانند فرزندى دردانه به رشد و ترقى آن اهمیت مى دهد.ظهور میکروکامپیوترها در سال ۱۹۷۵ از یک سو و ارائه بیسیک پیشرفته توسط مایکروسافت از سوى دیگر خیلى سریع سبب شهرت بیسیک به مثابه یک زبان کاربردى که به صورت رایگان بر روى همه کامپیوترها قابل نصب بود، گردید.
در واقع بیسیک به علت ساختار مطلوبش پیش نیاز یادگیرى همه زبان هاى کامپیوترى شد.
مقاله اى که پیش رو دارید، بیل گیتس در جشن تولد ۲۵ سالگى فرزندش بیسیک (یعنى ۱۵ سال پیش) در مجله بایت منتشر کرد و طى آن براى اولین بار به شرح ماجراى شکل گیرى و رشد زبان بیسیک به همراه پل آلن پرداخته است، که مقایسه داده هاى آن با امروز که بیسیک به سن چهل سالگى رسیده و کامپیوترهاى شخصى به اوج پیشرفت و همگانى شدن نایل آمده اند، براى خواننده علاقه مند خالى از لطف نیست.از زمان اجراى اولین برنامه بر روى یک کامپیوتر انگلیسى زبان در سال ۱۹۴۸ تاکنون محاسبات وارد مرحله جدیدى شده است.
فقط در طول ۱۵ سال شاهد رشد و ترقى کامپیوترهاى ۸ بیتى با ۴ کیلوبایت رم به کامپیوترهاى ۳۲ بیتى با ۴ مگابایت رم چه در زمینه صنعت و چه در زمینه علوم بوده ایم.با توجه به رشد بسیار گسترده در زمینه سخت افزار، زبان بیسیک نیز بیست و پنجمین سال تولد خود را پشت سر مى گذارد و مفسر آن ۱۵ سال است که میکروکامپیوترهاى میلیون ها نفر را قابل دسترسى کرده است.متاسفانه در ابتدا بیسیک خوب شناخته نشد، در همین حال بیشتر از هر زبان دیگرى قابل دسترسى بوده و هست چرا که مجاناً بر روى هر کامپیوترى نصب مى شود.
قدرت و توانایى، سادگى استفاده از یک مفسر، مدیریت قوى، گستردگى و همه منظوره بودن، نوع انگلیسى لغات کلیدى و ترکیبات و آزادى بیسیک، همگى باعث تجربه بیشتر برنامه نویسان مى شود و مى تواند به عنوان یک زبان ایده آل به مبتدیان در شناخت بهتر کامپیوترشان کمک کند.
با توجه به سرگذشت بیسیک طى سال هاى طولانى و با وجود تکنولوژى قوى سیستم عاملى مانند OS/۲ و ویژگى برنامه نویسى موضوعى مى توانید به خوبى شاهد چگونگى حضور و رشد بیسیک تا به امروز باشید.بیسیک بدون هیچ نیازى، مستقلاً به عنوان وسیله اى براى تبادل اطلاعات بین مردم و کامپیوتر ایجاد شد و در سال ۱۹۶۲ یکى از ریاضیدانان کالج دارتموث به نام پروفسور «توماس کورتس» طرحى را تسلیم «جان کمنى» رئیس کالج کرد.
در این طرح تمامى دانشجویان این کالج موظف به آموختن کامپیوتر در دوره ۴ ساله تحصیلشان بودند.کامپیوترهاى دسته گراى آن زمان چنین انتظارى را غیرممکن مى کردند چرا که اگر برنامه ساده اى به طور صحیح ترجمه مى شد کامپیوتر براى درک آن گاهى اوقات به روزها وقت نیاز داشت در نتیجه چنین برنامه اى تنها مى توانست نتیجه یک محاسبه را به عنوان جواب برگرداند و شخص برنامه نویس هرگز نمى توانست اجراى برنامه را ببیند.
کمنى و کورتس براى گسترش تحقیقات خود به آزمایشگاه هاى «هیت» و «بل» رفته و در آنجا سیستم عامل چند کاربره اى را براى کامپیوتر جدیدى که قرار بود به زودى تحویل کالج شود ساختند.
در همین زمان آنها به دانشجویان پیشنهاد کردند که زمان استفاده از کامپیوتر را بین خودشان تقسیم کنند اما به دلیل عدم وجود یک زبان ساده براى صحبت با ماشین دانشجویان به ندرت از کامپیوتر کالج استفاده مى کردند.
متاسفانه «فورترن» و «آلگول» نمى توانستند امکانات مناسب و آسانى را براى دانشجویان فراهم کنند لذا کد و دستورالعمل نمادى همه منظوره مخصوص افراد مبتدى (بیسیک) به عنوان یک ترکیب ساده و بهتر از فورترن و آلگول توسط دانشجویان کالج دارتموث ساخته شد.در اول ماه مى سال ۱۹۶۴ دانشجویان کالج دارتموث با اعلان معروف READY> در ترمینال هاى راه دورشان آشنا شدند.
بدین ترتیب آنها مى توانستند برنامه هاى ساده اى نوشته و آنها را براى ترجمه و اجرا انتقال دهند.
کمنى و کورتس به تولد بیسیک در کتابشان به نام «برگشت به بیسیک» اشاره کرده اند.
(انتشارات «ادیسون وزلى»، ۱۹۸۵)