11-02-2014, 08:11 PM
نقل قول:کد رو به یک زبان میانی کامپایل میکنه به نام CIL و بعدش توسط مفسر تفسیر میشه!!! خبری از کامپایل شدن به زبان ماشین نیست! (دلیل کند بودنش هم همینه ولی در مقایسه با PHP و جاوا و ... خیلی سریع تره)اینجا دیگه کم سوادیت با سند ثابت شد!
در ضمن CIL قابل خواندن توسط انسانه!
اینکه همینطور با اطلاعات سطحی و ناقص میای ادعا میکنی و نظر میدی اینم نمونش :e405:
برو بگو بزرگترت بیاد :e057:
بله منم میدونم که دات نت کد مثلا سی شارپ یا هر زبان دات نتی دیگر رو به CIL تبدیل میکنه، و فایلهای exe و dll دات نت محتوی CIL هستن، ولی موقع اجرا، CIL توسط مکانیزمی که بهش JIT که مخفف Just-in-time compilation است به کد زبان ماشین مقصد تبدیل میشه. هر بار موقع استارت/بارگذاری یک برنامه این عمل صورت میگیره.
ضمنا برنامه ای/ابزاری بنام ngen هم خود میکروسافت داده که میشه باهاش پیشاپیش اون کدها رو به کد native تبدیل کرد تا تاخیر کامپایل JIT در هر شروع برنامه حذف بشه، ولی به این شکل فایلهای اجرایی دات نت وابسته به پلتفرمی میشن که براش کامپایل شدن و دیگه قابلیت cross platform ندارن.
جالب اینکه در همون مقالهء ویکیپدیا که خودت درج کردی این چیزایی که میگم آمده یه نگاهی میکردی و میخوندی باید متوجه میشدی:
Upon execution of a CLI assembly, its code is passed through the runtime's JIT compiler to generate native code. Ahead-of-time compilation may also be used, which eliminates this step, but at the cost of executable-file portability.
ترجمه: «هنگام اجرای یک اسمبلی CLI، کد آن از کامپایلر JIT محیط اجرا عبور میکند تا کد native تولید شود. کامپایل پیشاپیش همچنین میتواند استفاده شود، که این قدم را حذف میکند، ولی به هزینهء قابل حمل بودن فایل اجرایی»
منبع: Common Intermediate Language - WiKi
البته بخاطر تکمیل مطلب باید اضافه کنم که در یک سیستم JIT لزوما تمام کد و برنامه به کد Native/زبان ماشین، یا هر نوع کد هدف دیگر، تبدیل نمیشه، ولی حداقل بخشی از اون تبدیل میشه (توی مقاله ای که قبلا از وبلاگم آوردم اطلاعات در این زمینه داده شده). درمورد دات نت اطلاعات دقیق و موثقی ندارم که آیا همهء کد یا بخش عمده ای از اون به کد Native تبدیل میشه یا بخش کوچکتری و بطور متوسط چقدر مثلا.