تفاوت بین #C و Net Framework. در چیست

مقایسه #C و NetFramework.

تخمین مدت زمان مطالعه : 5 دقیقه
  • سطح مقاله : مقدماتی
  • نویسنده : پوریا منتخب

سلام، امیدوارم عالی باشی. من پوریا منتخبم و تو این مقاله میخوام تفاوت بین C# و.NetFramework رو برات بررسی کنم پس تا آخرش با من باش. راستی دوره آموزش سی شارپ مقدماتی روی سایت منتشر شده و میتونی از این لینک ببینی ( آموزش زبان برنامه نویسی سی شارپ مقدماتی)

 

اگه توهم جزو اون دسته از کسانی هستی که به شنیدن پادکست علاقه داری پس این برای توعه. این پادکست در رابطه با توضیح تفاوت بین #C و Net Framework. هست. امیدوارم برات مفید باشه.

اغلب برنامه نویسا در ابتدای راه شاید این دو تا مفهوم رو با هم اشتباه بگیرن یا بجای همدیگه استفاده کنن. خب قضیه چیه ؟؟  C# یک زبان برنامه نویسیه در صورتی که.NET، یک فریمورک برای ساخت برنامه هاییه که تحت ویندوز اجرا میشن..NetFramework محدود به زبان C# نیست. زبان های مختلفی میتونن از این فریمورک استفاده کنن مثلا میتونم به VB.NET  یا F# اشاره کنم. اما تفاوت عمدش چیه ؟

 .NetFramework  شامل دو بخشه. یکیCLR  و اون یکی دیگه Class Library  ها برای ساختن اپلیکیشن ها.

خب قبل از اینکه بخوام CLR  رو توضیح بدم میخوام یه نگاه کوچیکی به تاریخچه این زبان داشته باشم تا شاید درکش برات راحت تر باشه  . ما تو خانوادهC،  دو تا زبان دیگه داریم به اسم های C++   و C   که هر وقت برنامه هامونو با این زبان ها کامپایل کنیم مستقیم به کد ماشین تبدیل میشن یا اصطلاحا تبدیل میشن به Native Code. مثلا به عکس زیر نگاه کن

تو این عکس میبینی که یه تیکه کد به زبان c/c++ بعد از کامپایل، تبدیل شده به اون NativeCode پایینیه. این ینی وقتی برنامه ای رو تو این زبان ها برای یک کامپیوتر با مثلا پردازنده 8086 مینویسی، کامپایلر اونو به NativeCode مختص همون پردازنده و معماری تبدیل میکنه. خب آیا هر کی کامپیوتر داره مثلا پردازندش 8086 عه ؟ اگه من که پردازنده کامپیوترم 8088 عه بخوام برنامه ای رو که نوشتی رو رو سیستمم اجرا کنم تکلیف چیه ؟ این ینی یه محدودیت بزرگ.اینجا بود که وقتی مایکروسافت در حال طراحی زبان دوست داشتنی C# بود از یه ایده که قبلش تو زبان جاوا پیاده سازی شده بود الگو گرفت. چه الگویی ؟

تو زبان جاوا وقتی شما برنامه ای رو کامپایل میکنی دیگه مستقیم به زبان ماشین یا همون NativeCode تبدیل نمی شه. اول به یه زبان میانی به اسم ByteCode  تبدیل می شه و بعد از اون  به زبان ماشین. به عکس زیر نگاه کن تا متوجه تفاوتش با عکس قبلی بشی.

دقیقا مشابه همین رو ما تو C# داریم.

وقتی شما برنامه های C#  رو کامپایل میکنی، در ابتدا به یه زبان میانی یا IL Code تبدیل میشه که به هیچ عنوان به سیستمی که داره روش اجرا میشه وابسته نیست. حالا ما به یه ابزاری نیاز داریم که بتونیم این IL Code  رو به NativeCode  تبدیل کنیم و این وظیفه آقای CLR یا همونCommon Language Runtime  هست. بنابراین اینطوری میشه نتیجه گرفت که CLR خودش یه اپلیکیشنه که تو حافظه میشینه و وظیفش ترجمه کد های میانی به ماشینه.و این پروسه معروفه به   JIT Compilation  یا همون Just -in-time Compilation

در مورد Class Library  ها تو مقاله بعدی برات توضیح میدم. امیدوارم این مطلب برات مفید بوده باشه و ازت میخوام هر سوالی در مورد این موضوع داری پایین همین پست بپرس.

منبع : سلسله اموزش های جناب Mosh Hamedani