PDA

بازدید نسخه کامل شده : مدل کامپایل کد در .net frame work


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 فریم ورک توضیحات مبسوطی رو خواهم داد.
ممنون
---------------

SherlockHolmes
02-13-2006, 02:20 PM
یک نکته رو هم توضیح بدم!
من هیچ ادعایی در دات نت ندارم و فقط قصد دارم به عنوان یک علاقمند اطلاعات خودم رو در اختیار شما قرار بدم.
پیشاپیش اگر نتونستم به سوالات شما پاسخ بدم از شما معضرت میخوام!
خوب توی این تاپیک اگر سوالی در مورد دات نت دارید بپرسید
سوالاتی مثل اینکه مثلا فلان کار رو با دات نت میشه کرد یا نه!
متشکرم!! :)

Shahed
02-13-2006, 02:34 PM
اين دات نت فريم ورك رو از كجا دانلود كنم؟
تو خود مايكرو سافت نميشه ! تا دكمه دانلودو ميزنم The Page Cannot be Display ميده :(

SherlockHolmes
02-13-2006, 02:38 PM
از اینجا! (http://download.microsoft.com/download/a/a/c/aac39226-8825-44ce-90e3-bf8203e74006/dotnetfx.exe)
البته حجمش 23 مگه!!ورژن 1.1

Shahed
02-13-2006, 02:59 PM
از اینجا! (http://download.microsoft.com/download/a/a/c/aac39226-8825-44ce-90e3-bf8203e74006/dotnetfx.exe)
البته حجمش 23 مگه!!ورژن 1.1
The page cannot be displayed

SherlockHolmes
02-13-2006, 03:06 PM
با دپ داونلود کن!!ببین میشه یا نه!!
اگرم نشد مشکل خودته!چون برای من داونلود میشه!

Shahed
02-13-2006, 03:12 PM
با دپ داونلود کن!!ببین میشه یا نه!!
اگرم نشد مشکل خودته!چون برای من داونلود میشه!
آره !
فكر ميكنم مشكل ار من باشه :(

Asef
02-26-2006, 09:22 PM
من چرا اينو نديده بودم http://qsmile.com/qsimages/24.gif يا چرا بي خبر؟؟؟
مرسي خيلي خوبه ادامه ... در ضمن من شديدا و نيمه شديدا دارم سي شارپ رو كار ميكنم اميدوارم اينجا بچه ها پايه باشن بريم جلو يه چيزي ياد بگيريم.

SherlockHolmes
02-26-2006, 09:24 PM
من خودمم دیگه یادم رفته بود!!http://qsmile.com/qsimages/33.gif
در ضمن C# یادگرفتنش خیلی ساده است!! :)
موفق باشی!

Asef
02-26-2006, 09:31 PM
من خودمم دیگه یادم رفته بود!!http://qsmile.com/qsimages/33.gif
در ضمن C# یادگرفتنش خیلی ساده است!! :)
موفق باشی!
مرسي
يك سوال مسخره! راهي هست برنامه هاي نوشته شده به سي شارپ (برنامه هاي تحث وب) روي لينوكس هم اجرا بشه؟ من شنيدم كامپوننت ها و .. هست ولي خودم چندان باورم نميشه!http://qsmile.com/qsimages/33.gif

SherlockHolmes
02-26-2006, 09:33 PM
هست ولی مایکروسافت تا حالا همچین کاری رو نکرده!
یعنی استاندارد نیست و مسلما یه سری از قابلیت های استاندارد ازش گرفته میشه!!