Betazeta Networks:BelelúBólidoCHWFayerWayerFW BrasilFerpleiLUPANiubieSaborizanteVeoVerdeWayerless MCUZimio Versión Movil

Temas Calientes

Facebook aplica ritmo al lenguaje PHP con HipHop

57

Facebook aplica ritmo al lenguaje PHP con HipHop

HipHop_logo_whiteFacebook está liberando como código abierto una tecnología que desarrollaron internamente que permite que sitios web escritos en PHP puedan tener un rendimiento sólo reservado para expertos programadores en C++.  El proyecto se inició hace un par de años y luego de demostrar su efectividad, han decidido publicarlo para que otros también pueden participar en su desarrollo, y por qué no, mejorar sus propios sitios web.

Uno de los problemas de sitios de alta demanda como Facebook es la escalabilidad. Se trata de la capacidad de que una solución pueda crecer a medida que se le vaya exigiendo más. Un sitio con buena escalabilidad puede rendir de igual forma independiente del volumen de solicitudes o independiente de su propia complejidad. En el caso de servicios como Facebook, la escalabilidad es algo vital ya que cada vez son más los usuarios que se integran al sistema, agregando nuevo contenido y por lo tanto, más información que procesar y desplegar.  Sitios con problemas de escalabilidad han sido víctimas de su propio éxito, como ocurrió en los inicios de Twitter.

Como muchos otros sitios web de alta demanda, Facebook fue escrito en el lenguaje PHP.  Se trata de pequeños trozos de código que se ejecutan cada vez que un usuario solicita una página.  El lenguaje es bastante flexible pero tiene una restricción de diseño: Está conceptualizado como lenguaje interpretado, lo que significa que cada vez que el usuario pide una página PHP, un programa llamado intérprete debe procesar el código para convertirlo en algo ejecutable por el procesador.

PHP es un lenguaje simple y pensado para simples mortales, por lo que sus expresiones se alejan bastante del código nativo que se ejecuta finalmente en el procesador, esto hace que el código que genera el interprete tenga que agregar operaciones innecesarias por la falta de información precisa sobre lo que el programador quiere lograr, disminuyendo el rendimiento final.

La distancia entre PHP y el código de máquina (o código nativo) es suficientemente amplia como para que sitios como Facebook estén interesados en acercar el código original al código que corre finalmente en el procesador.  Hay que pensar que Facebook ejecuta unas 400 mil millones de solicitudes al mes, que equivalen a unas 13 mil millones de solicitudes por día.  En estos casos, cualquier mejora por mínima que sea es bienvenida.

¡Ya, ya! Pero ¿Qué tiene que ver HipHop?

Hace un par de años, en Facebook vieron que las optimizaciones existentes para PHP eran insuficientes.  En este ámbito una técnica usual es compilar el código PHP a código nativo para no tener que usar un intérprete, pero al final el código que se ejecuta también tiene el problema de agregar operaciones innecesarias, sólo se ahorra el tiempo que el intérprete hubiera ocupado para realizar la conversión.

Otra técnica disponible es implementar parte de la aplicación en un lenguaje cercano a la máquina como C++ y llamar a estos pedacitos veloces desde PHP.  El problema es que esta combinación hace que el código final sea mucho más complejo, y un detalle no menor: También se necesitan buenos programadores en C++, lo que limitaría la capacidad de crecimiento de un sitio como Facebook.

Lo que hizo finalmente Facebook es crear HipHop, se trata de un procesador de código que convierte código escrito en PHP en código C++ puro.  Este código luego se compila con el tradicional g++ (parte de GCC / GNU Compiler Collection) para obtener código nativo optimizado que es funcionalmente equivalente al código original en PHP.

En palabras no tan técnicas, HipHop permite que cualquier desarrollador que escriba PHP logre código final que se ejecuta con el rendimiento del código nativo escrito por un programador experto… Claro que your mileage may vary.

Previamente en Facebook habían realizado algunas mejoras a PHP que fueron enviadas al proyecto principal para que formaran parte del código original, pero no se logró gran mejora.  Otra alternativa era reescribir Facebook en C++, pero eso podría haber detenido el desarrollo de Facebook por mucho tiempo. La gracia de tener un conversor que tome código original en PHP es que los desarrolladores pueden seguir escribiendo su código como siempre y HipHop se encarga de prepararlo para que g++ lo optimice y convierta en código nativo.

La sintaxis de PHP tiene algunas similitudes con C++ por lo que la idea no es tan descabellada.  Si se evita usar las características dinámicas del lenguaje y se escribe pensando en que el código será convertido a C++, HipHop puede procesarlo sin mayor dificultad.

Link: HipHop for PHP – Move fast (Facebook Developers)

57 Comentarios

Facebook aplica ritmo al lenguaje PHP con HipHop

Páginas: 1 2
Ver Todos
Thumb up 0 Thumb down 0 avatar_marko marko dijo hace 10 meses

Php se nota que solo necesitas saber php para hacer todo es a best .

Responder
Thumb up 0 Thumb down 0 avatar_Jonathan. Jonathan. dijo hace 2 años

@Franco Catrin
Ni poniendo los ojos turnios le veo relación con Java

Solo cite lo que mas arriba alguien menciono con ironia.

Y en cuanto a las nuevas versiones de PHP estan tomando bastante similitud en cuanto a POO (sintaxis) se refiere, ese fue mi punto

Responder
Thumb up 0 Thumb down 0 avatar_Jonathan. Jonathan. dijo hace 2 años

@Franco Catrin

100% de acuerdo. Es como MySQL y Oracle, cada uno apunta a resolver diferentes tipos de problemas.

Una vez el creador de PHP dijo algo como : “PHP permitió que no se necesitara ser un computer scientist para crear aplicaciones web, de otra forma internet sería muy distinta a lo que conocemos hoy en día”.

Esto para bien o para mal... hizo bastante mala fama a PHP ya hace unos años por las malas practicas de algunos Noob en programacion, algunos aun lideamos con esa sensacion de que si programas en PHP eres un desarrollador inferior.. que pensamiento tan erroneo (no solo programo en PHP por si las moscas :P )

Responder
Thumb up 0 Thumb down 0 avatar_gevix gevix dijo hace 2 años

@Franco: Una vez el creador de PHP dijo algo como : “PHP permitió que no se necesitara ser un computer scientist para crear aplicaciones web, de otra forma internet sería muy distinta a lo que conocemos hoy en día”.

Y cóóóóómo sería la internet hoy día sin PHP??? ...Creo que exageran con esto ! Están menospreciando a las demás plataformas que sí son realmente buenas.

Responder
Thumb up 0 Thumb down 0 avatar_Alejandro Melo Alejandro Melo dijo hace 2 años

PHP sí puede ser usado como un lenguaje de programación de propósito general, tanto para aplicaciones web como para aplicaciones de escritorio...

Ha sido más que demostrado en entornos GNU/Linux, donde usando una librería gráfica de Python y un wrapper para PHP, se crean aplicaciones espectaculares...

El que diga que no da para más, es realmente un ignorante. PHP es mucho más que "toma el POST, graba en MySQL y devuelve un HTML"...

Es cosa que tengan sus PHP en un directorio cualquiera y ejecuten "php5 archivo.php" y la salida la hagan en texto, no necesariamente en HTML.

Saludos.

Responder
Thumb up 0 Thumb down 0 avatar_supreme supreme dijo hace 2 años

Sexy! A pesar de que estoy en contra de cualquier tecnología que atonte a la humanidad, debo reconocer que es un avance que aporta muchísimo a la internet que se viene :)

Responder
Thumb up 0 Thumb down 0 avatar_Yorsh Yorsh dijo hace 2 años

espero ver lo bueno de ese nuevo compilador , ya que ultimamente carga como las !"$"%!#$"%!@@ el facebook.

Responder
Thumb up 0 Thumb down 0 avatar_h4k h4k dijo hace 2 años

@Yorsh: No es un compilador, es una especie de traductor de PHP a C++

Responder
Thumb up 0 Thumb down 0 avatar_Lord-Nicon Lord-Nicon dijo hace 2 años

@Franco: No seria mejor enfocarse en un solo lenguaje, en este caso php, y potenciarlo de acuerdo a las necesidades de facebook?..con el conocimineto que deben tener los desarrolladores de facebook, no les deveria costar mucho crear scripts para implementar nuevas funcionalidades en la pagina, ultimamente facebook me funciona como las weas, y a mi se me imagina que segun lo que escribes tu estan ocupando una casuela de lenguajes.., que a lo mejor generan estos problemas

Responder
Thumb up 0 Thumb down 0 avatar_F3lip3 F3lip3 dijo hace 2 años

Suena bonito esto de HipHop pero me entran dudas con respecto a las características avanzadas de C++ por ejemplo HipHop es tan inteligente como para usar RTTI cuando corresponda? o que uso hace de las STL? o los casting que si bien puede ser un poco más obvio si se hacen "al estilo C" pero no si se usan las funciones de C++. Me tinca que con eso de "escribir pensando en HipHop" terminas escribiendo un código algo "extraño", pero bien, si optimiza php... igual creo que el camino va por otro lado, si apuntas aplicaciones grandes.

Responder
Thumb up 0 Thumb down 0 avatar_rockerox rockerox dijo hace 2 años

@jonathan
primero aprendan a mantener Framework, ocupar librerias utiles y tecnologicas (jquery,prototype,.etc…) ???
estamos hablando de un lenguaj corriendo en el servidor no en el cliente

Responder
Thumb up 0 Thumb down 0 avatar_Marcelinho Marcelinho dijo hace 2 años

Más que toda la pelea que se ha generado, me pregunto porque diablos le pusieron HipHop.... podrían haberle puesto Rock, o Metal!!!

HipHop es muy flaite, posiblemente es la impresión que quieren dar... flaiterismo para aparecer en la revista benetton, como Chilito....

jajajajaja

Responder
Thumb up 0 Thumb down 0 avatar_Claudio Claudio dijo hace 2 años

Quizá viene por hiPHoP (léanse las letras mayúsculas)

Responder
Thumb up 0 Thumb down 0 avatar_ElAlecs ElAlecs dijo hace 2 años

No coincido con la parte de que PHP solo sirve para la parte frontal, PHP cuenta para mi gusto con cosas nativas muy utiles como "json_encode / json_decode, simplexml, file_get_contents / file_put_contents, strtotime, $x = new stdClass" entre otras cosas que facilitan crear cosas grandes en el backend, creo que su mayor carencia es la falta de aplicaciones externas que faciliten el desarrollo como es Eclipse, Websphere o Visual Studio pero que con Zend Studio y PDT no estamos tan mal o con frameworks como CakePHP.

Responder
Thumb up 0 Thumb down 0 avatar_Francisco Francisco dijo hace 2 años

Excelente articulo. Hay que ver como va creciendo este "transformador" de codigo y si se masifica para su uso.

Responder
Thumb up 0 Thumb down 0 avatar_Satanas Satanas dijo hace 2 años

Patrañas!! dicen que PHP no sirve para hacer aplicaciones empresariales simplemente porque no hay un estandar de como programar en php,

pero si tu equipo de desarrollo usa algun framework no veo el tope, en mi empresa hemos realizado aplicaciones ERP en PHP,

Catrin SUCK!

Responder
Thumb up 0 Thumb down 0 avatar_waajajaja waajajaja dijo hace 2 años

conversion de tipos:

(noten las comillas, $var como String). En php es válido... y en c/c++ ?. Si HipHop pretende ser un conversor, nosé como lo hará para manejar estas MUY COMUNES situaciones, de ahí la necesidad de usar variables con el respectivo tipo (lo cual es la gracia de PHP y es con esto cuando se acerca a java). Como dicen por ahí lo mejor son los frameworks... pero aún así estructuran al php en un 'marco de trabajo'. De ahí que nunca me ha gustado PHP como tal, la posibilidad de la libertad convertida en libertinaje (he visto código artesanal muy horrendo gracias a esto). Para mi: PHP implica framework, y es el framework el que es capaz de hacer grandes sitios; c/c++ no otorgan la misma 'libertad' que php y me es algo tan natural y básico como la palabra 'orden'.

PD: Hip Hop no es ser flaite... edúquese.

Responder
Thumb up 0 Thumb down 0 avatar_waajajaja waajajaja dijo hace 2 años

$var = "120";
echo $var;
$var++;
echo $var;

sorry doble post, pero el sitio no me subió lo que marqué con los tags de code.

Responder
Thumb up 0 Thumb down 0 avatar_bpbrainiak bpbrainiak dijo hace 2 años

Franco, encuentro este tipo de noticias muy positiva para el desarrollo de desarrollo de aplicaciones web (si suena redundante pero creo que comprendes la idea) y si bien soy un C# monkey, a veces me pongo a jugar con PHP (aun que con el nivel de manejo que tengo en php seria super irresponsable lanzarme profesionalmente con ese lenguaje) mis felicitaciones a la gente de facebook por dar este tipo de aportes y a los desarrolladores de php espero que esta nueva iniciativa les haga sacar sonrisas (aun que claro al principio sale una que otra cana pero esos son gajes del oficio)

salu3

Responder
Thumb up 0 Thumb down 0 avatar_FCR FCR dijo hace 2 años

En un futuro cercano, se lograran grandes aplicaciones para implementaciones de PHP como estas(las supercomputadoras tesla interpretando el c++ producido por hiphop y escrito por alguien que no es un experto en c++)

Responder
Thumb up 0 Thumb down 0 avatar_FCR FCR dijo hace 2 años

En los últimos años se ha generalizado el uso excesivo de frameworks para que "cualquiera cree poderosas aplicaciones con pocas lineas"(XD)
Pero muchas veces he visto recomendar usar un framework para alguien que no pasara del hello world!(hablando de eso: http://incendialaciudad.wordpress.com/2010/02/03/presentamos-es-wordpress-com-version-wtf/)

Responder
Thumb up 0 Thumb down 0 avatar_Albert Barrientos Albert Barrientos dijo hace 2 años

Si facebook lo hace así, ¿como lo hace google, con php igual? Porque ese buscador si que lo usa todo el mundo!!!

Responder
Thumb up 0 Thumb down 0 avatar_Jorge Jorge dijo hace 2 años

@Freddy H.

Te entiendo que no hayas cachado nada. Yo lo entendí pero porque ya sabía algo del tema de "PHP" y "código de máquina" (y reconozco que lo tuve que leer lento). Para alguien que no conoce los términos se entiende muy poco el artículo.

Responder
Thumb up 0 Thumb down 0 avatar_Andrés Andrés dijo hace 2 años

Y que ocupa Franco?

Responder
Thumb up 0 Thumb down 0 avatar_FCR FCR dijo hace 2 años

La extensiones de las paginas de ayuda de google son .py
acaso google usa python?

Responder
Thumb up 0 Thumb down 0 avatar_H.Escalona H.Escalona dijo hace 2 años

Por que no me sorprende que la gran mayoria de pseudexpertos que conforman la comunidad Fayerwayer son unos criticones que aprovechan la oportunidad de opinar en un tema buscando virtualmente aparentar, parecer o ser reconocido como un experto, que en la vida real no es.

Simplemente patetico.

Responder
Thumb up 0 Thumb down 0 avatar_JJNC JJNC dijo hace 2 años

PHP = fácil, bonito, y al gratín pero desordenado(pero solo web)
.Net = Muy facil, bonito, rápido, ordenado por la ide, pero hay que pagar (lo bueno es que se puede desarrollar de todo)
JAVA = difícil, feo, al gratín, lento, y ordenado por humanos y frames, sirve para cualquier plataforma.
Como dicen los viejos, al cesar lo que es del cesar, para cada problema, a elegir la herramienta adecuada y no enamorarse con una.

Responder
Páginas: 1 2
Ver Todos

Deja tu Comentario

La opción de comentar está abierta a todos los usuarios, pero te pedimos por favor mantenerte dentro del tema del artículo y no publicar comentarios ofensivos o publicidad basura. Nos reservamos el derecho de eliminar cualquier comentario que no cumpla estas reglas.

Para que aparezca tu foto en vez del icono genérico en tu comentario, el email con el que comentas debe estar inscrito en Gravatar.