Facebook quiere construir un PHP mejor con Hack. Spoiler es realmente bueno.
Hace 10 años, en un dormitorio de Harvard, se lanzó Facebook. Inicialmente, solo era Mark Zuckerberg pirateando una base de código que consistía exclusivamente en código PHP. ¿Cómo funciona Facebook? The Nuts and Bolts [Technology Explicado] ¿Cómo funciona Facebook? The Nuts and Bolts [Technology Explicado] Leer más, interactuando con una base de datos MySQL.
Desde entonces, ha aumentado de tamaño, tanto en términos de usuarios como de desarrolladores que trabajan en un código base en constante crecimiento. Pronto se hizo evidente que si bien PHP era un gran lenguaje para comenzar con Facebook, ya no se adaptaba a las necesidades de la empresa..
Y así crearon Hack, que es un lenguaje especialmente diseñado que permite un desarrollo más rápido, equipos de desarrollo más grandes, al mismo tiempo que mantienen la interoperabilidad con el popular lenguaje de programación PHP Aprende a construir con PHP: un curso acelerado Aprende a construir con PHP: un curso acelerado PHP es el idioma que Facebook y Wikipedia utilizan para atender miles de millones de solicitudes diariamente; El lenguaje de facto utilizado para enseñar a la gente la programación web. Es hermosamente simple, pero brillantemente poderoso. Lee mas .
La recepción de Hack por parte de la comunidad de desarrollo ha sido impresionante. La gente está muy entusiasmada con un lenguaje que es rápido, pero fácil de desarrollar, a la vez que mantiene la compatibilidad con las bibliotecas de PHP existentes en este momento..
Aquí tiene todo lo que necesita saber acerca de la instalación de Hack, así como la forma de mojarse los pies con el idioma..
¿Qué tiene de especial Hack??
Gran pregunta Probablemente sepa que algunos lenguajes de programación se compilan en un código byte que se ejecuta en una máquina virtual especial (como Java y Clojure), mientras que otros lenguajes (como PHP, Ruby y Python) se ejecutan en un intérprete..
Probablemente, también sepa que los lenguajes interpretados son intrínsecamente más lentos que los lenguajes que producen un código de bytes que está específicamente optimizado para las máquinas virtuales en las que se ejecutan. Es por esta razón por la que hay dialectos de Python y Ruby (llamados Jython y JRuby respectivamente) que se ejecutan en la máquina virtual de Java. ¿Qué es la máquina virtual de Java y cómo funciona? ¿Qué es la máquina virtual Java y cómo funciona? Aunque no es estrictamente necesario saber que funciona para programar en Java, aún es bueno saberlo porque puede ayudarlo a convertirse en un mejor programador. Lee mas .
Hack se ejecuta únicamente en su propia máquina virtual, llamada Máquina Virtual de Hip Hop. Es esta máquina virtual que ha sido utilizada por Facebook para escalar a miles de millones de usuarios diarios..
Hack es más que la máquina virtual sobre la que se ejecuta. También viene con anotaciones de tipo, lo que le permite declarar variables en función del contenido que almacenarán (cadena, entero, booleano), lambda (anónima) y funciones genéricas..
Instalar Hack
Tengo malas noticias para los usuarios de OS X y Windows. Hack no funciona en estas plataformas o el soporte es tan inestable que no vale la pena discutirlo. En su lugar, tendrá que activar un VPS de Linux. Aprenda todo sobre servidores privados virtuales en dos minutos Aprenda sobre servidores privados virtuales en dos minutos Con tantos excelentes servicios de alojamiento web disponibles, es difícil decidir cuál es el adecuado para se adapte a sus necesidades. Leer más o VM.
Por pura pereza, terminé decidiéndome a crear un VPS para Linux con Digital Ocean, que es uno de mis proveedores de VPS favoritos. Creé una pequeña gota que ejecuta Ubuntu 13:10 Ubuntu 13.10 Lanzado con Friends Scope, Dash Filters y más Ubuntu 13.10 Lanzado con Friends Scope, Dash Filters y More Canonical ha lanzado la última versión de la fuente gratuita y de código abierto más popular del mundo sistema operativo de escritorio, Ubuntu 13.10 “Salamander Salsas”. Lee más y luego instala Hack con los siguientes comandos.
wget -O - http://dl.hhvm.com/conf/hhvm.gpg.key | sudo apt-key add - echo deb http://dl.hhvm.com/ubuntu saucy main | sudo tee /etc/apt/sources.list.d/hhvm.list sudo apt-get update sudo apt-get upgrade sudo apt-get install hhvm-nightly
Como puede ver aquí, descargo la clave GPG para los repositorios de Hack; agregar el repositorio a mi lista de fuentes; actualizar mis definiciones de fuentes; actualizar mi sistema y luego instalar Hack. Simple, realmente.
Hackeando Con Hack
Ahora es el momento de escribir un código Hack. Comenzaremos con el programa 'Hello World' probado y probado. Este no se ejecutará en un navegador web, sino que imprimirá 'Hello World' en la consola.
Cree un nuevo archivo llamado HelloWorld.php (sí, por alguna razón Hack insiste en usar .php como su extensión de archivo predeterminada) en su editor de texto favorito (mi opción preferida es VIM Las 7 razones principales para darle una oportunidad al editor de texto Vim Las 7 razones principales para darle una oportunidad al editor de texto Vim Durante años, he probado un texto editor después de otro. Nómbrelo, lo probé. Utilicé a todos y cada uno de estos editores durante más de dos meses como mi principal editor del día a día. De alguna manera, yo… Leer más) y agrego las siguientes líneas.
Que debe imprimir Hola Mundo a la consola cuando se ejecuta con 'hhvm', así.
Muy bien, intentemos ejecutar un programa Hack en el navegador. Primero, necesitaremos instalar Apache y PHP. Me he referido a esto en un artículo anterior. ¿Se suscribió para alojamiento web solo para SSH? No se preocupe: instale fácilmente cualquier software web ¿Se suscribió a un alojamiento web solo para SSH? No se preocupe: instale fácilmente cualquier software web ¿No sabe lo primero sobre el funcionamiento de Linux a través de su potente línea de comandos? No te preocupes más. Lee más, pero para refrescar tu memoria, la revisaré de nuevo. Ejecuta los siguientes comandos.
sudo apt-get install apache2 sudo apt-get install php5
También puede instalar Apache, PHP, MySQL y un montón de otras utilidades útiles con el siguiente comando. (No olvide el símbolo al final de la línea: lamp-server no es un paquete único, sino una colección)
sudo apt-get install lamp-server ^
Se recomienda ejecutar esto si planea echar un vistazo más de cerca al desarrollo web con el lenguaje de programación Hack, ya que contiene una gran cantidad de herramientas que pueden resultarle muy útiles..
Una vez que haya hecho eso, reinicie la máquina virtual de Hip Hop con el siguiente comando.
sudo /etc/init.d/hhvm start
Compruebe que Apache se está ejecutando abriendo un navegador y navegando a la dirección IP de su servidor web. Si todo está funcionando, deberías ver esto..
¡Genial! Ahora, navegue a / var / www y elimine la página que acaba de ver (llamada 'index.html') con los siguientes comandos.
cd / var / www rm index.html
Ahora, crea un archivo llamado index.php y agrega las mismas líneas que escribiste antes.
Hola Mundo";
Una vez que haya hecho eso, vuelva a visitar su servidor web con su navegador web elegido.
Como puedes ver, hay algo raro en que Hack reconoce el final de una cadena. Como resultado, me gustaría aprovechar esta oportunidad para recordarles que si bien esta tecnología es bastante buena, todavía es bastante simple y posiblemente no esté lista para implementaciones de producción. Sin embargo, agregaré que estoy ejecutando la versión nocturna de Hack, que es la versión más sangrante disponible. Como resultado, no debería ser demasiado sorprendente que algunas cosas no funcionen perfectamente bien..
Si conoce PHP, es posible que reconozca la declaración 'Echo' que usé antes. Bueno, Hack puede llamar a cualquier función de PHP. Aquí estoy llamando 'phpinfo ();' dentro de un programa Hack.
Algunos Hack Funcionalidad Específica
Hack aporta mucho a la mesa, con respecto a las nuevas características de lenguaje. He discutido algunos de ellos antes, incluyendo declaraciones de tipo. Lamentablemente, no vamos a poder cubrir todo en este artículo, pero pensé que sería una buena idea ver cómo Hack maneja las definiciones de tipos..
Por lo tanto, para recapitular, las definiciones de tipo son donde se define una variable en función del contenido que tendría. ¿Cómo funciona? Bueno un poco asi.
Como puede ver, comenzamos con la declaración de tipo, seguido del nombre de la variable (comenzando con un signo de dólar, como en el PHP tradicional), seguido del valor asignado a la variable.
Esto también entra en juego con las declaraciones de funciones. Cuando declara una función y le pasa un parámetro, tiene que declarar el tipo de variable que va a pasar. Si no lo hace, o si pasa el tipo de variable incorrecto, espere que gimen y se rechinen los dientes.
Entonces, ¿cómo funciona esto realmente en Hack? Vamos a averiguar.
Crea un nuevo archivo llamado 'function.php' y escribe las siguientes líneas.
Si ha usado PHP en el pasado, es posible que pueda descifrar algo de esto. Hemos creado una función, que hemos llamado 'hola'. Luego le pasamos una cadena, que luego se repite en la consola, siguiendo la palabra "Hola"..
Pero que es eso : vacío ¿poco? Bueno, en Hack, tenemos que decirle a la computadora si la función devolverá un valor. Si no lo es, decimos que la función es 'nula'. Como todo con Hack, tenemos que declarar el tipo de valores que serán devueltos..
Luego ejecutamos este código con la aplicación de línea de comandos 'hhvm', y deberíamos ver esto.
Conclusión
Hay mucho que amar sobre Hack.
Es un lenguaje que le obliga a escribir un mejor código, a la vez que es fácil de entender y ridículamente rápido. También cuenta con el apoyo de una de las compañías de tecnología más grandes del momento, que lo utilizan diariamente en la producción para convertir uno de los sitios más grandes en existencia a millones de usuarios..
A pesar de eso, sigue siendo un lenguaje muy nuevo. De hecho, escribí este artículo el día después de su lanzamiento al público. Es difícil recomendar que alguien comience a ponerlo en producción en este momento, pero ciertamente juegue con él..
Pero esa es solo mi opinión. ¿Lo intentarás? Déjame un comentario abajo y déjame saber lo que piensas.
Explora más sobre: Servidor Apache, Programación, Desarrollo Web.