هک (زبان برنامه‌نویسی)

هک یک زبان برنامه‌نویسی برای ماشین مجازی HipHop (HHVM) است که توسط فیس بوک به عنوان گویش PHP ایجاد شده‌است. اجرای زبان منبع باز است که دارای مجوز تحت مجوز BSD است.
هک اجازه می‌دهد تا برنامه نویسان از هر دو نوع تایپ پویا و تایپ استاتیک استفاده کنند. این نوع سیستم نوعی تایپ تدریجی نامیده می‌شود که در زبان‌های برنامه‌نویسی دیگر مانند ActionScript نیز اجرا می‌شود. نوع سیستم هک اجازه می‌دهد که انواع برای آرگومان‌های عملکرد، تابع بازگشتی و خواص کلاس مشخص شود. با این حال، انواع متغیرهای محلی همیشه محاسبه می‌شود و مشخص نمی‌شود.

تاریخچه 
هک در تاریخ ۲۰ مارس ۲۰۱۴ معرفی شد. قبل از اعلام زبان برنامه‌نویسی جدید، فیس بوک قبلاً این کد را اجرا کرده و در بخش بزرگی از وب سایت آن «نبرد» را آزمایش کرده‌است.

ویژگی‌ها 
هک طراحی شده‌است که به‌طور یکپارچه با پی اچ پی همکاری می‌کند، که یک زبان برنامه‌نویسی متداول با منبع باز است که برای توسعه وب طراحی شده‌است و می‌تواند به HTML تعبیه شود. اکثریت اسکریپت‌های معتبر PHP نیز در هک معتبر هستند؛ با این حال، تعداد زیادی از ویژگی‌های پی اچ پی و اغلب استفاده شده و سازه‌های زبان در هک پشتیبانی نمی‌شوند.

هک نوع اشاره کردن در دسترس در PHP 5 را از طریق معرفی تایپ استاتیک گسترش می‌دهد، با اضافه کردن نکات نوع جدید (به عنوان مثال برای انواع اسکالر مانند عدد صحیح یا رشته)، و همچنین با گسترش استفاده از نکات نوع (به عنوان مثال برای خواص کلاس یا مقدار بازگشتی تابع). با این حال، انواع متغیرهای محلی را نمی‌توان مشخص کرد. از آنجا که هک از یک سیستم تایپ تدریجی استفاده می‌کند، در حالت پیشفرض، حاشیه‌نویسی نوعی اجباری نیست حتی در مکانهایی که نمی‌توان آن‌ها را تعمیم داد؛ سیستم نوع تصور می‌کند که نویسنده صحیح است و کد را قبول می‌کند. با این حال، یک حالت «سخت» در دسترس است که نیاز به چنین حاشیه‌نویسی دارد و بنابراین به‌طور کامل کد صدا را اجرا می‌کند.

نحو و معناشناسی 
ساختار اصلی اسکریپت هک شبیه یک اسکریپت PHP با چند تغییر است. یک فایل هک با <؟ hh به عنوان مخالف با <؟ php برای یک اسکریپت PHP شروع می‌شود:

اسکریپت فوق، شبیه به PHP، اجرا می‌شود و خروجی زیر به مرورگر ارسال می‌شود:
 <?hh
 echo 'Hello World';

 Hello World
نکته مهم این است که بر خلاف PHP، هک و کد HTML مخلوط نمی‌شوند. به‌طور معمول می‌توانید کدهای پی اچ پی و کد HTML را با هم در همان فایل، مانند این ترکیب کنید:
               PHP Test
     
             
         <?php echo '<p>Hello World</p>'; ?>
     
 
این نوع کد توسط هک پشتیبانی نمی‌شود؛ باید XHP یا موتور قالب دیگری استفاده شود.

توابع 
هک اجازه می‌دهد تا انواع برای آرگومان‌های عملکرد و تابع بازگشتی مشخص شود. توابع در Hack به این ترتیب با نوعی از موارد زیر تعریف می‌شوند:
 <?hh
 // Hack functions are annotated with types.
 function negate(bool $x): bool {
     return !$x;
 }

.

پانویس 

زبان‌های اسکریپت‌نویسی
زبان‌های برنامه‌نویسی ایستا
زبان‌های برنامه‌نویسی ساخته‌شده در ۲۰۱۴ (میلادی)
زبان‌های برنامه‌نویسی ماشینی پویا
زبان‌های برنامه‌نویسی
فیس‌بوک
نرم‌افزارهای ۲۰۱۴ (میلادی)
نرم‌افزارهای پی‌اچ‌پی