جلسه چهاردهم: آشنایی با Compiler در #C
آیا تا به حال به این فکر کرده اید که کد های برنامه نویسی شما، چگونه توسط سیستم پردازش میشوند؟
مدت ها پیش زمانی که برنامه نویسی در ابتدای راه بود، برنامه نویسان، برنامه هایی را به صورت کدهای ماشین مینوشتند. منظور از کد های ماشین، زبانی است که پردازنده میتواند آن را به طور مستقیم درک و پردازش کند. همانند زیر:
b8 21 0a 00 00
a3 0c 10 00 06
b8 6f 72 6c 64
به این شکل، برنامه نویسان هنگام نوشتن کد، آدرس دقیق محل حافظه را به پردازنده سیستم میگویند. سپس پردازنده آن را دریافت میکرد و پس از پردازش، اجرا میشد. اما کدنویسی به این شکل کمی پیچیده است. این بسیار مهم است که بدانید کامپیوتر تنها زبان ماشین را میفهمد. یعنی اگر شما در محیط کدنویسی، بخواهید با استفاده از دستور ()Console.WriteLine یک رشته مانند “Hello World” را چاپ کنید، کامپیوتر نمیتواند مفهوم عبارت ()Console.WriteLine یا “Hello World” را درک کند. در نتیجه سیستم باید کدهای شما را به زبان ماشین یا ۰ و ۱ ترجمه کند تا پردازنده (CPU) بتواند دستورات شما را درک و اجرا کند.
اولین چیزی که باید بدانید Compiler است. کامپایلر برنامه ای است که یک زبان برنامه نویسی را به زبان ماشین یا ۰ و ۱ ترجمه میکند. کد های سی شارپ باید به چیزی تبدیل شود که پردازنده بتواند آن را بفهمد. زیرا پردازنده مغز رایانه شماست. پردازنده سیستم شما اصلا نمیداند سی شارپ یا هر زبان برنامه نویس دیگر چیست. پردازنده (CPU) فقط کد ماشین یا صفر و یک را میشناسد.
فرض کنيد کدنويسي خود را به اتمام رسانديد و ميخواهيد برنامه را اجرا کنيد. زماني که برنامه اجرا ميشود، Compiler کد هاي شما را به عنوان يک ورودي دريافت ميکند، سپس مقداري پردازش روي آن انجام ميدهد. کامپایلر کد هاي شما را می خواند و پس از اجراي برنامه يا پروژه ، کد IL را تولید می کند. برنامه شما با استفاده از کد IL به صورت يک فايل dll يا exe. بر روي حافظه سيستم شما دخيره ميشود.
نکته: کد IL نیمی از کد کامپایل شده است که در زمان کامپایل، ایجاد می شود.
اما اين پايان کار نيست. بعد از توليد کد IL، پردازنده هنوز هيچ کدي را دريافت نکرده است. بنابراين چيزي بايد کد IL را به کد ماشين تبديل کند که نام آن CLR يا Common Language Runtime ميباشد.
CLR برنامه اي ميباشد که در سيستم کامپيوتري شما اجرا ميشود و کد هاي IL را مديريت ميکند. به زبان ساده ، می داند چگونه با IL مقابله کند و چگونه برنامه هایی را که با کد IL نوشته شده اند ، اجرا کند. Common Language Runtime یا CLR یک ماشین مجازی است که توسط چارچوب Net. کنترل می شود (CLR اجرای کلیه برنامه های Net. را مدیریت می کند).
برنامه CLR از يک نوع کامپابلر به نام Just-IntTime يا JIT استفاده ميکند. کامپايلر JIT وظيفه دارد تا کد IL را به زبان ماشين تبديل کند. به عبارتي، وقتي که پروژه خود را اجرا کردید، کامپايلر JIT، تمام دستورالعمل های IL را می خواند و همان لحظه آنها را خط به خط به زبان ماشين ترجمه ميکند. هنگامي که بر روي فايل هايي با پسوند exe. دوبار کليک ميکنيم، در واقع در همان لحظه آن کد کامپايل ميشود و پردازنده ميتواند آن را بفهمد.
کامپایلر استاندارد JIT بر اساس تقاضا اجرا می شود. وقتی فراخوانی روشی انجام می شود ، کامپایلر JIT، کد هاي IL را تجزیه و تحلیل می کند و کدهايي به زبان ماشین تولید می کند تا پردازنده بتواند کد هاي شما را بفهمد و درک کند.
نکته: کامپایلر JIT بخشی از Common Language Runtime (CLR) است. همچنين از از چندین سیستم عامل پشتیبانی می کند و علاوه بر اجراي IL، اجراي کد را سريع تر ميکند. با ما همراه باشید.
برای مشاهده تمامی جلسات آموزش برنامه نویسی سی شارپ (پیشرفته) بر روی این لینک کلیک کنید.