Imagen de avatar anacareaga
Ana Lilia Careaga

Hack: el nuevo arte de programar en Facebook

Ana Lilia Careaga Mercadillo, Junio de 2014

Abstract

“Hacker” is a double meaning term within the field of computer science. It could be an expert programmer who creates, as an artist, very complex codes in any software language and hardware as well. This kind of hacker has awarded special elite within the field of computing; he enjoys learning programming and he is very clever. However, the other meaning of hacker, and the most known, is referred to someone who breaks the law with his computing knowledge. He acts maliciously. He understands the weak points in a security network or software and he also is known as a cracker. But Hack is a new programming language invented by Facebook for his virtual machine (HipHop VM). This language is an open source license and it can be understood as a new version of PHP that has been running on Facebook servers. Hack was officially introduced on March 2014.

————————————————————————-

Mis alumnos se sorprenden cuando en clase intercalo imágenes de obras de arte con filminas de contenidos sumamente técnicos. Al parecer, la frontera entre el arte y la tecnología solo está en nuestra mente, aunque la mayoría cree que arte y tecnología no tienen nada que ver porque aparentemente la ingeniería parece ser algo preciso, frío y metódico mientras que el arte es la expresión de lo bello. Los ingenieros y, sobre todo, en el caso particular de los verdaderos programadores que inicialmente se conocieron como “hackers”, tienen mucho en común con los artistas porque de la misma manera que los arquitectos, compositores o pintores buscan crear algo nuevo, los ingenieros hacen sutiles ajustes de lo que ya existe para crear algo bueno y en muchas ocasiones estético. No es fácil expresar este tipo de trabajo a través de una publicación científica, tal y como no lo es expresar la belleza en un catálogo de arte.

Enseñar arte en las ingenierías es educar estéticamente. Es posibilitar un desarrollo integral al mismo tiempo que desarrollar una sensibilidad estética que con paciencia permitirá irse integrando en la cultura del ingeniero, quien es en gran medida responsable de modificar nuestra manera cotidiana de vivir. Es por ello que si el ingeniero es capaz de comprender los mensajes estéticos a partir de cualquier lenguaje artístico, será capaz de crear belleza que se traducirá en un bienestar tanto para el individuo como para las sociedades; el ingeniero civil deberá hacerlo en sus construcciones, el electrónico es sus dispositivos y el ingeniero en computación en el software de sus programas. En la docencia descubrí que los mejores grupos de ingenieros no eran los que tenían el prefijo “Ing.” o “PhD”, sino los que trabajaban con su mente creativa. Sin embargo, creo que sería más difícil juzgar a un ingeniero como artista porque no es fácil distinguir cuando un software o una máquina aspira a un diseño bello. Se requiere tener un buen conocimiento técnico además de una buena sensibilidad. La única prueba, como en el caso del arte, es el tiempo porque a través del paso del tiempo es como las cosas bellas trascienden y las feas se olvidan. Una amiga flautista dice que la reputación de los músicos contemporáneos tardará un siglo en comprobarse. Nuestro ciclo vital no alcanza para dar testimonio hacia adelante, sino solo hacia atrás. Afortunadamente en tecnología estos ciclos son más cortos, y es por ello que la ingeniería está obligada siempre a ser mejor de lo que es. Debe ser diseñada con todo detalle y dedicación, de manera semejante como lo hace la pintura. Por ejemplo, cuando Leonardo da Vinci pintó “La dama del armiño” (Cecilia Gallerani)[1] seguramente dedicó mucho tiempo a pintar con detalle la mano de Cecilia; cada uña y cada dedo con sus respectivos nudillos mostrando los tendones que permitieran visualizar una natural flexión al acariciar al armiño. Curiosamente, el esfuerzo impreso en cada detalle de la pintura: en los hombros redondeados y su cuello alargado y adornado con un collar o en el rostro con nariz perfecta y delicada sonrisa no dependen del tiempo que se le dedique a mirar la pintura. Porque ese ser implacable en lo aparentemente minúsculo es lo que se hace notorio. Porque todos esos pequeños detalles sumados y aparentemente insignificantes son los que producen algo impresionante; como si muchas voces o instrumentos cantaran un canon al unísono.


Análogamente, en la tecnología y en particular en el desarrollo de software se requiere de una fanática devoción por la belleza; porque si se busca en el interior de un buen programa de software es posible apreciar cierto tipo de belleza cuando hay sintaxis y semántica en su escritura. Esto significa que un lenguaje de programación debe ser, por encima de todo, maleable. Porque para el programador su lenguaje es como los pinceles para el pintor; y éste debe ser diseñado para pensar los programas y no para expresar lo que ya se pensó. Los ingenieros de software requieren de un lenguaje en donde ellos puedan escribir con lápiz y no con pluma; donde puedan garabatear y borronear; ensuciar y experimentar; tal y como lo hace un pintor o un arquitecto en sus bocetos. Durante mucho tiempo me cuestioné por qué no disfruté la programación en la universidad. En ese entonces se tenía que programar en una hoja de papel y no en la terminal de la computadora. De esta forma, se escribía el código sin saber siquiera si eso iba a funcionar y si no lo hacía, que era lo más probable, había que hacer una depuración para enmendar errores y omisiones. A mí me hubiera gustado tener la posibilidad de haber hecho algo parecido al bosquejo que hacen arquitectos y pintores; no es posible comprender los programas sin irlos ejecutando al mismo tiempo. Ahora lo veo claramente: los programadores deben comprender la computación tanto como los pintores y arquitectos la química de los materiales y pinturas que utilizan. Pero no sólo eso, el creador nace de la práctica; primero como una copia de los grandes maestros y después bajo su concepto original. Durante años la formación artística ha consistido en seguir ejemplos de “los grandes” porque al copiar se obliga forzosamente a poner atención a los detalles. De la misma manera, el programador aprende de la práctica, y en muchas ocasiones comienza desde muy joven. El ejemplo de la pintura de Leonardo nos enseña que la práctica hace al maestro y que ésta se enriquece también con el trabajo colaborativo. Muchas obras de arte han sido producto de un trabajo colectivo, como es el caso de la Capilla Sixtina en el Vaticano. Miguel Ángel Buonarroti pintó la bóveda y “el Juicio Final” aplicando una difícil técnica llamada “fresco buono” que consistía en la aplicación de ciertos pigmentos en el techo para que al pintarlos la pintura penetrara en la superficie volviéndose insoluble con el agua. El problema fue que había que pintar antes de que el techo secara y para ello debió requerir ayudantes aprendices. Además, otro grupo de pintores renacentistas que incluyeron a Sandro Boticcelli, Rafael Sanzio y Pietro Perugino pintaron los frescos de Jesucristo y de Moisés que se ubican a la izquierda del “Juicio Final” de Miguel Ángel. El trabajo en equipo por los diferentes pintores dio como resultado esta obra de gran belleza. El trabajo colaborativo induce una sinergia positiva mayor que la suma de todas las contribuciones hechas individualmente. Este modelo colaborativo también es válido para el desarrollo de software pero, al igual que en la pintura, la forma acertada para colaborar es dividir la programación en módulos bien definidos. Nunca sería buena idea que un pintor pintara sobre la pintura de otro; como tampoco lo es que un programador encimara su código en el de otro.

Por otra parte, para el pintor, conocer las obras que hay en los museos resulta enriquecedor porque es una manera de mejorar sus técnicas; de manera similar, el programador podría aprender a mejorar sus técnicas estudiando los buenos programas en código fuente que fueron escritos anteriormente. Ésta es quizá la mejor aportación del software libre de código abierto; que cualquiera puede aprender de programas ya hechos y además puede mejorarlos o complementarlos.

En la programación como en la pintura hay tareas ambiciosas y otras totalmente aburridas y rutinarias. Es bueno elegir el momento para cada una de ellas. Creo que toda actividad creativa funciona así, por lo que esto también es cierto para músicos, arquitectos y escritores. Creo que sería bueno que los programadores actuaran más como artistas, y, de hecho, particularmente la pintura ha sido una fuente de inspiración para los buenos programadores conocidos como “hackers”; pero no los “hackers” en su sentido criminal, sino en su significado original como “Auténtico Programador” (Real Programmer).

Así que… al parecer, un hacker y un artista no son tan diferentes y Arte + Tecnología es = magia. ¿No es maravilloso? En la vida hay que enfocarse a lo grandioso.

¿Quieres saber más sobre los hackers y el nuevo lenguaje de programación “Hack” ?


Continúa leyendo…

Comenzando con lo básico: Hackers de sombrero blanco y sombrero negro

¿En qué piensas cuando escuchas la palabra hacker?

Seguramente en un criminal que te roba información y hace fraudes informáticos; pero no todos los hackers son criminales ni son iguales; hay hackers buenos y malos, de sombrero blanco o negro, inclusive de sombrero gris. Lo que sucede es que se desconoce el significado de la palabra y únicamente la asociamos a personas que tienen habilidades computacionales. La palabra “hack” podría traducirse como golpe o “hachazo”. A principios del siglo XX los “hackers” eran solo leñadores pero con el auge de la informática y la aparición de las primeras redes de cómputo éste término dio un giro para referirse a los que se autodenominaban “auténticos programadores o real programmers”. Parece ser que los primeros en emplear este término fue un grupo de estudiantes del MIT (Massachusetts Institute of Technology) que participó en el primer curso de programación que se impartió en esta institución en 1959. Estos estudiantes fueron los primeros en pensar que las computadoras podrían aplicarse en muchos campos pero para ello decidieron primero crear una ética de comportamiento, conocida posteriormente como la “ética del hacker”[2], desarrollada en el laboratorio de Inteligencia Artificial y vigente hasta nuestros días para los verdaderos programadores. Los hackers de esta época provenían de disciplinas como la física, matemáticas o ingeniería. Vestían de una manera peculiar, con camisa de poliéster y corbata; calcetines y sombrero blanco así como gafas sesenteras. Programaban en lenguaje ensamblador y una gran cantidad de lenguajes de los cuales solo sobrevive Fortran. Fueron los programadores de las supercomputadoras de procesamiento por lotes y adornaban sus laboratorios con las listas de las Leyes de Murphy[3] y un póster de “Blinkenlights”[4] , el cual todavía se observa en muchas aulas de computación.

Sin embargo, con los avances tecnológicos, este significado se fue modificando y diversificando porque el objetivo científico con el que nació la computación fue ampliándose junto con el auge de las redes. Es fácil deducir que un hacker de los años 60ta o 70ta no es lo mismo que uno del siglo XXI. En un inicio, los hackers buscaban el bien, no tenían propósitos criminales u oscuros; entonces… ¿por qué ahora se les relaciona con delincuencia? No es fácil comprender el proceso de esta transformación semántica pero lo más probable es que haya sido una suma de mitos relacionados con las acciones de algunos programadores con la ignorancia de los medios. En realidad, no todos ni solo los hackers hacen robos y estafas; también lo han hecho financieros y abogados. Entonces, no parece tener sentido relacionar una actividad profesional con el crimen. Ante esto, los académicos de las Ciencias de la Computación han buscado su reivindicación y se les ocurrió hacer una pertinente clasificación de la cual se desprende la más genérica y conocida por muchos: hackers y crackers; buenos y malos. Sin embargo, en la década de los 80ta se amplió a “white hat” (sombrero blanco) “black hat” (sombrero negro) o “gray hat” (sombrero gris”), según se tratara de hackers buenos, malos o una combinación de los dos. Los hackers de sombrero blanco son los éticos, los que buscan vulnerabilidades en los sistemas informáticos pero para la protección de los usuarios y en general trabajan como consultores en las áreas de seguridad informática. Por otro lado, los de sombrero negro, son los chicos malos y los que todo mundo conoce como criminales y crackers; crean virus y troyanos; buscan la manera de romper la seguridad inminente en un sistema o bien por algún error humano. Su motivación, como en la mayoría de los crímenes, es el dinero. Por último, el hacker de sombrero gris juega a ser bueno y malo a la vez, manteniendo una ética falsa y ambigua.[5]

Posteriormente, con la llegada de Internet, fue necesario hacer un ajuste y a partir de aquí ha nacido toda una taxonomía de hackers; los más conocidos son:

• Los “Scriptkiddies”; son los que emplean programas que no hicieron ellos para entrar a algún sistema, página web o red. Por lo tanto, si bien tienen algunas habilidades de cómputo, no tienen conocimientos de programación.
• Los “Phreakers”, son los hackers que están especializados en Telecom; por lo que manipulan las tecnologías inalámbricas, celulares, VoIP, etc.
• Los “Newbies”, son los novatos que bajan utilidades y programas de hacking a su computadora, pero solo por curiosidad. En general son inofensivos.
• Los “Lammers”; son los que presumen sobre sus actividades y habilidades de hacker pero nunca lo llegan a ser porque nunca alcanzan a tener los conocimientos a pesar de que dicen haber bajado muchos videos de YouTube y tomado “n” cursos. Son fácilmente reconocibles por sus amenazas sobre el hackeo a las cuentas de Facebook de sus amigos o porque dicen saber programar en varios lenguajes como Ruby on Rails, Phyton y hasta en binario. En realidad, también les llaman “los wanna be”.

Pero no todas estas clasificaciones han sido las únicas ni lo serán porque ha existido un gran dinamismo en el significado del término “hacker” y lo seguirá habiendo por no tener una autoridad que regule de manera anticipada los efectos de los cambios tecnológicos. Sin embargo, sí es pertinente diferenciar un ciberdelicuente de un verdadero hacker, más parecido al pintor, al músico o al arquitecto que al mito que los medios de comunicación nos han ido imponiendo.

Pero, además de todos estos significados y clasificaciones, aún hay otra palabra que tiene que ver con la acción de hackear, y ésta se es “Hack” que se refiere a un nuevo lenguaje de programación creado por Facebook que busca no solo ampliar las facilidades de PHP sino otra metáfora que pueda acercarse más al verdadero origen informático de la acción hackear.

Hack: el nuevo lenguaje de programación de Facebook


Hack es un lenguaje de programación parecido a PHP desarrollado por Facebook y lanzado en marzo de 2014 que soluciona algunos problemas que se habían tenido en el desarrollo web como la ejecución sobre una máquina virtual permitiendo mejorar el rendimiento de un sitio web. Alok Menghrajani, Bryan O’Sullivan y Julien Verlaguet, ingenieros de software de Facebook, describieron a Hack como “lenguaje del futuro” porque da la posibilidad de crear sitios web muy complejos con rapidez sin dejar de asegurar que el código funcione de manera correcta y sin fallas. Facebook es uno de los sitios (servidores) que más corre el lenguaje PHP pero recientemente lanzaron su propia versión de PHP para adaptar más el lenguaje a las necesidades particulares de una red social. Los desarrolladores de Facebook ya habían hecho herramientas en código abierto para hacer algunas mejoras, como lo fueron en su momento HipHop y un compilador que convertía PHP a C; pero después de su desarrollo del compilador JIT optaron por el desarrollo de una máquina virtual HHVM.

Sin embargo si comparamos Hack con PHP podemos concluir que son muy parecidos pero Hack tiene código adicional que facilita el desarrollo y evita cierta problemática de tipado que se tiene con PHP; hace una mezcla de tipado estático y dinámico. Además, la parametrización de clases para crear instancias las amplía agregando valores como “null”, “closures” y “shapes”.[6]

Aunado a lo anterior, Hack tiene otras novedades. Por ejemplo, el programador puede declarar funciones como asíncronas (async) e invocarlas con await; algo parecido a C#. Otra característica adicional es la posibilidad de hacer herencias múltiples.

Pero ya revisando minuciosamente todos los cambios, se puede concluir que Hack no es un nuevo lenguaje sino una nueva versión de PHP; de una manera similar a lo que hizo CofeeScript con Javascript. En realidad, los programadores de Facebook están hechos con PHP y solo se les está dando la solución a necesidades específicas de las redes sociales.

Se puede descargar Hack y sus tutoriales en:

http://hacklang.org/

Conclusiones

En cierto sentido, es algo ingenuo tratar de discutir el verdadero significado de lo que es un hacker; la gente usa las palabras de acuerdo al significado que entienden. Tampoco soy miembro de la Real Academia Española ni tengo control sobre los medios de información para que se use la palabra hacker de acuerdo al significado original. Pero eso no impide tener claro que un hacker es un creador; porque si fuera solo un ejecutor “de código”, haría su trabajo de rutina como quien cava una zanja. Es un creador porque al igual que el pintor o el escritor requiere inspiración. Tampoco es un científico porque el hecho de que ellos aprenden a programar programando, los científicos no hacen ciencia haciendo ciencia sino haciendo un trabajo que ya es perfecto.

Referirse a los hackers como criminales tiene otra palabra: delincuente y su acción no es hackear, sino delinquir. Apoyarse en la etimología de las palabras, podría ayudar a describir mejor las realidades sociales.

Referencias

[1] La dama del armiño fue pintado en el período 1499-1490. Se conserva en el Museo Czartoryski, Caracovia. Se cree que la obra representa a Cecilia Gallerani, la amante de Ludovico Sforza, duque de Milán. Se han dado numerosas interpretaciones a la presencia de este animal. Los armiños se asociaban con la aristocracia, y la relación de Cecilia con este símbolo puede haber sido intencional. Se ha entendido como símbolo de pureza por su pelo blanco; en los bestiarios medievales, el armiño representaba algunas virtudes como el equilibrio y la tranquilidad

[2] Himanen, Pekka “La ética del Hacker y el espíritu de la era de la información” disponible en http://eprints.rclis.org/12851/1/pekka.pdf

[3] La ley de Murphy es una forma cómica y mayoritariamente ficticia de explicar los infortunios en todo tipo de ámbitos que, a grandes rasgos, se basa en lo siguiente:”si algo puede salir mal, saldrá mal”

[4] Es un neologismo del hacker y se refiere a los focos que se encendían en las mainframes

[5] Citado en Lundstrom, David “Auténticos Programadores” en “A Few Good Men From UNIVAC”, 1987

[6] Citado en https://code.facebook.com/posts/264544830379293/hack-a-new-programming-language-for-hhvm/

Una respuesta para “Hack: el nuevo arte de programar en Facebook”

  1. Articulo interesante e informativo. Ana describe experiencias cercanas con familiaridad la creatividad artística y la compara con la abstracción de un lenguaje que al final facilita la comunicacion humana en sus nuevas formas del siglo 21. Es natural ver la belleza de un puente en el que en sintesis se han resuelto con elegancia y simplicidad aparente todas las complicaciones derivadas de las las leyes de la física que se concretan en la mecanica de estructuras y de mteriales. Son Arquitectos e ingenieros creadores y artistas con un gran respaldo de ciencia y tecnología. Por otro lado se podría decir como lo menciona Ana en su artículos que en todas las profesiones hay “Hackers” tablien de sombreros negros grises y blancos. Tal vez con los años el termino “Hacker” se extendrá mas y se usará para describir comportamientos en otras profesiones que tambien se sirven de la tecnología y que hasta hace algunos años el termino no hubiera sido tan bien entendido.

Deja un comentario