Al even verduidelijken: deze post gaat niet over het hacken van Facebook! Integendeel. De titel slaat op de programmeertaal die het sociale netwerk twee weken geleden aan de wereld toonde en die de naam Hack meekreeg. Hoewel Facebook de taal pas 2 weken geleden openbaar maakte, staat ze verre van in haar kinderschoenen. De complete Facebookwebsite en veel van Facebook haar nevenprojecten zijn namelijk al in deze taal geschreven.
Het handige aan Hack is dat het volledig compatibel is met PHP. Sterker nog, zo goed als elk PHP-bestand is een geldig Hack bestand. Wat je er dan nog meer mee kan? Dat lees je hieronder.
Wat HipHop met Hack te maken heeft? Wel, alles. HipHop is een virtuele machine waar Facebook in 2010 mee startte. Om het kort te houden, HHVM (HipHop Virtual Machine) is de opvolger van HPHP(c), een compiler om PHP naar C++ om te zetten. Door de omzetting naar C++ behaalde Facebook enorme snelheidswinsten (tot 6x sneller) tegenover wanneer het het Zend framework gebruikte. Omdat er naast de compiler ook nog een interpretor (HPHPi) en een debugger (HPHPd) zijn gemaakt, werd het na verloop van tijd een serieus werk om al deze tools te onderhouden. Daarop besliste Facebook om alles over te zetten op de HHVM. Na een tweetal jaar was de HHVM zo'n 10% sneller dan de oudere HPHPc. Ondertussen zijn we nog eens twee jaar verder en een paar dagen geleden is versie 3.0.0 van de HHVM uitgekomen.
HHVM is dus een virtuele machine gecombineerd met een (JIT) compiler voor Hack en PHP, met als grootste voordeel de snelheidswinsten die behaald kunnen worden met de VM.
Hack is eigenlijk Facebooks eigen visie van hoe PHP6.0 er zou moeten uizien. Het lost de beperkingen van PHP5 op, vult ontbrekende dingen aan en voegt nog wat extra handige functies toe. Om te beginnen met een van de belangrijkste en opmerkelijkste eigenschappen van Hack: het ondersteunt zowel dynamische als statische typering. Terwijl een belangrijke eigenschap van PHP de dynamische typering is, kan er bij Hack dus toch gekozen worden voor de (striktere) statische typering.
Sterker nog, je kan in Hack beginnen met dynamische typering en in een later stadium toch nog overschakelen naar een statische typering.
Het moto van Hack luidt ook niet voor niets:
Programming productivity without breaking things
Dit slaat vooral op het feit dat je alle bestaande PHP-code gewoon kan gebruiken in een Hack project en deze verder kan uitbreiden met de Hack syntax.
De afbeelding hieronder toont een stukje Hack code.
De syntax is grotendeels overeenkomstig met PHP afgezien van de typering. In de linkse afbeelding wordt er een foute typering gebruikt. De rechtse afbeelding toont de verbeterde versie, die dan gecompileerd kan worden.
Nog een aantal extra voordelen van Hack zijn:
Bovendien is Hack voorzien van een zeer duidelijke en gestructureerde documentatie en kan je door een kleine tutorial vertrouwd raken met Hack.
We kunnen besluiten dat Hack, hoewel het nog een relatief jonge taal is, toch al zeer krachtig is en ons een paar voordelen biedt. Een eerste grote voordeel is dat we errors vroegtijdig kunnen opsporen en een tweede voordeel is de snelheidswinst die verkregen wordt door Hack en de HHVM te gebruiken.