IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)

Vous �tes nouveau sur Developpez.com ? Cr�ez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et �tre connect� pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Cr�ez-en un en quelques instants, c'est enti�rement gratuit !

Si vous disposez d�j� d'un compte et qu'il est bien activ�, connectez-vous � l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oubli� ?
Cr�er un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

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

Le , par St�phane le calme

370PARTAGES

4  0 
Facebook pr�sente Hack, son langage de programmation d�riv� de PHP
qui apporte plusieurs nouveaut�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 lu gratuitement 0 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer � vous proposer des publications.

Une erreur dans cette actualit� ? Signalez-nous-la !

Avatar de rawsrc
Expert �minent s�nior 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
3  0 
Avatar de 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 ?

3  0 
Avatar de MagnusMoi
Membre �prouv� 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
2  0 
Avatar de 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).
1  0 
Avatar de rawsrc
Expert �minent s�nior 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;
1  0 
Avatar de 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!
1  0 
Avatar de 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 ;
0  0 
Avatar de Zefling
Expert confirm� 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.
0  0 
Avatar de 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"
0  0 
Avatar de rawsrc
Expert �minent s�nior https://www.developpez.com
Le 21/03/2014 � 16:22
Citation Envoy� par imikado Voir le message
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"
Pour arriver � �a, il faudrait encapsuler tous les appels dans un genre de sandbox (ing�rable � mon avis en php) et encore
0  0