فیسبوک با در نظر داشتن ارائهٔ امکانی به دولوپرها به منظور افزایش سرعت کدنویسی در عین سادگی، زبان برنامهنویسی هَک (Hack Programming Language) که یک زبان اپنسورس است را به بازار عرضه کرد که این امکان را به برنامهنویسان میدهد تا خیلی سریع به کدنویسی وب اپلیکیشن بپردازند.
فیسبوک در سال 2004 به عنوان وب اپلیکیشنی که با زبان PHP نوشته شده بود، کار خود را آغاز کرد. پس از آن که فیسبوک به سرعت پلههای ترقی را پیمود، مدیریت این سایت که با زبان PHP نوشته شده بود دشوار شد و برنامهنویسان این شرکت خیلی ساده مرتکب خطا میشدند؛ بنابراین میبایست به فکر راهکاری میبودند.
به منظور کاهش خطاهای برنامهنویسی، آقای برایان اوسالیوان و تیمش زبان برنامهنویسی هَک را طراحی کردند که طراحی سریع وب اپلیکیشن را از زبان PHP به ارث برده و بسیاری از خصوصیات جدیدترین زبانهای برنامهنویسی هم به آن اضافه شده است. پس از ابداع این زبان، فیسبوک حجم قابلتوجهی از این سایت را با زبان برنامهنویسی هَک بازنویسی کرد و در حال حاضر هم نسخهٔ اپنسورس این زبان برنامهنویسی در اختیار عموم قرار گرفته است.
یک تفاوت عمدهٔ این زبان برنامهنویسی، رویکردی است که با استفاده از آن به منظور یکپارچگی بیشتر، دیتاتایپها مدیریت میشوند. این خصیصه برای خیلی از زبانهای برنامهنویسی مطرح دنیا مهم شمرده میشود چرا که از بروز خطاهایی که منجر به کِرَش کردن یک برنامه میشوند جلوگیری به عمل میآورد. در واقع، برخی زبانها همچون PHP این کار را به واسطهٔ تست کردن Data Type به صورت همزمان انجام میدهند اما این در حالی است که دیگر زبانهای برنامهنویسی این کار را زمانی انجام میدهند که برنامه کامپایل میشود؛ یعنی پیش از زمانی که برنامه قرار است اجرا شود که اصطلاحاً به آن رویکرد Static Typing گفته میشود.
بنا به گفتهٔ آقای اوسالیوان، رویکرد Data Type به کار گرفته شده در زبان PHP هیچ کاری انجام نمیدهد تا زمانی که برنامه واقعاً اجرا شود. به عبارت دیگر، خیلی از ارورهایی که ممکن است عملکرد سایت شما را تحتالشعاع قرار دهند، زمانی بروز پیدا میکنند که سایت در معرض دید کاربران قرار گرفته است؛ اما زمانی که از زبان برنامهنویسی هَک استفاده میکنیم، ارورهایی از این دست پیش از آن که مخاطبین سایت بخواهند به وجودشان پی ببرند، مورد بررسی قرار گرفته شده و رفع خواهند شد. در یک کلام، خطاها یا ارورها خیلی سریع پیدا شده و رفع میگردند.
هدف از طراحی زبان Hack
طراحان زبان برنامهنویسی Hack هدف از ایجاد این زبان را اجرای آن بر روی ماشین مجازی اختصاصی فیسبوک تحت عنوان HipHop قرار دادهاند که به طور خلاصه HHVM خوانده میشود به طوری که این ماشین مجازی کدهای نوشته شده به زبان PHP را به کدهای کامپایل شدهٔ اثربخشتری مبدل میسازد. به عبارت دیگر، اگرچه برخی از بخشهای قابلتوجه وب اپلیکیشن فیسبوک توسط زبان Hack بازنویسی شده است، اما این در حالی است که مهاجرت از PHP به Hack و بالعکس هیچ مشکلی برای برنامهنویسان فیسبوک ایجاد نخواهد کرد. به گفتهٔ منابع رسمی فیسبوک، بسیاری از فایلهای این وب اپلیکیشن در حال حاضر به زبان هَک نوشته شدهاند اما از متدهایی که با رویکرد استاتیک ناسازگاری دارند، در آنها استفاده نشده است.
به طور خلاصه، زبان برنامهنویسی هَک از بسیاری جهات شبیه به زبان PHP است و در محیط نرمافزاری مشابهی اجرا میگردد؛ بنابراین برنامهنویسان قادر خواهند بود کدهای PHP خود را در جاهای حساس به زبان Hack بازنویسی کنند. به عنوان نمونه سورسکد نوشته شده با زبان Hack داریم:
<?hh
class MyClass {
const int MyConst = 0;
private string $x = '';
public function increment(int $x): int {
$y = $x + 1;
return $y;
}
}
با استفاده از زبان برنامهنویسی هَک، برنامهنویسان به سادگی قادر خواهند بود تا Static Typing و Dynamic Typing را با یکدیگر ادغام کنند که چنین رویکردی اصطلاحاً Gradual Typing نامیده میشود. علاوه بر این، زمانی که وب اپلیکیشنی با استفاده از زبان برنامهنویسی Hack نوشته شود، به سرعت میتوان از برنامهٔ خود فیدبک گرفت؛ بنابراین برنامهنویسان خواهند توانست با دقت بیشتر، سرعت بالاتر و اثربخشی قابلملاحظهای برنامهنویسی کنند.