Facebook présente Hack, son langage de programmation dérivé de PHP
Qui apporte plusieurs nouveautés

Le , par Stéphane le calme, Chroniqueur Actualités
Les ingénieurs Facebook présentent Hack, un nouveau langage de programmation pour HHVM, sa machine virtuelle de seconde génération open source conçue pour exécuter des projets écrits en PHP et en Hack. A titre de rappel, HHVM est le successeur du projet HipHop, une technologie devant convertir du code PHP en code C++.

Facebook indique avoir basculé quasiment l’ensemble de son code PHP sous Hack, l’une des raisons étant qu’il réduit la probabilité de commettre des erreurs simples qui sont un frein au processus de développement. Ci-dessous un exemple d’une erreur courante où une méthode pourrait être appelée de façon inattendue sur un objet nul, ce qui provoquerait une erreur qui ne serait pas prise en compte avant l’exécution.


« Traditionnellement, les langages typés dynamiques permettent un développement rapide mais sacrifient la capacité à chercher des erreurs tôt et à inspecter son code rapidement, en particulier sur de nombreuses lignes de code. Cependant, le typage statique fournit une plus grande sécurité mais parfois au prix de rapides itérations. Nous pensions qu’il devait y avoir un juste milieu. » C’est alors que Hack est né, et Facebook pense que son langage offre à la fois le meilleur des deux types quelle que soit la taille du projet.

Hack a été pensé comme un néo-PHP ; Facebook précise qu’il s’inspire fortement de ce langage. La transition d’un langage vers l’autre est donc censée être simple. D’ailleurs, « la plupart des fichiers valides en PHP le sont aussi en Hack ». « Notre principal ajout est le typage statique. Nous avons développé un système pour annoter les signatures de fonction et les membres de la classe en fonction des informations de type ; notre algorithme de vérification de type (le ‘type checker’) déduit le reste. La vérification de type est incrémentale, de telle sorte que dans le même fichier, une partie du code peut être convertie en Hack tandis que le reste demeure en PHP.». Cependant, Hack ajoute des fonctionnalités supplémentaires au-delà de la vérification du type statique parmi lesquelles Collections ou les expressions lambda.

L’objectif de ce projet est de diminuer la charge imposée aux serveurs en optimisant le code. Les développeurs intéressés sont d'ores et déjà invités à se saisir de ses outils de conversion, voire participer à l'amélioration du langage lui-même.

Installer Hack

Installer Hack Conversion

Source : Facebook

Et vous ?

Que pensez-vous de Hack ? Allez-vous l'essayer ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de rawsrc rawsrc - Modérateur https://www.developpez.com
le 21/03/2014 à 13:55
Je suis assez dubitatif, mais bon pourquoi pas. Cela reste pour l'instant assez focalisé sur leur infra...

Si vous voulez du code typé en PHP, c'est tout à fait possible : il suffit pour cela de coder massivement en POO (pour les primitifs une petite couche d'auto-boxing) et le tour est joué.

Faites quand même attention à tout ce qui n'est pas supporté par Hack (et donc omis à la vérification) : ici
Avatar de MagnusMoi MagnusMoi - Membre averti https://www.developpez.com
le 21/03/2014 à 14:09
Que pensez-vous de Hack ? Allez-vous l'essayer ?

C'est vendredi jour de troll

Plus sérieusement : au vu de la taille de la communauté PHP, de la grande fiabilité de ce langage et du fait qu'il ne soit pas sponsorisé par un sous traitant de la NSA : POURQUOI LE TESTERAI-JE ?

Donc je n'en pense pas grand chose, et ne l'essayerai pas.
Quelque part, c'est un peu comme dart : je ne nie pas le travail effectué ... mais pourquoi passer par des solutions dérivées, quand l'original est un "Standard" ?

Bonne vendredi et relâchez vous les yeux
Avatar de imikado imikado - Rédacteur https://www.developpez.com
le 21/03/2014 à 14:18
Citation Envoyé par rawsrc  Voir le message
Si vous voulez du code typé en PHP, c'est tout à fait possible : il suffit pour cela de coder massivement en POO (pour les primitifs une petite couche d'auto-boxing) et le tour est joué.

Pas bien compris..
COmment eviter l'erreur cité au dessus par exemple où on utilise une méthode d'un objet qui peut potentiellement être null ?

Votre idée de faire du massivement Poo reviendrait à ceci ?
Code php : Sélectionner tout
1
2
3
4
5
  
$i= new Int(1); 
$chaine= new String('totto'); 
  
print $i->toString().$chaine ;
Avatar de Vlozer Vlozer - Membre habitué https://www.developpez.com
le 21/03/2014 à 14:27
Je trouve ça plutot cool que Facebook essaye de soigner son image en s'impliquant dans l'évolution de l'IT (en faisant autre chose qu'internet.org)... toutefois on peut pas dire que l'annonce de ce nouveau langage ait fait mouche pour l'instant...

Perso en tout cas, ca me donne pas envie... Deja parce que j'aime pas le PHP de base, mais surtout parce que ça fait quand meme gros rafistolage...
Autant je peux comprendre que ça puisse etre utile pour la reprise de quelques gros projets vieillissants à fort trafic... autant ça me générai de construire quelque chose de nouveau avec ça (je préfère alors directement passer par un langage que j'aime et qui a été pensé pour être performant dès le début).
Avatar de black_soul black_soul - Nouveau Candidat au Club https://www.developpez.com
le 21/03/2014 à 14:38
Au delà du fait que je pense que proposer une copie conforme d'un langage bien installé avec quelques fonctionnalités en plus plutôt que de chercher à contribuer à son développement, Facebook est une bien mauvaise vitrine pour celle-ci, tant d'un point de vue performances qu'ergonomie.
Avatar de Zefling Zefling - Membre émérite https://www.developpez.com
le 21/03/2014 à 14:49
Que pensez-vous de Hack ? Allez-vous l'essayer ?

En l'état, j'en pense pas grand-chose. Pour quelque amélioration dans la compatibilité ne va que dans un sens, ça ne m'intéresse pas pas trop. Passer à Hack veut dire qu'un retour à PHP sera compliqué, et rien ne dit que Hack va fonctionner au delà de Facebook.

Pour l'instant, j'attends plus les évolutions prévu dans PHP 5.6 que Hack.
Avatar de rawsrc rawsrc - Modérateur https://www.developpez.com
le 21/03/2014 à 14:50
Citation Envoyé par imikado  Voir le message
Pas bien compris..
COmment eviter l'erreur cité au dessus par exemple où on utilise une méthode d'un objet qui peut potentiellement être null ?

Ben l'erreur tu peux difficilement l'éviter à moins de s'assurer explicitement que ce qui tu manipules est du type attendu.
D'ailleurs leur algo, ne t'évite pas l'erreur, il te signale un problème potentiel (si tu codes à la va vite sans filet de sécurité). C'est de l'analyse statique de code comme il est fait en Java, C#...

Pour le reste c'est proche oui.
En utilisant la méthode magique __toString(), il est même possible de s'affranchir du ->toString().
Quelque chose comme ça :
Code php : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Int 
{ 
    protected $v; 
  
    public function __construct($p) 
    { 
        if (is_int($v)) 
        { 
            $this->v = (int)$v; 
        } 
        else 
        { 
            throw new InvalidArgumentException('Integer expected'); 
        } 
    } 
  
    public function __toString() 
    { 
        return $this->v; 
    } 
} 
  
// dans le même genre pour les autres types primitifs :  
$i = new Int(1); 
$chaine = new String('totto'); 
  
echo $i, $chaine;
Avatar de herve4 herve4 - Membre habitué https://www.developpez.com
le 21/03/2014 à 15:01
non mais sérieusement, c'est le 1er avril avant l'heure ou quoi ?

Appeler un nouveau langage de programmation web "hack", ça veut dire quoi ? qu'il est sponsorisé par la NSA ?

Avatar de imikado imikado - Rédacteur https://www.developpez.com
le 21/03/2014 à 16:08
Citation Envoyé par rawsrc  Voir le message
Ben l'erreur tu peux difficilement l'éviter à moins de s'assurer explicitement que ce qui tu manipules est du type attendu.
D'ailleurs leur algo, ne t'évite pas l'erreur, il te signale un problème potentiel (si tu codes à la va vite sans filet de sécurité). C'est de l'analyse statique de code comme il est fait en Java, C#...

Pour le reste c'est proche oui.
En utilisant la méthode magique __toString(), il est même possible de s'affranchir du ->toString().
Quelque chose comme ça :
Code php : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Int 
{ 
    protected $v; 
  
    public function __construct($p) 
    { 
        if (is_int($v)) 
        { 
            $this->v = (int)$v; 
        } 
        else 
        { 
            throw new InvalidArgumentException('Integer expected'); 
        } 
    } 
  
    public function __toString() 
    { 
        return $this->v; 
    } 
} 
  
// dans le même genre pour les autres types primitifs :  
$i = new Int(1); 
$chaine = new String('totto'); 
  
echo $i, $chaine;

J'ai bien compris pour les types mais pour l'histoire de la methode qui alerte parce que l'objet est potentiellement vide donc on pourrait avoir "erreur : call to method of undefinied object"
Avatar de miky55 miky55 - Membre averti https://www.developpez.com
le 21/03/2014 à 16:13
Citation Envoyé par MagnusMoi  Voir le message
sponsorisé par un sous traitant de la NSA

Citation Envoyé par herve4  Voir le message
Appeler un nouveau langage de programmation web "hack", ça veut dire quoi ? qu'il est sponsorisé par la NSA ?

C'est vrai que le non est un peu tout pourri... Mais faut arrêter la parano une minute, ils l'ont nommé hack parce-que c'est un hack de php et pas un framework au dessus de php. Ça reste open source à 100% et dirigé par la communauté... donc la NSA, la NSA, elle a bon dos!
Offres d'emploi IT
Recherche développeur web / start-up / disponibilité immédiate
WAAH - Québec - Montréal
Développeur web collaboratif
Flow Line - Rhône Alpes - Bron (69500)
Jeune docteur deep learning H/F
3C - Ile de France - Paris (75000)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil