Hack (programmeertaal)
| Hack | ||||
|---|---|---|---|---|
| Verschenen | 2014 (11 jaar) | |||
| Ontwerper | Julien Verlaguet, Alok Menghrajani, Drew Paroski, en andere[1] | |||
| Ontwikkelaar | Meta | |||
| Huidige versie | 4.172[2] (2 november 2022) | |||
| Typesysteem | statisch, dynamisch, zwak | |||
| Beïnvloed door | PHP, Java, C# | |||
| Licentie | BSD-licentie | |||
| Website | (en) Projectpagina | |||
| ||||
Hack is een opensourceprogrammeertaal voor de HipHop Virtual Machine (HHVM), ontwikkeld door Meta als een dialect van PHP. De taal is beschikbaar onder een BSD-licentie.
Hack staat programmeurs toe om zowel dynamische als statische typesystemen te gebruiken. Dit typesysteem noemt men geleidelijke typing, wat ook geïmplementeerd is in talen zoals ActionScript. Hacks typesysteem laat toe types te specificeren als functieargumenten, functiereturnwaardes en klasse-eigenschappen; types van lokale variabelen kunnen echter niet worden gespecificeerd.
Geschiedenis
[bewerken | brontekst bewerken]Hack werd geïntroduceerd op 20 maart 2014.[3] Nog voor de publicatie van de nieuwe programmeertaal had Meta deze al geïmplementeerd en getest op grote delen van hun website.
Kenmerken
[bewerken | brontekst bewerken]Hack werkt naadloos samen met PHP. Deze wereldwijd gebruikte scriptingtaal is bij uitstek geschikt voor webontwikkeling en kan genest worden in HTML. Een groot deel van gevalideerde PHP-scripts is ook geldig in Hack; minder frequente PHP-kenmerken en constructies worden echter niet ondersteund.[4]
Hack breidt het type hinting van PHP5 uit door static typing te introduceren, door nieuwe type hints toe te voegen (bv., voor scalar types zoals integer en string), alsook door de uitbreiding van het gebruik van de type hints (bijvoorbeeld voor klasse-eigenschappen of functiereturnwaardes). Types van lokale variabelen kunnen echter niet gespecificeerd worden. Omdat Hack standaard gebruikmaakt van het gradual typing system, zijn typeaantekeningen niet verplicht, zelfs niet waar ze niet van afgeleid kunnen worden. Het typesysteem zal steeds aannemen dat de auteur gelijk heeft en de code voor waar aannemen. Er is echter wel een 'strict'-modus beschikbaar die zulke aantekeningen vereist en dus volledige code afdwingt.
Syntaxis en semantiek
[bewerken | brontekst bewerken]De basisstructuur van een Hack-script is hetzelfde als dat van PHP maar dan met enkele wijzigingen. Hack start met <?hh in tegenstelling tot <?php in PHP:
<?hh
echo 'Hello World';
Het bovenstaande script, dat gelijkaardig is aan PHP, geeft volgende output naar de browser:
Hello World
Een belangrijk punt is dat in tegenstelling tot PHP, Hack niet met HTML kan worden gemengd. PHP- en HTML-code kunnen in hetzelfde bestand worden gebruikt: