Note: This text is in Persian, An English version would be coming soon...



تو این مطلب با .Net Framework . اینکه کلا چیه و به چه دردی میخوره آشنا میشیم.

حتما تا حالا سعی کردین که یه بازی یا برنامه رو روی کامپیوترتون نصب کنین و ممکنه نیاز به نصب برنامه ای به اسم .net framework پیدا کرده باشین. شاید براتون سوال پیش اومده که این دات نت چیه؟ خب تو این مطلب قراره با .net و اینکه چطوری کار میکنه آشنا بشیم.


چندین سال قبل یه بنده خدایی(متأسفانه اسمش یادم نیست؛ اگه میدونین بگین توی کامنت) که ظاهرا تو شرکت Intel کار میکرده میاد میگه که «هر کی که میخواد برنامه بنویسه که روی یه سیستم عامل(مثلا ویندوز) باید روی همون پلتفرم و با استفاده از کدهای مخصوص همون سیستم عامل اینکار رو انجام بده و باید یک سری هماهنگی هایی رو با سیستم عامل انجام بده که واقعا نیازی نیست بهش... بیاین یه چیزی درست کنیم که این مرز ها رو برداره. مثلا من روی ویندوز کد میزنم که هم روی ویندوز، هم روی لینوکس و هم روی مک اجرا بشه!». طبق معمول بعد از مواجه شدن با خنده و تحقیر توسط اطافیان و همکاران رفت تا خودش ایده‌ش رو عملی کنه. و طبق معمول بعد از طی کردن یه سری مراحل رفت تا سرمایه‌گذار پیدا کنه و توی اون جلسه ای که ایدش رو ارائه میداد یه نفر از مایکروسافت هم اونجا بود. بعد از اینکه ارائش تموم شد توسط مایکروسافت استخدام شد تا روی ایده‌ش کار کنه. و بالاخره در سال 2000 میلادی اولین نسخه از .net به همراه زبان برنامه‌نویسی C# که از ابتدا برای همین پلتفرم توسعه داده شده بود معرفی شد. تا الان نزدیک 10 نسخه مخلف از .Net منتشر شده(آخرین نسخه 4.6.2 هست).

خب اینم یه تاریخچه مختصر؛ حالا بریم ببینیم که دقیقا چیکار میکنه!

.Net Framework شامل تعداد زیادی کتابخانه های شامل کدهای مختلف هست که زبان های برنامه‌نویسی مختلفی که .net ازشون پشتیبانی میکنه (مثل C#) با استفاده از تکنیک های برنامه‌نویسی شئ‌گرا (Object Oriented Programming یا OOP) از اون کدها استفاده میکنن و کار برنامه‌نویسی رو آسون تر میکنن.(مثلا یک ماژول از برنامه‌نویسی برای وب و ماژول دیگری برای برنامه‌نویسی desktop و ماژول های دیگر...) سیستم عامل های مختلف از برخی یا همه‌ی این ماژول ها پشتیبانی میکنن(مثلا ویندوز موبایل از قابلیت های اصلی .net پشتیبانی میکنه).بعضی از قابلیت های .net پایه ای هستنن، مثلا تعریف یک عدد صحیح 32 بیتی. به این قابلیت های پایه ای (Common Type System (CTS میگن.وقتی که شما با استفاده از .Net برنامه مینویسین، این یعنی شما از کتابخانه های کد موجود در .net استفاده میکنید.(پس اگر میبینید چرا موقع نصب بعضی برنامه ها و بازی ها باید .net framework حتما روی سیستمتون نصب باشه علت اینه که توسعه دهنده ها از .net استفاده کردن)

اما سوال اصلی اینه که .net دقیقا چجوری کاری میکنه که کدنویسی رو راحت تر میکنه؟


*CIL و JIL*


وقتی که شما یک برنامه با استفاده از .net نوشتین و اون رو کامپایل (Complie) میکنین، در حقیقت کد شما ابتدا به به زبان میانی مشترک یا Common Intermedate Language یا بصورت خلاصه CIL ترجمه میشه! کد CIL مختص به زبان C# (زبان های دیگه‌ای که توسط .net پشتیبانی میشن هم مثل Visual Basic اول باید به این کد کامپایل بشن) یا هیچ سیستم عاملی نیست! بعد برای اینکه سیستم عامل مورد نظر بتونه این برنامه رو اجرا کنه (اصطلاحا Execute) باید به native code ای تبدیل بشه که برای اون سیستم عامل قابل فهم باشه. اینکار رو کامپایلری به اسم JIL که مخفف Just-In-Time هست انجام میده.

در گذتشه برای اینکه شما برنامتون روی سیستم های مختلف اجرا بشه باید چندتا برنامه مجزا میساختید و اونا رو برای اون سیستم خاص بهینه میکردین. مثلا برای CPU های Intel و AMD باید برنامه‌تون از کدهای مختلفی استفاده بکنه!(البته بدون .net) اما با .net framework این مشکلها حل میشه. در واقع کامپایلر JIL از کد CIL(که مختص به هیچ سیستمی نیست) استفاده میکنه و اون رو برای سیستم های مختلف قابل فهم میکنه. پس شما میتونین برنامه مورد نظرتون رو بدون نگرانی برای سیستم های مختلف توسعه بدین.

CIL = MSIL = Microsoft Intermediate Language   :نکته

این فعلا یه مختصری بود بر .net framework که تو قسمت(های) بعدی بهتر و بیشتر باهاش آشنا میشیم :)



منبع : Begining C# 6 Programming with Visual Studio 2015 نوشته Benjamin Perkins, Jacob Vibe Hammer, Jon D. Reid