J'ai lu que Facebook avait commencé en PHP, puis pour gagner en rapidité, ils compilent maintenant PHP sous forme de code C ++. Si c'est le cas, pourquoi ne pas:
Juste programmer en c ++? Il doit sûrement y avoir quelques erreurs / bugs lorsqu’on clique sur un bouton du compilateur magique qui porte PHP en code c ++, n’est-ce pas?
Si cet impressionnant convertisseur fonctionne si bien, pourquoi rester en PHP? Pourquoi ne pas utiliser quelque chose comme Ruby ou Python? Note - J'ai choisi ces deux au hasard, mais surtout parce que presque tout le monde dit que coder dans ces langues est une "joie". Alors pourquoi ne pas développer dans un super langage et ensuite appuyer sur le bouton de compilation magique c ++?
<snark>
(Dans la mesure où JS peut toujours être appelé "lisible", c'est-à-dire.)</snark>
Réponses:
Ils ne le font pas. Pas plus, du moins. Cela pose trop de problèmes, notamment des problèmes de déploiement et l’annulation de l’un des principaux avantages de l’utilisation d’un langage de script: pouvoir modifier les scripts sans recompiler. Ils ont donc réorganisé le système HipHop. une architecture de machine virtuelle avec une phase JIT transparente et déconseillé le compilateur C ++.
Il est intéressant de noter qu'apparemment, le faire de cette façon est environ deux fois plus rapide (que dans performant) que l'approche de trans-compilation C ++ d'origine.
la source
L'ingénieur principal de Facebook, Haiping Zhao, répond probablement mieux à vos questions .
Le reste de l'article est une bonne lecture, et je le recommande. Cela donne une idée des problèmes de programmation auxquels Facebook est confrontée et de la façon dont ils tentent de résoudre ces problèmes.
la source
C'est vrai, mais programmer en C ++ impliquerait de remplacer l'intégralité de leur base de code existante - une idée mondialement reconnue pour sa stupidité et sa dévastation.
Cela impliquerait, encore une fois, le remplacement de leur base de code PHP existante.
Dans un monde idéal, ils coderaient simplement en C ++ à partir de zéro. Malheureusement, comme ils ont un tas de code existant en PHP, ce n'est pas possible. Alors, au lieu de cela, ils corrigent le problème. C'est tellement moins cher.
la source
they hack around the problem
? Optimiser le code en C ++ ou même en assembleur n’est pas une nouveauté, il le faisait avant l’installation d’un PC.“En effet, pourquoi ne pas travailler directement en assembleur, car le code C ++ est finalement traduit en instructions de code machine?”
- C’est en substance ce à quoi l’argument se réduit. Et j'espère que cela explique pourquoi cela n'a pas été fait:
la source
Je ne suis pas sur Facebook, mais ma meilleure hypothèse quant aux motifs serait "d’éviter des risques importants". À ce stade, le changement de langue n’est plus une décision technologique: c’est avant tout une décision commerciale.
Lorsque vous êtes une grande entreprise dont la taille correspond à celle de FB, vous attirez lentement des personnes qui acquièrent ensuite une expertise dans votre plate-forme de programmation (dans le cas de FB, il s’agit de PHP). Un par un, vous obtenez quelques milliers d'employés possédant une grande expertise en PHP. À ce stade, le passage à une autre langue devient très dangereux: vos ingénieurs ne maîtriseront pas le nouvel écosystème et auront besoin d'un temps considérable pour atteindre le niveau d'expertise requis par leurs emplois actuels, sans parler de l'amélioration de leurs compétences.
Laissant de côté les mérites relatifs de PHP et des langages alternatifs, avec le montant des investissements que FB a réalisés dans la technologie PHP, il serait trop arrogant de penser qu'un changement serait indolore et trop fou pour le tenter. En affaires, la technologie est un moyen de parvenir à une fin; la "joie" de la programmation n’entre même pas dans les discussions.
la source
Je peux penser à un seul site Web majeur implémenté en C ++. H2G2
Même dans ce cas, l’implémentation actuelle est en fait un interpréteur avec un grand nombre de fonctions de manipulation de texte et de base de données intégrées (cela ne sonne-t-il pas un peu comme au début de PHP :-)).
Facebook est très satisfait des fonctionnalités de son site Web. Ils viennent juste de grandir à un point tel que PHP vanilla ne peut plus supporter les volumes traités. D'où la compilation de PHP en C ++, puis du code machine. Ils auraient pu écrire un compilateur complet pour PHP, mais ils auraient raté 20 années d’optimisation subtile dans la pile du compilateur gcc. Le point est que le code "C ++" n'est pas censé être lisible ou maintenable par l'homme, il s'agit simplement d'une étape intermédiaire sur la voie du code machine.
Comme beaucoup de programmeurs sur ce site, je pense que vous sous-estimez la quantité de travail investie dans la logique et les fonctionnalités de l'entreprise intégrées dans les applications existantes et dans le code de valeur en soi.
la source