El lenguaje que amarás odiar
Xsponsor: 5 años hospedando VivaLinux!
Finalmente ya está disponible el video de la presentación oficial de HipHop for PHP realizada en los cuarteles generales de Facebook en Palo Alto, California, el día de ayer. Durante el acontecimiento se revelaron algunos datos muy interesantes del proyecto, como por ejemplo, que comenzaron a implementarlo en sus servidores de producción desde hace 6 meses, y que actualmente Facebook ya sirve un 90% de su contenido con HipHop.
También resumieron su necesidad para iniciar este proyecto en estos cuatro motivos:
Pero además de HipHop, también crearon HPHPi, que es un intérprete experimental diseñado para la etapa de desarrollo de nuevas funcionalidades para Facebook. Con HPHPi no es necesario compilar el código de PHP antes de ejecutarlo en HipHop, permitiendo de esta manera detectar errores prematuramente sin cambiar la forma en la que codifican con PHP.
Las más de 300.000 líneas de código y más de 5.000 Unit Tests de HipHop se publicarán en la cuenta de Facebook en Github, y su repositorio estará hospedado en la dirección github.com/facebook/hiphop-php, aunque al momento de escribir esto todavía no está disponible.

Por una vez los rumores resultaron ser ciertos y exactamente tal como se esperaba Facebook anunció hoy el lanzamiento de HipHop para PHP. Según el ingeniero Haiping Zhao, HipHop les permitió reducir el uso del CPU en sus servidores en un promedio del 50%, dependiendo de la página, resultando en un enorme impacto para todo el sitio de Facebook.
Aunque HipHop se estuvo desarrollándose durante los últimos 2 años, reconocen que todavía no está completo, y la calidad de su código actual puede considerarse como "Beta". Liberarlo bajo la misma licencia de PHP permitiría a su comunidad completar el trabajo, y al mismo tiempo ofrecer un nuevo enfoque a la hora de escalar sitios muy complejos.
¿Pero qué es exactamente HipHop? Según el mismo Zhao:
“HipHop no es técnicamente un compilador. En su lugar es un transformador de código. HipHop transforma tu código fuente PHP en un altamente optimizado código C++ y luego usa g++ (GNU C++) para compilarlo. HipHop ejecuta el código fuente en una manera semánticamente equivalente y sacrifica algunas características raramente usadas -como
eval()- a cambio de una performance mejorada. HipHop incluye el transformador de código, una reimplementación del runtime de PHP y una re-escritura de varias extensiones de PHP comunes para aprovechar estas optimizaciones”.

Aprovechamos esta jornada dominical para suspender nuestra objetividad y hacernos eco de esta noticia relacionada con el reciente rumor sobre los desarrollos internos en Facebook relacionados con el lenguaje PHP.
Ahora se dice que el equipo del núcleo de PHP fué invitado al campus de Facebook y, después de obligarlos a firmar un NDA (Non-Disclosure Agreement), se les demostró el nuevo proyecto Open Source del gigante de las redes sociales. Aparentemente, este próximo Martes Facebook presentaría oficialmente el proyecto bajo una licencia de código abierto. Y se trataría, ni más ni menos, de "algún tipo de compilador para PHP".
La idea no parece del todo descabellada, pues con los más de 350 millones de usuarios que debe soportar Facebook, cualquier pequeña mejora en el desempeño de PHP tendría un gran impacto en toda su infraestructura.
Un bloggero publica partes de una informal entrevista realizada a una amiga y empleada de hace 2 años de Facebook en el marco de la reciente mudanza de esa empresa a Stanford Research Park, lugar que alguna vez fué el hogar de gigantes como Hewlett-Packard, General Electric y Lockheed.
Pero lo que nos interesa de la entrevista es la mención sobre los desarrollos internos que Facebook estaría realizando sobre el mismo lenguaje de PHP:
- ¿Cuéntame un poco sobre los ingenieros de Facebook?
“Son extraños, pero muy inteligentes. Por ejemplo, hay uno que escencialmente está re-escribiendo por su propia cuenta todo el sitio. Nuestro sitio está codificado, yo diría, en un 90% con PHP. Él está creando HPHP, Hyper-PHP, lo que significa que literalementa está re-escribiendo el lenguaje completo.
Hay una diferencia entre codificar en un lenguaje interpretado y uno compilado. PHP es ejemplo de un lenguaje interpretado. La computadora o el navegador lee el programa como un script, de arriba hacia abajo, y lo ejecuta en ese órden: cualquier cosa que declares al final no puede ser referenciado al principio. Pero en un lenguaje compilado (todo) el programa es compilado en un archivo ejecutable. Entonces no es necesario leer el programa desde el principio al final para ejecutar los comandos. Es mucho más rápido de esta manera.
Así que este ingeniero está convirtiendo el sitio de uno que funciona con un lenguaje interpretado a uno que funciona con un lenguaje compilado. ...”
- ¿Y cuál será el efecto de ejecutar el sitio en Hyper PHP?
“Vamos a reducir el uso del CPU en nuestros servidores en un 80%, así que, prácticamente, los usuarios simplemente verán que el sitio es más rápido. Las páginas cargarán en un quinto del tiempo que lo hacían”.
- ¿Cuándo saldrá esto?
“Cuando esté listo. En los próximos meses, idealmente”.
Supongo que en este momento creer lo anterior es sólo una cuestión de fé. Pero considerando que Facebook es uno de los usuarios más grandes de PHP del mundo y que ya tiene más de 350 Millones de usuarios la idea de un "HPHP" no parece tan descabellada.