SherlockHolmes
02-05-2006, 05:59 PM
مدل کامپایل کد در دات نت فریم ورک
در زبانهای برنامه نویسی امروزی شاید بی اهمیت ترین چیز اینه که یک برنامه نویس بدونه کدش چطور کامپایل میشه!دلیلش هم ساده است!عناصر ویژوال و غیر ویژوال مراحل کامپایل رو به طور کلی از جلوی چشم برنامه نویسان دور کرده اند .اما حتما شما هم به این نتیجه رسیده اید که هرچه تسلط بیشتری بر چهار چوب پلتفرم خود داشته باشید احساس راحتی بیشتری خواهید کرد.من توی این مقاله سعی میکنم نحوه کامپایل شدن کد در دات نت رو شرح بدم.
بعد از خوندن این مقاله این موارد رو درک خواهید کرد:
1:نحوه کامپایل کد در برنامه های کلاسیک.
1:نحوه کامپایل کد در دات نت.
2:مزایای این گونه کامپایل شدن.
3:آشنایی با واژه اسمبلی (assembly) و زبان میانی مایکروسافت MSIL
http://img.majidonline.com/pic/24899/compile.jpg
برنامه های نوشته شده به صورت کلاسیک معمولا اینطور کامپایل میشوند.
برنامه ای که شما نوشته اید توسط کامپایلر زبانی که با آن برنامه مینویسید به کد باینری کامپایل میشود.و بعد هنگامی که شما برنامه را اجرا میکنید سیسم عاملتان مدیریت کد نوشته شده توسط شما را بر عهده میگیرد.و آن را در cpu اجرا میکند.اما مشکل از همینجا شروع میشود.
کامپایلر(مثلا کامپایلر ویژوال c++ ) سورس کد شما را به کدی تبدیل میکنه که سیستم عامل توانایی خواندن آن را داشته باشه.و سیستم عامل کد شما را بر اثا نوع cpu شما و خانواده اش اجرا میکنه.(مثلا سیستم عامل ویندوز بر اثاث زیان ماشین پلتفرم x86 کد ها ارئه میده)
پس تا اینجا ما متوجه شدیم چرا کدهای نوشته شده برای ویندوز در لینوکس اجرا نمیشود یا چرا از یک برنامه نمیتوان در همه دستگا هها (مثلا موبایل ها ) استفاده کرد.و حتما باید برای این کار ها کد را برای پلتفرم نرم افزاری و سخت افزاری آن پلتفرم باز نویسی و کامپایل کرد.
مدل کامپایل در برنامه های دات نتی
http://img.majidonline.com/pic/24937/dot-net-compile.jpg
همانطور که در تصویر میبینید کامپایل در دو مرحله صورت میگیره در مرحله اول کامپایل زبان به زبان میانجی مایکروسافت(MSIL) و در هنگام اجرا یک کامپایل دیگر بر اثاث نوع پلتفرم صورت میگیرد.قبل از اینکه گیج بشید من چند تا سوال رو جواب بدم.
1:MSIL دیگه چه جور جونوریه؟
MSIL یا به اختصار IL یه زبان برنامه نویسیه سطح پایینه که مایکروسافت بوجود آورده .این زبان شبیه زبان اسمبلی هست که قابلیت های آبجکت ارینتد بهش اضافه شده.
2:Assembly چیه؟
حتما فایلهای exe و dll رو تا حالا دیدید.اسمبلی به dll و exe هایی میگن که داخلش عوض کد باینری کد IL وجود داره.نتیجه اینکه این فایلها با exe , dll های معمولی در ظاهر فرقی نداند اما مکانیزم داخلشون متفاوته.حتما الان متوجه شدین چرا برای اجرای برنامه های نوشته شده با دات نت به .net frame work نیاز دارید.
3:این فرایند پیچیده کامپایل چه فایده ای داره؟
آفرین سوال خوبیه! :blink: این بر میگرده به طرز تفکر معماران پلتفرم.اونها با ایجاد این گونه کامپایل دو امتیاز بزرگ بدست آورده اند.
1:Language Independent
ساده است!دات نت به زبان خاصی وابسته نیست!
2:Platform Independent
این هم ساده است.برای اینکه کد شما در هر دستگاهی اجرا بشه فقط کافیه مایکروسافت .net frame work مربوط به اون دستگاه رو ارئه بده.بنا بر این شما در آینده میتونید حتی برای گاز و یخچال و ماشین هم تحت پلتفرم دات نت کد بنویسید.
ildasm
با برنامه ی ildasm میتونید کد msil اسمبلی ها رو ببینید!بخاطر اینکه حس کنجکاویتون ارضا بشه یه عکس هم از کد آی ال میزارم که اگرم از این برنامه استفاده نکردید یه شمای کلی از آی ال داشته باشین
http://www.blackmice.com/attachment.php?attachmentid=1040&stc=1&d=1139612679
--------
سوال:چرا دات نت به زبان خاصی وابسته نیست؟
جواب بدین!میخوام ببینم چه قدر خوب توضیح دادم!
---------
خوب این مقاله برای آشنایی شما با دات نت بود. :)
در مقاله های بعد در مورد CLR و سایر اجزای .net فریم ورک توضیحات مبسوطی رو خواهم داد.
ممنون
---------------
در زبانهای برنامه نویسی امروزی شاید بی اهمیت ترین چیز اینه که یک برنامه نویس بدونه کدش چطور کامپایل میشه!دلیلش هم ساده است!عناصر ویژوال و غیر ویژوال مراحل کامپایل رو به طور کلی از جلوی چشم برنامه نویسان دور کرده اند .اما حتما شما هم به این نتیجه رسیده اید که هرچه تسلط بیشتری بر چهار چوب پلتفرم خود داشته باشید احساس راحتی بیشتری خواهید کرد.من توی این مقاله سعی میکنم نحوه کامپایل شدن کد در دات نت رو شرح بدم.
بعد از خوندن این مقاله این موارد رو درک خواهید کرد:
1:نحوه کامپایل کد در برنامه های کلاسیک.
1:نحوه کامپایل کد در دات نت.
2:مزایای این گونه کامپایل شدن.
3:آشنایی با واژه اسمبلی (assembly) و زبان میانی مایکروسافت MSIL
http://img.majidonline.com/pic/24899/compile.jpg
برنامه های نوشته شده به صورت کلاسیک معمولا اینطور کامپایل میشوند.
برنامه ای که شما نوشته اید توسط کامپایلر زبانی که با آن برنامه مینویسید به کد باینری کامپایل میشود.و بعد هنگامی که شما برنامه را اجرا میکنید سیسم عاملتان مدیریت کد نوشته شده توسط شما را بر عهده میگیرد.و آن را در cpu اجرا میکند.اما مشکل از همینجا شروع میشود.
کامپایلر(مثلا کامپایلر ویژوال c++ ) سورس کد شما را به کدی تبدیل میکنه که سیستم عامل توانایی خواندن آن را داشته باشه.و سیستم عامل کد شما را بر اثا نوع cpu شما و خانواده اش اجرا میکنه.(مثلا سیستم عامل ویندوز بر اثاث زیان ماشین پلتفرم x86 کد ها ارئه میده)
پس تا اینجا ما متوجه شدیم چرا کدهای نوشته شده برای ویندوز در لینوکس اجرا نمیشود یا چرا از یک برنامه نمیتوان در همه دستگا هها (مثلا موبایل ها ) استفاده کرد.و حتما باید برای این کار ها کد را برای پلتفرم نرم افزاری و سخت افزاری آن پلتفرم باز نویسی و کامپایل کرد.
مدل کامپایل در برنامه های دات نتی
http://img.majidonline.com/pic/24937/dot-net-compile.jpg
همانطور که در تصویر میبینید کامپایل در دو مرحله صورت میگیره در مرحله اول کامپایل زبان به زبان میانجی مایکروسافت(MSIL) و در هنگام اجرا یک کامپایل دیگر بر اثاث نوع پلتفرم صورت میگیرد.قبل از اینکه گیج بشید من چند تا سوال رو جواب بدم.
1:MSIL دیگه چه جور جونوریه؟
MSIL یا به اختصار IL یه زبان برنامه نویسیه سطح پایینه که مایکروسافت بوجود آورده .این زبان شبیه زبان اسمبلی هست که قابلیت های آبجکت ارینتد بهش اضافه شده.
2:Assembly چیه؟
حتما فایلهای exe و dll رو تا حالا دیدید.اسمبلی به dll و exe هایی میگن که داخلش عوض کد باینری کد IL وجود داره.نتیجه اینکه این فایلها با exe , dll های معمولی در ظاهر فرقی نداند اما مکانیزم داخلشون متفاوته.حتما الان متوجه شدین چرا برای اجرای برنامه های نوشته شده با دات نت به .net frame work نیاز دارید.
3:این فرایند پیچیده کامپایل چه فایده ای داره؟
آفرین سوال خوبیه! :blink: این بر میگرده به طرز تفکر معماران پلتفرم.اونها با ایجاد این گونه کامپایل دو امتیاز بزرگ بدست آورده اند.
1:Language Independent
ساده است!دات نت به زبان خاصی وابسته نیست!
2:Platform Independent
این هم ساده است.برای اینکه کد شما در هر دستگاهی اجرا بشه فقط کافیه مایکروسافت .net frame work مربوط به اون دستگاه رو ارئه بده.بنا بر این شما در آینده میتونید حتی برای گاز و یخچال و ماشین هم تحت پلتفرم دات نت کد بنویسید.
ildasm
با برنامه ی ildasm میتونید کد msil اسمبلی ها رو ببینید!بخاطر اینکه حس کنجکاویتون ارضا بشه یه عکس هم از کد آی ال میزارم که اگرم از این برنامه استفاده نکردید یه شمای کلی از آی ال داشته باشین
http://www.blackmice.com/attachment.php?attachmentid=1040&stc=1&d=1139612679
--------
سوال:چرا دات نت به زبان خاصی وابسته نیست؟
جواب بدین!میخوام ببینم چه قدر خوب توضیح دادم!
---------
خوب این مقاله برای آشنایی شما با دات نت بود. :)
در مقاله های بعد در مورد CLR و سایر اجزای .net فریم ورک توضیحات مبسوطی رو خواهم داد.
ممنون
---------------