Leí que Facebook comenzó en PHP, y luego para ganar velocidad, ahora compilan PHP como código C ++. Si ese es el caso, ¿por qué no ellos:
¿Solo programar en c ++? Seguramente debe haber ALGUNOS errores / errores al presionar un botón del compilador mágico que porta PHP a código c ++, ¿verdad?
Si este impresionante convertidor funciona tan bien, ¿por qué quedarse con PHP? ¿Por qué no usar algo como Ruby o Python? Nota: elegí estos dos al azar, pero principalmente porque casi todos dicen que codificar en esos idiomas es una "alegría". Entonces, ¿por qué no desarrollar en un lenguaje súper genial y luego presionar el botón mágico de compilación de c ++?
<snark>
(En la medida en que JS pueda llamarse "legible", es decir)</snark>
Respuestas:
Ellos no. Ya no, al menos. Resulta que hacerlo de esa manera causa demasiados problemas, incluidos dolores de cabeza de implementación y anular una de las principales ventajas de usar un lenguaje de secuencias de comandos en primer lugar, poder cambiar las secuencias de comandos sin necesidad de volver a compilar, por lo que renovaron el sistema HipHop en una arquitectura VM con una fase JIT transparente y en desuso el compilador de C ++.
Curiosamente, aparentemente hacerlo de esta manera también es aproximadamente el doble de rápido (como en el rendimiento) que el enfoque original de compilación trans de C ++.
fuente
El ingeniero sénior de Facebook Haiping Zhao probablemente responde mejor a sus preguntas .
El resto de la publicación del blog es una buena lectura, y lo recomiendo. Da una idea de los desafíos de programación que enfrenta Facebook y cómo están tratando de resolver esos problemas.
fuente
Correcto, pero programar en C ++ implicaría reemplazar toda su base de código existente, una idea mundialmente conocida por ser completamente estúpida y devastadora.
Porque eso, de nuevo, implicaría reemplazar su base de código PHP existente.
En un mundo ideal, simplemente codificarían en C ++ desde cero. Desafortunadamente, debido a que tienen un montón de código existente en PHP, eso no es posible. Entonces, en cambio, piratean el problema. Es mucho más barato.
fuente
they hack around the problem
? La optimización del código usando C ++ o incluso el ensamblaje no es nada nuevo, lo he estado haciendo desde antes de que hubiera una PC."De hecho, ¿por qué no trabajar en ensamblado directamente, ya que el código C ++ se traduce finalmente en instrucciones de código de máquina?"
- Eso, en esencia, es a lo que se reduce el argumento. Y espero que esto haga obvio por qué no se hace:
fuente
No estoy en Facebook, pero mi mejor conjetura sobre los motivos sería "evitar riesgos significativos". En este punto, cambiar a un idioma diferente ya no es una decisión tecnológica: sobre todo, es una decisión comercial.
Cuando eres una gran empresa que creció orgánicamente al tamaño de FB, atraes lentamente a personas que luego adquieren experiencia en tu plataforma de programación (en el caso de FB, eso es PHP). Uno por uno, obtienes unos pocos miles de empleados con gran experiencia en PHP. En este punto, cambiar a cualquier otro idioma se vuelve muy peligroso: sus ingenieros no estarán al día en el nuevo ecosistema y pueden requerir un tiempo significativo para alcanzar el nivel de experiencia exigido por sus trabajos actuales, y mucho menos mejorar sus habilidades.
Dejando de lado los méritos relativos de PHP y los lenguajes alternativos, con la cantidad de inversión que el FB hizo en la tecnología PHP, sería demasiado arrogante pensar que un cambio sería indoloro y demasiado tonto para intentarlo. En los negocios, la tecnología es un medio para un fin, por lo que la "alegría" de la programación ni siquiera entra en discusión.
fuente
Solo puedo pensar en un sitio web importante que se implementó en C ++. H2G2
Incluso entonces, el ión de implementación actual es en realidad un intérprete con una gran cantidad de funciones de manipulación de texto y bases de datos incorporadas (eso no suena un poco como PHP anterior :-)).
Facebook está bastante contento con la funcionalidad de su sitio web. Acaban de crecer hasta el punto en que PHP vainilla no puede soportar los volúmenes que procesan. De ahí la compilación de PHP allí en el código de máquina de C ++. Podrían haber escrito un compilador completo para PHP, pero se habrían perdido los 20 años de optimización sutil que se han introducido en la pila del compilador gcc. El punto es que el código "C ++" no debe ser legible o mantenible por humanos, es solo un paso intermedio en el camino hacia el código de la máquina.
Al igual que muchos programadores en este sitio, siento que usted subestima la cantidad de trabajo invertido en la lógica empresarial y la funcionalidad integrada en las aplicaciones existentes, y valora el código por sí mismo.
fuente