11-02-2014, 10:49 PM
kourosh_iran نوشته: چرا اسمش دقیقا کامپایله. شما فکر کردی کامپایل فقط به کامپایل پیشاپیش و کاملی که کامپایلری مثل زبان سی یا سی++ انجام میده میگن؟
شاید با اغماض بشه از اصطلاح تفسیر هم بطور کلی در این موارد استفاده کرد اما منابع با کیفیت و معتبر نگاه کنی اکثریت قریب به اتفاق گفتن کامپایل یا حداقل اسمی از کامپایل و Just-in-time compilation آوردن و میگن به کد زبان ماشین کامپایل میکنه نه اینکه تفسیر میکنه.
اون compilation در انتهای Just-in-time compilation پس چیه؟
ضمنا چون بیشتر مفسرها و بخصوص زبانهای قدیمی تر که جور دیگه کار میکردن و مستقیما کد منبع رو میخونن و دستوراتش رو از جانب خودشون انجام میدن (نه اینکه به زبان ماشین تبدیل کنن و بعد مستقیما اجرا بشه) و تا الان بیشتر متداول بوده که به اونا میگفتن زبان تفسیری و اسکریپتی و اینها و به روشی که کار میکردن تفسیر گفته میشد و به پردازندهء اونا مفسر، بهتره از اصطلاح بیش از حد کلی و مبهم و گمراه کننده تفسیر در این موارد اجتناب بشه.
kourosh_iran نوشته: در تعریف تخصصی کامپایل، شرط On the fly نبودن وجود نداره. شرط کامپایل تمام کد یا اینکه زمان خاصی داشته باشه هم وجود نداره.
اسم زبان فارسی رو هم بذاره درکوزه! فارسی به درد کسی نمیخوره، هرچی ابهام و اشتباه توی زبان انگلیسی و منابع اصلی هست فارسی خیلی وقتا یه چیزی هم میذاره روش و حسابی قاطی و اشتباه میکنه همه چیز رو.
kourosh_iran نوشته: به HHVM بطور معمول مفسر نمیگن. اسم خودش هم به ماشین مجازی اشاره داره و مخفف اینه: HipHop Virtual Machine
و توی مقالهء ویکیپدیا نگاه کنی نوشته is a process virtual machine based on just-in-time (JIT) compilation.
من تعجب میکنم این همه اصطلاحات و منابع همه اشاره به کامپایل دارن و عبارتی که درشون خیلی کمتر دیده میشه و بعضی جاها اصلا دیده نمیشه Interpreter هست، اونوقت تو میای از این اصطلاح نادقیق و کلی و مبهم استفاده میکنی و میگی اینه و اون نیست و کامپایل به اون نمیگن!
اطلاعاتت مثل اینکه خیلی قدیمه.
ضمنا این همه بحث ما از اول روی این شروع شد که گفتم چون موقع اجرا به زبان ماشین تبدیل میکنه یک تاخیری داره، که جنابعالی اونطور جواب دادی! حالا هم میبینی که بالاخره داره این کار رو میکنه و این تاخیر بهرحال وجود داره در کل حالا چه در ابتدا و چه در وسط و چه در آخر بهرحال درکل این تاخیر و مجموع تاخیر اجرای تمام بخشهای برنامه به زمان اجرا اضافه میشه. بعدم اون ابزار خود میکروسافت و این همه بند و بساط و تبدیل پیشاپیش توسط ngen و اینها بیخود که نیست توی مقالهء ویکیپدیا بخونی نوشته که به این شکل میشه سرعت استارت رو در بعضی موارد بحد قابل توجهی افزایش داد.
من نمیدونم چرا باید همه چیز رو برای شما شیرفهم کرد!!!! یک مقداری هم زحمت تحقیق به خودتون بدید دوست عزیز!
Interpreter (computing) - WiKi
In computer science, an interpreter is a computer program that directly executes, i.e. performs, instructions written in a programming or scripting language, without previously compiling them into a machine language program. An interpreter generally uses one of the following strategies for program execution:
- parse the source code and perform its behavior directly
- translate source code into some efficient intermediate representation and immediately execute this
- explicitly execute stored precompiled code[SUP][1][/SUP] made by a compiler which is part of the interpreter system
While interpretation and compilation are the two main means by which programming languages are implemented, they are not mutually exclusive, as most interpreting systems also perform some translation work, just like compilers. The terms "interpreted language" or "compiled language" signify that the canonical implementation of that language is an interpreter or a compiler, respectively. A high level language is ideally an abstraction independent of particular implementations.
HHVM
HHVM uses a just-in-time (JIT) compilation approach to achieve superior performance while maintaining the development flexibility that PHP provides.
kourosh_iran نوشته: ضمنا دلیل و سند لطفا!
Compiling MSIL to Native Code
نقل قول:Because the JIT compiler converts an assembly's MSIL to native code when individual methods defined in that assembly are called,
اینها رو هم بخونید بد نیست :
What is the Difference Between Compiler and Interpreter? | Compiler vs Interpreter
Interpreter Vs Compiler : Difference Between Interpreter and Compiler | Programming Tutorials, Articles and Examples
[ATTACH=CONFIG]4476[/ATTACH]
پس چی شد ؟! وقتی کل برنامه به Native کد ترجمه نشده باشد اسمش کامپایل کردن نیست. ولی وقتی قسمت قسمت و در زمان اجرا اون رو ترجمه میکنیم اسمش میشه تفسیر!
خدای ار به حکمت ببندد دری - به کرمک زند قفل محکم تری