زیرساخت زبان مشترک (Common Language Infrastructure CLI)
سیشارپ یک زبان برنامهنویسی شی گرا است. این زبان بهطور اساسی یک استاندارد است که مشخص میکند چه چیزی بهعنوان نحو معتبر شناخته میشود. بهتنهایی، سیشارپ کاربرد کمی دارد زیرا برای کامپایل و اجرای برنامهها به زیرساخت زبان مشترک (CLI) وابسته است. CLI نیز بهنوبه خود استانداردی است که مشخصات زیر را تعریف میکند:
زبان میانی مشترک (CIL)
خب، تصور کن که وقتی برنامهنویسها با زبانهای مختلف مثل سیشارپ یا پایتون برنامهنویسی میکنند، در واقع دارند یک داستان به زبان خاصی مینویسند. حالا برای اینکه کامپیوتر بتواند این داستان را بفهمد و اجرا کند، باید به زبانی تبدیل شود که کامپیوترها میتوانند بخوانند.
در زبانهایی مثل C و ++C ، این داستان مستقیماً به زبان کامپیوتر تبدیل میشود، که به آن کد ماشین میگویند. اما در سیشارپ، داستان به یک زبان واسطه به نام زبان میانی مشترک (CIL) تبدیل میشود. این زبان واسطه مثل یک زبان جهانی است که همه کامپیوترها میتوانند آن را بفهمند، به شرطی که یک مترجم خاص به نام سیستم اجرای مجازی (VES) داشته باشند.
حالا چرا به آن “مشترک” میگویند؟ چون این زبان واسطه فقط برای سیشارپ نیست و زبانهای دیگری هم میتوانند داستانهای خود را به این زبان تبدیل کنند. این یعنی برنامههایی که با زبانهای مختلف نوشته شدهاند، میتوانند با هم در یک برنامه کار کنند. مثل این است که هر نویسندهای با هر زبانی میتواند داستانش را به این زبان جهانی ترجمه کند و همه بتوانند آن را بخوانند.
سیستم اجرای مجازی (Virtual Execution System VES)
وقتی یک برنامهنویس با زبان سیشارپ برنامهای مینویسد، این برنامه به یک زبان واسطهای به نام CIL تبدیل میشود. حالا برای اینکه این برنامه روی کامپیوتر اجرا شود، به یک محیط خاص نیاز داریم که به آن سیستم اجرای مجازی یا VES میگویند.
VES مثل یک مترجم زنده است که وقتی برنامه اجرا میشود، بلافاصله کد CIL را به زبانی که کامپیوتر میفهمد (کد ماشین) تبدیل میکند. این فرآیند را “کامپایل در لحظه” یا JIT مینامند. VES همچنین مثل یک مدیر عمل میکند و مراقب است که برنامه به درستی اجرا شود، مثلاً مطمئن میشود که برنامه حافظه را درست استفاده کند و کارهایی که نباید انجام دهد، انجام ندهد.
وقتی برنامه اجرا میشود، VES به آن کمک میکند که بهطور ایمن و کارآمد کار کند. به همین دلیل، به این برنامهها “کد مدیریتشده” میگویند.
گاهی اوقات ممکن است این ترجمه زنده (JIT) باعث شود که برنامه کمی دیرتر شروع به کار کند. برای حل این مشکل، میتوانیم از یک روش دیگر به نام NGen استفاده کنیم که قبل از اجرای برنامه، کد را به زبان ماشین تبدیل میکند. این کار معمولاً زمانی انجام میشود که برنامه روی کامپیوتر نصب میشود، تا وقتی برنامه اجرا میشود، سریعتر شروع به کار کند.
سیستم نوع مشترک (CTS Common Type System) و مشخصات زبان مشترک (CLS Common Language Specification)
برنامهنویسها با زبانهای مختلفی مثل سیشارپ و ویژوال بیسیک برنامه مینویسند، درست مثل اینکه آدمها با زبانهای مختلفی مثل فارسی و انگلیسی صحبت میکنند. حالا اگر این برنامهها بخواهند با هم کار کنند، باید یک راهی باشد که همه آنها بتوانند همدیگر را بفهمند.
سیستم نوع مشترک (CTS) مثل یک قانون یا استاندارد است که به همه این زبانهای برنامهنویسی میگوید که چطور دادهها و اطلاعات را در حافظه کامپیوتر ذخیره کنند. این کار باعث میشود که وقتی برنامهای با یک زبان نوشته شده و برنامه دیگری با زبان دیگری، بتوانند با هم کار کنند و مشکلی پیش نیاید.
حالا مشخصات زبان مشترک (CLS) مثل یک بخش خاص از این قوانین است که هدفش این است که کتابخانهها یا مجموعههایی از کدها را بسازد که بتوانند با همدیگر کار کنند. یعنی برنامهنویسها میتوانند کدهایی بنویسند که با کدهای نوشتهشده به زبانهای دیگر همخوانی داشته باشد و همه با هم کار کنند، مثل اینکه آدمها بتوانند با هم صحبت کنند حتی اگر زبانهای مختلفی داشته باشند.
Framework (کتابخانه کلاس پایه و کتابخانه کلاس چارچوب)
CLI مجموعهای از کلاسهای پایه را مشخص میکند که باید برای اجرای کد CLI در دسترس باشند، که بهعنوان کتابخانه کلاس پایه (BCL) شناخته میشود. BCL شامل رابطهای برنامهنویسی کاربردی (API) است که به اجرای کد CIL اجازه میدهد تا با محیط زمان اجرا و سیستمعامل زیرین تعامل داشته باشد. فراتر از اصول اولیه، کتابخانه کلاس چارچوب .NET نیز وجود دارد. این کتابخانه مایکروسافت شامل API هایی برای ایجاد رابطهای کاربری گرافیکی، برنامههای پایگاه داده، دسترسی به وب و موارد دیگر است.
خلاصه
خب، فرض کن که زیرساخت زبان مشترک یا CLI مثل یک زمین بازی بزرگ است که همه برنامهنویسها میتوانند در آن بازی کنند و برنامههایشان را اجرا کنند. این زمین بازی به طور خاص برای زبان سیشارپ طراحی شده، اما زبانهای دیگر هم میتوانند در آن بازی کنند.
در این زمین بازی، چند چیز مهم وجود دارد:
CLI کمک میکند تا برنامههایی که با زبانهای مختلف نوشته شدهاند، بتوانند با هم کار کنند. همچنین، یک مجموعه از ابزارها و کدهای آماده به نام کتابخانه کلاس Dot NET Framework وجود دارد که به برنامهنویسها کمک میکند تا برنامههای مختلفی مثل بازیها، برنامههای اینترنتی و غیره را راحتتر بسازند. این ابزارها شامل چیزهایی مثل کار با فایلها، شبکه، پایگاههای داده و طراحی ظاهر برنامهها میشوند.