موضوع مقاله: ماشین مجازی هیپ‌هاپ | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # ماشین مجازی هیپ‌هاپ | مقدمه: ماشین مجازی هیپ‌هاپ یک ماشین مجازی مبتنی بر کامپایل درجا است که به‌عنوان موتور اجرایی پی‌اچ‌پی و زبان برنامه‌نویسی هک عمل می‌کند. | ## بخش 1: ماشین مجازی هیپ‌هاپ | با استفاده از مفهوم کامپایل درجا کدهای اجراشدهٔ پی‌اچ‌پی یا هک در ابتدا به بایت‌کد هیپ‌هاپ تبدیل می‌شوند که به‌صورت پویا به کد ماشین معماری اکس۸۶-۶۴ تبدیل می‌شود، بهینه‌سازی‌شده و به‌صورت بومی اجرا می‌شود. این بر خلاف اجرای تفسیری است که طی آن موتور زند کدهای مبدأ پی‌اچ‌پی را به آپ‌کد به‌عنوان قالبی از کد میانی تبدیل می‌کند و آپ‌کدها را به‌صورت مستقیم در پرداشگر ماشین مجازی موتور زند اجرا می‌کند. ماشین مجازی هیپ‌هاپ توسّط فیسبوک توسعه داده‌شده و کد آن در گیت‌هاب، تحت گواهی پی‌اچ‌پی و زند موجود است. بررسی ماشین مجازی هیپ‌هاپ توسّط فیسبوک به عنوان جانشین هیپ‌هاپ، موتور اجرایی پی‌اچ‌پی (HPHPc) که آن هم توسّط فیسبوک ساخته شده‌بود، و یک مترجم مبدأ به مبدأ از پی‌اچ‌پی به سی‌پلاس‌پلاس بود ساخته‌شد. فیسبوک براساس تجربه‌ای که از ساخت HPHPc به دست آورده‌بود، در سال ۲۰۱۰ تصمیم به ساخت یک ماشین مجازی درجا برای پی‌اچ‌پی، به منظور حلّ معضلات HPHPc کرد. | ## بخش 2: ماشین مجازی هیپ‌هاپ | به پیروی از اصل کامپایل درجا، هیپ‌هاپ ابتدا کد پی‌اچ‌پی یا هک را به یک بایت‌کد سطح بالا، HHBC، که به زبان میانی نیز شناخته می‌شود، تبدیل می‌کند. HHBC یک فرمت بایت‌کد است که مخوصاً توسّط هیپ‌هاپ ساخته‌شده و هم برای استفاده‌ی مفسّرها مناسب است و هم برای استفاده‌ی کامپایلرهای درجا. در قدم بعدی، هیپ‌هاپ به صورت پویا ("درجا") بایت‌کد HHBC را به کد ماشین x86-64 ترجمه می‌کند؛ سپس از طریق یک تحلیل پویا چندین بهینه‌سازی روی آن انجام می‌دهد و سپس کد ماشین x86-64 را اجرا می‌کند. در نتیجه هیپ‌هاپ دارای مشابهت‌های به‌خصوصی با ماشین‌های مجازی‌ای که توسّط زبان‌های دیگر استفاده می‌شوند، مانند ماشین مجازی جاوا، دارد، هیپ‌هاپ مزایای زیادی در مقایسه با HPHPc به ارمغان می‌آورد، که یکی از آن‌ها پشتیبانی کامل از تمام زبان تعریف‌شده‌ی رسمی پی‌اچ‌پی نسخه‌ی ۵.۴، که شامل تابع create_functionو مولّدهای eval است. علاوه‌بر این، هیپ‌هاپ از موتور اجرایی یکسان در محیط‌های توسعه و استفرار استفاده می‌کند و اشکال‌زادیی موتور اجرایی در هر دو محیط را یکپارچه می‌کند. | ## بخش 3: ماشین مجازی هیپ‌هاپ | هیپ‌هاپ همچنین زمان اجرای طولانی‌ای که توسّط HPHPc ایجاد می‌شد را از بین می‌برد و در نتیجه فرایند توستعه و استقرار را راحت‌تر می‌کند. هک به برنامه‌نویسان اجازه می‌دهد تا هم از نوع‌های پویا و هم از نوع‌های ایستا استفاده کنند، این مفهوم به عنوان نوع تدریجی نیز شناخته می‌شود و به نوع‌های زبان اجازه می‌دهد تا براساس ورودی و خروجی توابع و خصوصیات کلاس‌ها معیّن شوند؛ البتّه اجازه‌ی انجام این کار روی متغیّرهای محلّی داده نمی‌شود. با این حال هک، سازگاری عقبرو را به خاطر نداشتن برخی ویژگی‌های پی‌اچ‌پی مانند دستور goto و نام‌های پویا برای متغیّرها پشتیبانی نمی‌کند. در سپتامبر ۲۰۱۷، اعلام شد که نسخه‌ی ۳.۲۴، آخرین نسخه‌ی هیپ‌هاپ خواهدبود که به طور رسمی از پی‌اچ‌پی پشتیبانی می‌کند و از این به بعد تنها از هک پشتیبانی خواهدکرد. کارآیی هیپ‌هاپ به عنوان یک فرایند ماشین مجازی که محیط اجرا را فراهم می‌کند، این توانایی را دارد که از اطّلاعات نوع زنده برای تولید کدهای بومی کاراتر استفاده کند، این امر منجر به گذردهی بالاتر وب‌سرور و کمترشدن تاخیر می‌شود. | ## جمع‌بندی | در ۲۰۱۲، سرعت اجرای کد مبدأ فیسبوک بر هیپ‌هاپ با سرعت اجرای آن بر HPHPc برابر شد، و در دسامبر همان سال تا حتّی ۱۵٪ از HPHPc سریع‌تر شد.