11-02-2014, 10:21 PM
نقل قول:و اسم این عمل کامپایل شدن نیست!چرا اسمش دقیقا کامپایله. شما فکر کردی کامپایل فقط به کامپایل پیشاپیش و کاملی که کامپایلری مثل زبان سی یا سی++ انجام میده میگن؟
شاید با اغماض بشه از اصطلاح تفسیر هم بطور کلی در این موارد استفاده کرد اما منابع با کیفیت و معتبر نگاه کنی اکثریت قریب به اتفاق گفتن کامپایل یا حداقل اسمی از کامپایل و Just-in-time compilation آوردن و میگن به کد زبان ماشین کامپایل میکنه نه اینکه تفسیر میکنه.
اون compilation در انتهای Just-in-time compilation پس چیه؟
ضمنا چون بیشتر مفسرها و بخصوص زبانهای قدیمی تر که جور دیگه کار میکردن و مستقیما کد منبع رو میخونن و دستوراتش رو از جانب خودشون انجام میدن (نه اینکه به زبان ماشین تبدیل کنن و بعد مستقیما اجرا بشه) و تا الان بیشتر متداول بوده که به اونا میگفتن زبان تفسیری و اسکریپتی و اینها و به روشی که کار میکردن تفسیر گفته میشد و به پردازندهء اونا مفسر، بهتره از اصطلاح بیش از حد کلی و مبهم و گمراه کننده تفسیر در این موارد اجتناب بشه.
نقل قول:کدهای تولید شده On the fly هستند و اسم این عمل در زبان فارسی میشه تفسیر کد!در تعریف تخصصی کامپایل، شرط On the fly نبودن وجود نداره. شرط کامپایل تمام کد یا اینکه زمان خاصی داشته باشه هم وجود نداره.
اسم زبان فارسی رو هم بذاره درکوزه! فارسی به درد کسی نمیخوره، هرچی ابهام و اشتباه توی زبان انگلیسی و منابع اصلی هست فارسی خیلی وقتا یه چیزی هم میذاره روش و حسابی قاطی و اشتباه میکنه همه چیز رو.
نقل قول:به طور مثال از طریق HHVMبه HHVM بطور معمول مفسر نمیگن. اسم خودش هم به ماشین مجازی اشاره داره و مخفف اینه: HipHop Virtual Machine
و توی مقالهء ویکیپدیا نگاه کنی نوشته is a process virtual machine based on just-in-time (JIT) compilation.
و اینم نوشته که فکر کنم بقدر کافی واضح میکنه مطلب رو:
This contrasts to the PHP's usual interpreted execution, in which the Zend Engine transforms the PHP source code into opcodes as a form of intermediate code, and executes the opcodes directly on the Zend Engine's virtual CPU
ترجمه: «این در تقابل با اجرای تفسیری معمول PHP است که در آن Zend Engine (م: مفسر رسمی PHP) کد منبع PHP را به opcode بعنوان یک شکل میانی کد تبدیل میکند و opcode ها را مستقیما روی CPU ی مجازی Zend Engine اجرا میکند»
من تعجب میکنم این همه اصطلاحات و منابع همه اشاره به کامپایل دارن و عبارتی که درشون خیلی کمتر دیده میشه و بعضی جاها اصلا دیده نمیشه Interpret و Interpreter هست، اونوقت تو میای از این اصطلاح نادقیق و کلی و مبهم استفاده میکنی و میگی اینه و اون نیست و کامپایل به اون نمیگن!
اطلاعاتت مثل اینکه خیلی قدیمه.
ضمنا این همه بحث ما از اول روی این شروع شد که گفتم چون موقع اجرا به زبان ماشین تبدیل میکنه یک تاخیری داره، که جنابعالی اونطور جواب دادی! حالا هم میبینی که بالاخره داره این کار رو میکنه و این تاخیر بهرحال وجود داره در کل حالا چه در ابتدا و چه در وسط و چه در آخر بهرحال درکل این تاخیر و مجموع تاخیر اجرای تمام بخشهای برنامه به زمان اجرا اضافه میشه. بعدم اون ابزار خود میکروسافت و این همه بند و بساط و تبدیل پیشاپیش توسط ngen و اینها بیخود که نیست توی مقالهء ویکیپدیا بخونی نوشته که به این شکل میشه سرعت اجرا رو در بعضی موارد بحد قابل توجهی افزایش داد.
نقل قول:تنها در هنگام اجرای هر متد! اون متد رو به کد ماشین کامپایل میکنهضمنا دلیل و سند برای این ادعا لطفا!