Hack (programmeertaal)
Hack | ||||
---|---|---|---|---|
![]() | ||||
Verschenen | 2014 (9 jaar) | |||
Ontworpen door | Julien Verlaguet, Alok Menghrajani, Drew Paroski, en andere[1] | |||
Ontwikkeld door | 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:
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<!-- hh and html do not mix -->
<?php echo '<p>Hello World</p>'; ?>
</body>
</html>
Met Hack is zoiets onmogelijk, maar dat kan worden opgelost door het gebruik van ofwel XHP, ofwel een template engine.
Functies
[bewerken | brontekst bewerken]Hack laat toe types te specificeren voor functieargumenten en functiereturnwaardes. Functies in Hack worden als volgt genoteerd:
<?hh
// Hack functions are annotated with types.
function negate(bool $x): bool {
return !$x;
}
Zie ook
[bewerken | brontekst bewerken]Externe links
[bewerken | brontekst bewerken]- (en) Projectpagina
- (en) Hack brings static typing to PHP world
- (en) A tutorial on converting an existing PHP project to Hack
Noten
[bewerken | brontekst bewerken]- ↑ Where Credit Belongs for Hack. Bryan O'Sullivan (28 maart 2014). Geraadpleegd op 20 juni 2015.
- ↑ Release 4.172 (2 november 2022). Geraadpleegd op 15 april 2024.
- ↑ Hack: a new programming language for HHVM. code.facebook.com. Facebook. Gearchiveerd op 28 juli 2015. Geraadpleegd op 21 juni 2015.
- ↑ Hack Manual: Hack and HHVM Unsupported PHP Features in Hack. docs.hhvm.com. Geraadpleegd op 21 juni 2015.