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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langages de programmation Discussion :

Facebook présente Hack, son langage de programmation dérivé de PHP


Sujet :

Langages de programmation

  1. #1
    Chroniqueur Actualités

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    mars 2013
    Messages
    6 185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : mars 2013
    Messages : 6 185
    Points : 149 247
    Points
    149 247
    Par défaut Facebook présente Hack, son langage de programmation dérivé de PHP
    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 ?
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 6 142
    Points : 16 468
    Points
    16 468
    Billets dans le blog
    12
    Par défaut
    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. #3
    Membre éclairé Avatar de MagnusMoi
    Homme Profil pro
    Développeur .NET
    Inscrit en
    février 2013
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Communication - Médias

    Informations forums :
    Inscription : février 2013
    Messages : 119
    Points : 722
    Points
    722
    Par défaut
    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
    True Story Bro

  4. #4
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    décembre 2006
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : décembre 2006
    Messages : 5 235
    Points : 19 557
    Points
    19 557
    Billets dans le blog
    17
    Par défaut
    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 - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $i= new Int(1);
    $chaine= new String('totto');
     
    print $i->toString().$chaine ;
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  5. #5
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    juillet 2009
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juillet 2009
    Messages : 56
    Points : 163
    Points
    163
    Par défaut
    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).

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    mars 2004
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : mars 2004
    Messages : 47
    Points : 0
    Points
    0
    Par défaut
    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.

  7. #7
    Expert confirmé Avatar de Zefling
    Homme Profil pro
    Développeur Web
    Inscrit en
    avril 2007
    Messages
    1 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : avril 2007
    Messages : 1 107
    Points : 4 244
    Points
    4 244
    Par défaut
    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.

  8. #8
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 6 142
    Points : 16 468
    Points
    16 468
    Billets dans le blog
    12
    Par défaut
    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 - Visualiser dans une fenêtre à part
    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;

  9. #9
    Membre habitué
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    avril 2010
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : avril 2010
    Messages : 77
    Points : 164
    Points
    164
    Par défaut
    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 ?



  10. #10
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    décembre 2006
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : décembre 2006
    Messages : 5 235
    Points : 19 557
    Points
    19 557
    Billets dans le blog
    17
    Par défaut
    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 - Visualiser dans une fenêtre à part
    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"
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    octobre 2010
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2010
    Messages : 183
    Points : 409
    Points
    409
    Par défaut
    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!

  12. #12
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 6 142
    Points : 16 468
    Points
    16 468
    Billets dans le blog
    12
    Par défaut
    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

  13. #13
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    février 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : février 2013
    Messages : 88
    Points : 445
    Points
    445
    Billets dans le blog
    1
    Par défaut
    Si on souhaite à avoir du typage fort, on commence par ne pas utiliser PHP.

    Pourquoi ne pas utiliser Java ou ASP.NET qui eux appliquent ces règles de typage fort ?
    Et s'il s'agit juste d'avoir un moyen d'écrire une page PHP qui permet d'écrire très rapidement du texte brut, il existe les HTTPServlet par exemple en Java.

    Bref, c'est du temps de perdu d'avoir écrit un compilateur juste pour vérifier le type de retour de nos fonctions PHP.

  14. #14
    Nouveau Candidat au Club
    Inscrit en
    mars 2004
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : mars 2004
    Messages : 47
    Points : 0
    Points
    0
    Par défaut
    Si on souhaite à avoir du typage fort, on commence par ne pas utiliser PHP.

    Pourquoi ne pas utiliser Java ou ASP.NET qui eux appliquent ces règles de typage fort ?
    Parce que c'est plus difficile à apprendre et plus difficile à déployer sur des serveurs avec un petit budget.

    Un site Internet n'a pas forcément besoin d'une syntaxe verbeuse complexifiant le développement et la simplicité de PHP peut dans ce cas être un avantage.

  15. #15
    Expert confirmé Avatar de Zefling
    Homme Profil pro
    Développeur Web
    Inscrit en
    avril 2007
    Messages
    1 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : avril 2007
    Messages : 1 107
    Points : 4 244
    Points
    4 244
    Par défaut
    Je me sers aussi de PHP pour faire des scripts. Je me vois mal faire ça en Java. De plus, PHP reste quand même vachement plus simple à appréhender : la programmation objet n'est pas obligatoire, la gestion des chaîne est ultra simple, la plupart des méthode demande très peu de code. Parmi les points faibles c'est que la persistance mémoire existe pas (pas possible d'en avoir commune sans passer par des fichiers ou une base), on peut faire un peu n'importe quoi sur les retour, les gestions du typage est parfois pas très évident (même si on peut faire ça maintenant : $i = (int) $j ).

  16. #16
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    juillet 2009
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juillet 2009
    Messages : 56
    Points : 163
    Points
    163
    Par défaut
    Citation Envoyé par black_soul Voir le message
    Parce que c'est plus difficile à apprendre
    PHP est pas plus simple à apprendre, ça permet juste de faire de la merde plus rapidement...
    Puisqu'au final, si tu fais un travail un minimum serieux, tu vas forcement passer par un framework...
    Pourquoi ne pas directement faire du python+django du coup...? Ca marche sur les mutualisés il me semble..?

  17. #17
    Nouveau Candidat au Club
    Inscrit en
    mars 2004
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : mars 2004
    Messages : 47
    Points : 0
    Points
    0
    Par défaut
    Puisqu'au final, si tu fais un travail un minimum serieux, tu vas forcement passer par un framework...
    Euh non, je fais travail tout ce qu'il y a de plus sérieux sans passer par un framework, avec une approche une approche objet mais en gardant un maximum de flexibilité.

  18. #18
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : janvier 2007
    Messages : 697
    Points : 1 237
    Points
    1 237
    Par défaut
    Citation Envoyé par Sources Facebook
    We believe that it offers the best of both dynamically typed and statically typed languages, and that it will be valuable to projects of all sizes.
    Ben voyons, à les entendre, on pourrait jeter tous les autres langage à la poubelle

    En étant un peu plus sérieux, ce langage apporte des avantages que le code de l'article ou sur Facebook ne montre pas vraiment (sur ces exemples un "simple" outil d'analyse de code suffirait, pas besoin d'un nouveau langage). Sur http://hacklang.org/, on peut voir que qu'au final on se retrouve avec un langage semblable (au niveau du typage) à du Java/C#/C++ , à ceci près que le typage explicite des variables locales (déclarées dans une fonction) n'est pas nécessaire (je n'ai pas trouvé si le typage de ces variables est statique ou dynamique).
    L’approche me semble intéressante

    Au niveau des fonctionnalités : Generics, Nullable Type, Collection, Typedef, Lambda, Await/Async (à la C#) => en apparence c'est plutôt un gros plus par rapport à PHP, mais à voir si toutes ces fonctionnalités misent ensembles forment un tout cohérent
    Par contre pour la simplicité (que black_soul présentait comme un avantage de PHP) d'apprentissage et d'utilisation, je pense qu'on peut l'oublier : ça reste au même niveau qu'un Java/C# , à comparer au niveau des perfs (à priori rien n'empèche Hack d'avoir des perfs équivalente, seul la jeunesse de la HHVM est un frein).

    Sinon, je pense que la question que cette actualité aurait du introduire c'est "qui, à part Facebook, aurait intérêt à utiliser ce nouveau langage ?".

    De mon point de vue il peut être intéressant pour une équipe constituée principalement de développeur PHP, sur un projet de taille conséquente ou si les perfs sont critiques. Mais bon je suis sur qu'il existe un bon nombre d'alternatives qui suffisent dans la plupart des cas (cache d'opcode de Symphony...).

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    février 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2008
    Messages : 32
    Points : 36
    Points
    36
    Par défaut
    Faire un hack de php est visiblement plus simple que de faire un IDE qui détecte ce type de code bancal.. Y a d'autres solutions a mon sens.. comme la POO! au lieu d'un "return null" un "return new nullObj", où nullObj a les méthodes magique pour gérer le type d'erreur "Trying to get property of non-object" ou "Call to a member function ..() on a non-object". Bon après l'exemple pour illustrer l’article est peut être pas représentatif des possibilités de hack lol

Discussions similaires

  1. Facebook présente Flow, son contrôleur de type statique pour JavaScript
    Par Stéphane le calme dans le forum Actualités
    Réponses: 0
    Dernier message: 20/11/2014, 05h58
  2. Facebook présente son prototype de sauvegarde sur Blu-ray
    Par Stéphane le calme dans le forum Actualités
    Réponses: 9
    Dernier message: 01/02/2014, 12h29
  3. M# : Microsoft dévoile son nouveau langage open source dérivé de C#
    Par Hinault Romaric dans le forum Actualités
    Réponses: 35
    Dernier message: 17/01/2014, 23h25
  4. IBM dévoile son nouveau langage de programmation Corelet
    Par Cedric Chevalier dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 23/08/2013, 22h54
  5. Réponses: 7
    Dernier message: 21/11/2010, 13h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo