Hack: Facebook conquista PHP

Hoy en PHP-Classes he leído un artículo en el que se menciona una posible pugna entre el equipo de desarrollo de PHP y Facebook. Todos saben que Facebook fue construido empleando este lenguaje de programación y que ha invertido tiempo y dinero en desarrollar herramientas que lo mejorasen como HipHop (o HHVM), ¿Quiere Facebook hacerse con el control de desarrollo de PHP?

Facebook presentó a principios de este año su nuevo lenguaje de desarrollo Hack que está basado en PHP y se puede ejecutar en la máquina virtual HipHop, HHVM. Este lenguaje propone una serie de mejoras como la agregación del tipado estático de las variables.

En su web hay un vídeo que permite ver los cambios que supone Hack así como un tutorial interactivo que permite aprender el nuevo lenguaje de forma rápida.

Dado el tamaño de Facebook y la inversión que están realizando en su HHVM, ahora aportando cambios tan significativos a PHP que incluso le cambian el nombre por Hack, cabría pensar que quieren llevar a los usuarios de PHP al nuevo lenguaje, a la nueva máquina virtual y así a un desarrollo de Facebook. El control de PHP pasaría de estar en las manos del equipo de desarrollo de PHP a estar en las manos de Facebook.

No obstante PHP es una comunidad muy extensa de programadores que se han habituado a un lenguaje simple, sencillo y con unas herramientas que funcionan en PHP como Joomla!, Wordpress, Prestashop, … Considero que hasta que ninguna de estas empresas mencione que empleará la HHVM o incluso el lenguaje Hack para el desarrollo de su sistema, todo sigue estando bajo el influjo de PHP.

 ¿Ventajas de Hack?

Los códigos de Hack tienen una forma muy parecida a PHP. El cambio más significativo como mecioné antes es el uso de tipado estático en lugar de tipado dinámico. Esto quiere decir que todas las variables deben definirse con un tipo y los parámetros y devoluciones de las funciones deben contener un tipo también.

No obstante, la especificación de tipos para la variable se puede realizar a través de una carga inicial de un valor. Un ejemplo:

<?hh

// Hack introduces new collection types (Vector, Set and Map).
function test(): int {

  // Vector is preferred over array(1, 2, 3)
  $vector = Vector {1, 2, 3};

  $sum = 0;
  foreach ($vector as $val) {
    $sum += $val;
  }

  return $sum;
}

?>

Este código está extraído del tutorial de la página de Hack. En este caso para poder emplear la variable $sum, esta tiene que inicializarse con un valor entero. El tipo se puede cambiar con una nueva asignación no obstante. Pero para poder emplear la variable debe haber sido inicializada antes.

La función test debe retornar un valor entero. Si intentamos cambiar el return para que retorne una cadena, veremos un error.

Al igual que en otros lenguajes como Ruby o Python, en Hack podemos crear vectores (Vector), conjuntos (Set) o diccionarios (Map) empleando una forma para cada uno. Esto nos garantiza mayor velocidad en el uso de cada estructura de datos al poder disponer de algoritmos más eficientes según el tipo de dato empleado.

Una de las cosas que más me ha gustado ha sido XHP. Esta característica permite agregar HTML/XML dentro del código PHP haciendo la comprobación de que el código está bien escrito y pudiendo agregar variables al código que se escapan automáticamente.

Recomiendo hacer el tutorial a todo aquél que esté interesado en este lenguaje.

 Conclusiones

El lenguaje agrega elementos no disponibles en PHP. Uno de ellos es la capacidad de detectar errores más fácilmente a través de la asignación de tipos a las variables y funciones. Otro de ellos son los objetos para el manejo de colecciones de datos. Pero quizás el que más está viendo la gente resida en el rendimiento que da su máquina virtual. Tanto para PHP como para Hack, la HHVM es una opción muy a tener en cuenta para futuros proyectos en PHP.

¿Te atreverías a probar HHVM?, ¿quizás adentrarte un poco en Hack?, ¿qué te gustaría cambiar en PHP y nunca te atreviste a contar?