Hack (programmeertaal)

Uit Wikipedia, de vrije encyclopedie
Naar navigatie springen Jump to search
Hack
Hack - Logo.png
Verschenen 2014
Ontworpen door Julien Verlaguet, Alok Menghrajani, Drew Paroski, en andere[1]
Ontwikkeld door Facebook
Typesysteem statisch, dynamisch, zwak
Beïnvloed door PHP, Java, C♯
Licentie BSD-licentie
Website URL
Portaal  Portaalicoon   Informatica

Hack is een open source programmeertaal voor de HipHop Virtual Machine (HHVM), ontwikkeld door Facebook 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]

Hack werd geïntroduceerd op 20 maart 2014.[2] Nog voor de publicatie van de nieuwe programmeertaal had Facebook deze al geïmplementeerd en getest op grote delen van hun website.

Kenmerken[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-scrips is ook geldig in Hack; minder frequente PHP-kenmerken en constructies worden echter niet ondersteund.[3]

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.

Syntax en semantiek[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]

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]

Externe links[bewerken]

Noten[bewerken]

  1. Where Credit Belongs for Hack. Bryan O'Sullivan (2014-03-28). Geraadpleegd op 2015-06-20
  2. Hack: a new programming language for HHVM. Facebook. Geraadpleegd op 2015-06-21
  3. Hack Manual: Hack and HHVM Unsupported PHP Features in Hack. Geraadpleegd op 2015-06-21