سی شارپ

این زبان برپایه سادگی، مدرن بودن، همه منظوره و شی گرا بودن ساخته شد.Anders Hejlsberg، طراح زبان برنامه نویسی دلفی، سرپرستی تیم طراحان زبان #C را بر عهده داشت.این زبان دارای دستوری شی گرا مشابه ++C است و به شدت از زبان‌های جاوا و دلفی تاثیر پذیرفته‌است.در ابتدا نام این زبان COOL بود که مخفف C like Object Oriented Language بود، هر چند در جولای 2000، زمانی که ماکروسافت پروژه را عمومی اعلام کرد، اسم آن به #C تغییر پیدا کرد.آخرین نسخه آن نسخه 3 است که از ویژوال استدیو 2008 استفاده می‌کند. نسخه بعدی 4 است که در دست ساخت است.

اهداف طراحی زبان

- استاندارد ECMA این اهداف طراحی زبان را برای #C بر آورده می‌سازد:

- سی شارپ یک زبان برنامه سازی ساده،مدرن،برای اهداف عمومی و شی گرا است.

- به دلیل اهمیت داشتن موضوع نیرومندی و دوام و بهره وری برنامه نویس،زبان دارای چک کننده Strong Type ، چک کننده مرزهای آرایه، تشخیص حالتهایی که یک متغیر مقدار دهی اولیه نشده‌است،قابلیت انتقال کدها و Garbage Collection خودکار است.

- این زبان برای استفاده در اجزای توسعه نرم افزار برای دستیابی به مزایای سیستم‌های توزیعی در نظر گرفته شده‌است.

- قابلیت انتقال برنامه نویس بسیار مهم است،خصوصاً برای آن دسته از برنامه نویسانی که با زبان‌های C و C++ آشنا هستند.

- پشتیبانی از این زبان برای بین المللی شدن بسیار مهم است.

- زبان سی شارپ برای نوشتن برنامه‌ها برای سیستمهای تعبیه شده و میزبان در نظر گرفته شده‌است، از سیستم عامل‌های پیچیده بسیار بزرگ گرفه تا توابع اختصاصی بسیار کوچک.

- هر چند برنامه‌های نوشته شده با #C طوری هستند که از لحاظ حافظه و پردازنده مورد نیاز مقرون به صرفه باشند، ولی خود زبان از لحاظ اندازه و کارایی به خوبی زبان‌های C و اسمبلی نیست.

 

تاریخچه

در سال 1999، شرکت سان اجازه استفاده از زبان برنامه نویسی جاوا را در اختیار ماکروسافت قرار داد تا در سیستم عامل خود از آن استفاده کند.جاوا در اصل به هیچ پلت فرم یا سیستم عاملی وابسته نبود، ولی ماکروسافت برخی از مفاد قرار داد را زیر پا گذاشت و قابلیت مستقل از سیستم عامل بودن جاوا را از آن برداشت.شرکت سان پرونده‌ای علیه ماکروسافت درست کرد و ماکروسافت مجبور شد تا زبان شی گرای جدیدی با کامپایل جدید که به ++C شبیه بود را درست کند. در طول ساخت دات نت، کلاس‌های کتابخانه‌ای با زبان و کامپایلر SMC نوشته شدند.در سال 1999 آندرس هلزبرگ گروهی را برای طراحی زبانی جدید تشکیل داد که در آن زمان نامش Cool بود و همانند C بود با خواص شی گرایی. ماکروسافت در نظر داشت اسم این زبان را تا آخر Cool قرار دهد، ولی به دلیل مناسب نبودن برای اهداف تجاری این کار را نکرد. در ارائه و معرفی رسمی .NET در PDC در سال 2000 این زبان به سی شارپ تغییر نام یافت و کتابخانه کلاس‌ها و runtime در ASP.NET به#C منتقل شدند. مدیر و سرپرست طراحان در ماکروسافت آندرس هلزبرگ بود که تجربه قبلی او در طراحی Framework و زبان‌های برنامه سازی++Borland , Delphi, TurboPascal, Visual C به آسانی در دستورالعمل‌های سی شارپ قابل رویت است و به همان خوبی در هسته CLR.

ویژگی‌ها

برخی از تفاوت‌های زبان سی شارپ با C و ++C عبارتند از:

- هیچ تابع یا متغیر سراسری(Global) وجود ندارد، تمام متدها و اعضا بایستی در داخل کلاس‌ها تعریف شوند.این امر ممکن است، هر چند برای استفاده از متغیر‌ها و توابع عمومی باید از متدها و متغیرها در کلاس‌های عمومی استفاده کرد.

- متغیر‌های عمومی، بر خلاف C و ++C ، نمی‌توانند بلاک‌های پیوستی را در بر بگیرند.

- سی شارپ دارای یک نوع داده بولی است (bool).برخی از عبارت‌ها مانند while و if که شرطی هستند، نیازمند یک عبارت نوع بولی هستند.همان طور که ++C نیز دارای نوع داده بولی است،این نوع داده به راحتی می‌تواند به یا از Integerها تبدیل شود، و عبارتی مانند (if(a نیازمند این امر است که a از یک نوع قابل تبدیل به bool یا اشاره گر باشد.کامپایلر سی شارپ برنامه نویس را در این شرایط مجبور به استفاده از عباراتی می‌کند که به درستی یک مقدار bool را برمی‌گردانند. بنابراین دستوری مانند (if(a = b باعث بروز خطا می‌شوند.(به جای = بایستی از == استفاده شود)

- در سی شارپ ، اشاره گرهای به حافظه بایستی فقط در داخل بلوکهای unsafe استفاده شوند و برنامه در این حالت برای اجرا نیاز به اجازه از کاربر دارد.بیشتر دسترسی شی از طریق شی امن است که یا همیشه در حال اشاره به شی صحیح موجود است یا یک مقدار Null دارد. اشاره گری به شی به درد نخور یا بلاک حافظه رندم غیر ممکن است.اشاره گر نا امن می‌تواند به نمونه‌ای از value-type ، آرایه، رشته یا بلاکی که حافظه به آن داده شده‌است اشاره نماید.کدی که به عنوان نا امن علامت نخورده باشد، هنوز می‌تواند اشاره گر‌ها را از سیستم بازیابی یا در آن ذخیره کند ولی نمی‌تواند مرجع جدیدی به آنها اختصاص دهد.

- حافظه ساماندهی شده نمی‌تواند صریحا آزاد شود، ولی به طور خودکار به عنوان به درد نخور تلقی می‌شود.انتخاب آدرس‌های به درد نخور حافظه نفوذ ناپذیر است. هم چنین #C با استفاده از عبارات، پشتیبانی مستقیمی از پایان اجباری می‌کند(پشتیبانی از اصطلاح Resource Acquisition Is Initialization).

- وراثت چندگانه از کلاس‌ها در این زبان پشتیبانی نمی‌شود.البته یک کلاس امکان ارث بری از تعداد نامحدود واسط‌ها را دارد.پشتیبانی نکردن از وراثت چندگانه به دلیل اهداف معماری این زبان در CLI و برای جلوگیری از پیچیدگی است.

- سی شارپ بسیار typesafe تر از C++ است. تنها تبدیلات ضمنی مثل تبدیل نوع داده کوچکتر به بزرگتر یا تبدیل نوع مشتق شده به نوع پایه به طور پیش فرض و بدون خطا صورت می‌پذیرد.هیچ تبدیل ضمنی ای میانBooleanها و Integerها وجود ندارد و هر تبدیل user-defined بایستی به صراحت با یکی از کلمات explicit یا implicit نشانه گذاری شود. تبدیل b به a در حالتی که a یک Integer و b یک double باشد در زبان C++ مجاز است اما در سی شارپ به یک خطای زمان کامپایل منجر می‌شود(بایستی به صورت explicit تعریف شود)

- اعضای Enumeration در داخل محدوده شخصی خود قرار دارند.

- #C قابلیت syntactic sugar را برای توابع متداول، اکسسور‌ها و ماجول‌های کسول شده در یک کلاس به صورت ویژگی‌ها قرار داده‌است.

اکسسورها که خاصیت نیز گفته می‌شوند در زبان سی شارپ قادر به کنترل دسترسی اعضا و معتبرسازی داده‌ها هستند.

- تمام انواع بازتابی(Reflection) و بازیابی(Recovery) قابل استفاده‌است.

- در حال حاظر (3 جوان 2008) دارای 77 کلمه رزرو شده‌است.

 

سیستم یکپارچه شده

سی شارپ دارای یک سیستم نوع یکپارچه‌است که به آن CTS می‌گویند.این بدان معناست که تمام انواع،شامل موارد اصلی مانند Integerها، مشتق شده از System.Object هستند.به عنوان مثال، هر نوع یک متد به نام ToString() را به ارث می‌برد.بخاطر کارائی،انواع اولیه (و انواع مقداری) به طور داخلی فضایی برای آنها بر روی پشته در نظر گرفته می‌شود.

انواع داده

CTS داده‌ها را به دو نوع تقسیم می‌کند:

- نوع مقداری

- نوع مرجعی

انواع داده‌ای توده ساده‌ای از داده می‌باشند.نمونه‌های انواع داده‌ای نه حویت مرجعی دارند و نه مفاهیم مقایسه مراجع را. برای مقایسه برابری یا عدم برابری انواع داده‌ای، خود مقدار داده‌ها را با یکدیگر مقایسه می‌کنیم مگر اینکه عملگر‌های مشابه دوباره تعریف شده باشند.مقادیر داده‌های مرجعی همیشه یک مقدار پیش فرض دارند و همیشه می‌توانند ایجاد و یا کپی شوند.یکی دیگر از محدودیت‌های انواع داده‌ای این ات که آنها نمی‌توانند از یکدیگر مشتق شوند(ولی می‌توانند اشتراکاتی داشته باشند) و هم چنین نمی‌توانند در سازنده مقدار دهی اولیه شوند. مثالی از انواع داده‌ای، بعضی از انواع اولیه مانند int و float و char و System.DateTime می‌باشند. در مقابل، انواع مرجعی مفهوم تعریف مرجعی را دارند( که در آن هر نمونه از نوع مرجع، به طور ذاتی از دیگر نمونه‌ها جدا می‌شود، حتی اگر داده هر دو نمونه یکی باشد). این دقیقا نمونه مشابه مقایسه تساوی یا عدم تساوی داده‌های مرجعی است، که در آن آزمایش برای مرجع‌ها از داده‌ای‌ها سریع تر است. در کل نه همیشه امکان تعریف نمونه مرجعی وجود دارد و نه امکان کپی یا نمایش مقادیر مقایسه دو نمونه.ولی به هر حال انواع مرجعی خاص می‌توانند این اعمال را از طریق سازنده‌های عمومی یا اجرای واسط‌های مشابه(مثل ICloneable یا IComparable) انجام دهند.نمونه‌هایی از انواع مرجعی، اشیا، System.Stringو Sysmet.Array می‌باشند. هر دو نوع داده قابلیت انعطاف توسط تعریف به وسیله کاربر را دارند.

Boxing و UnBoxing:

Boxing عمل تبدیل مقدار نوع داده‌ای به نوع مرجع مشابه آن می‌باشد.

مثال:

int foo = 42; // Value type...

object bar = foo; // foo is boxed to bar.

UnBoxing عمل تبدیل نوع مرجع به نوع داده‌ای می‌باشد. مثال:

int foo = 42; // Value type.

object bar = foo; // foo is boxed to bar.

int foo2 = (int)bar; // Unboxed back to value type.

سی شارپ به برنامه نویس با استفاده از کلمه کلیدی

/ 1 نظر / 151 بازدید
mux.ir

شرایط کار برای برنامه نویسان سیستم خرید و فروش پروژه ها و محصولات نرم افزاری با آغاز ماه مهر 1389 شروع بکار کرد . در این سیستم برنامه نویسان میتوانند با ثبت نام رایگان ، پروژه های نرم افزاری و همچنین محصولات نرم افزاری خود را جهت فروش در سایت قرار دهند . این سیستم روشی کاملا مطمئن و بدون سرمایه را جهت کسب درآمد در اختیار تمام برنامه نویسان اهم از مبتدی تا حرفه ای قرار میدهد . همچنین از مزیت های این سیستم علاوه بر ثبت نام رایگان ، تعیین قیمت پروژه و محصول نرم افزاری توسط خود برنامه نویس نیز میباشد . شما میتوانید با ورود به صفحه ی اصلی سایت www.mux.ir و انجام مراحل ثبت نام از مزایای این سیستم بهره مند گردید. همچنین پس از ثبت نام تمام راهنمایی های لازم جهت کار با سایت به شما ابلاغ خواهد شد . لینک صفحه ثبت نام سایت : http://www.mux.ir/component/user/register.html