lunes, 8 de abril de 2013

'TypeScript Revealed'

No lo había puesto en los despropósitos del año porque los orienté más hacia lo no-técnico, pero terminaba el año pasado con una espinita clavada en el corazón. Y este año quería poner remedio.

Sobre finales de junio un compañero me pidió que le echase una mano con un proyecto que tenía atascado. Era un proyecto personal suyo y ambos estábamos a tope de curro y debíamos «robar» horas para intentar sacarlo adelante. Por motivos que no vienen al caso la parte del servidor se había decidido hacer en Node.js. En cierta forma este compañero es como yo: Cada vez que se embarca en algo aprovecha para aprender en el proceso. En una ocasión normal hubiese agradecido la oportunidad de trabajar con algo tan nuevo como Node.js, pero no era una ocasión normal. Estaba pasando por una época realmente complicada. El cliente del proyecto en el que andaba inmerso estaba convencido de que le habíamos engañado —la empresa en la que trabajo— y nos estaba poniendo muchas, muchísimas, pegas en absolutamente todo. Y se había obstinado en creer que yo era parte del problema. Sobretodo porque yo estaba desplazado en cliente y me convertí, gracias a ello, en la cara visible. Todo el equipo hizo horas extra como burros para revertir esa situación. Ahora vamos a comer juntos y discutimos de lo humano, de lo divino y de lo mundano entre bromas y risas. El camino recorrido desde entonces hasta ahora ha sido complicado y, en él, tuve que dejar cosas atrás.

Como dije hace un momento, en una ocasión normal, hubiese agradecido la oportunidad de pelear con Node.js. Hasta la fecha no había pensado en JavaScript como un lenguaje relevante para nada serio. Más allá de hacer dos o tres cosillas en el navegador, todas adaptaciones de código encontrado en la red de redes, no me había planteado nada sustancialmente importante con él. Pero esa era la oportunidad de hacerme con el lenguaje; algo que a un programador supuestamente curtido como yo no le supondría mucho esfuerzo. Me equivoqué. No era lidiar solo con el lenguaje. Era también pelear con miles de línea de código ya escrito que sonaban a forma antigua y olvidada del Klingon. De repente retrocedí casi veinte años. Trazar el código a mano insertando escrituras en consola para descubrir en qué punto la aplicación podía estar fallando es de las cosas que menos disfruto a estas alturas. Debo haber envejecido mucho, pero trabajar con código ajeno, en un lenguaje que no termino de entender en profundidad, y sin las herramientas mínimas e indispensables para ello —entiéndase un depurador en condiciones— es de esas cosas que alimentan mi pereza hasta extremos insospechados. Me rendí rápidamente, huí cual comadreja del campo de batalla, dejando al compañero en la estacada, y me dediqué por entero a salvar la relación con el cliente. Terminaba el año pasado con buenas expectativas de colaboración para este último, pero sentía que un puñetero lenguaje de programación infernal me había vencido. A mí, que con quince años escribía opcodes de Z80 por pura diversión. En plan Escarlata O'hara levanté el puño y prometí que este año que venía aprendería —en el sentido de dominio— JavaScript y, de paso, algún lenguaje más.

El primer trimestre me centré en otras cosas, pero empezando ya el segundo, retomé el asunto. Sin embargo he aquí que, planeando el modo de aproximarme de la forma menos traumática, descubro un lenguaje llamado TypeScript [@ www.typescriptlang.org]. (Sí, lo sé, voy siempre con retraso; ¿y qué?) Es un superconjunto de JavaScript desarrollado por Microsoft con la colaboración de Anders Hejlsberg [@ Wikipedia] —el mismo que parió Delphi y C#—, un verdadero monstruo en esto del diseño de lenguajes de programación. Puedo levantar el puño y ponerme todo lo digno que quiera en un momento, pero a la hora de la verdad soy un veleta irredento. Así que volví a aparcar la intención de dominar JavaScript y me he puesto con TypeScript. Me lo tomo con un pequeño alto en el camino. Aunque tiene una cosa estupenda: TypeScript es también un traductor a JavaScript (lo que finalmente se ejecuta) y, en VisualStudio, ves cómo se forma el código JavaScript cada vez que guardas el archivo de TypeScript. Personalmente lo veo como una forma tangencial de aprender conceptos avanzados del lenguaje final. Eso sin contar que, siendo un defensor a ultranza del tipado fuerte, trabajar con orientación a objetos más en la línea de lenguajes como C# me ahorrará más de un quebradero de cabeza innecesario —de optar por ponerme con algo serio—.

Siempre que descubro algo nuevo en programación lo primero que hago es buscar algún libro sobre el tema. He tenido suerte y di con una pequeña introducción, 'TypeScript Revealed', que sobre la marcha adquirí y me puse a leer. Es un libro de apenas un centenar de páginas, publicado apenas hace dos meses, que va al grano y te explica exactamente lo que tienes que saber para empezar a disfrutar del nuevo lenguaje, suponiendo siempre unas nociones básicas del lenguaje que es superconjunto. Para mi gusto, cien páginas especialmente bien aprovechadas. Como lector de libros técnicos, especialmente de los dedicados a lenguajes de programación, estoy cansado de que continuamente dediquen cientos de páginas a explicarte una y otra vez lo mismo. Una forma de engordar los libros. Como si los vendieran al peso.

Mi encuentro e iniciación con TypeScript coincide con la presentación en sociedad de la versión 0.8.3.1 (hace apenas una semana) y, de lo visto y probado hasta ahora, tengo pocas críticas y muchas alabanzas. Cierto que aún he hecho poca cosa, pero me está resultado sumamente interesante. Y ya estoy deseando que publiquen la versión 0.9, que traerá una cuantas novedades interesantes.

Preveo un intenso y pasional romance con TypeScript. El que sea corto o largo es irrelevante. Lo importante es que será sincero en todo momento.

¡Ah, sí! Sobre el libro, merece mucho la pena. Se lee en un rato, cual novela. Por 9€ en Amazon (versión Kindle) ni merece la pena descargarlo de forma ilícita. Pero si aún así insisten en no pagar, seguro que lo encuentran fácilmente y resultará igualmente útil. Daño no les hará aprender algo nuevo, eso seguro. La única pega, por poner una, es que con una tecnología tan reciente y en evolución tan rápida, sospecho, se quedará obsoleto en apenas otros dos meses. Han liberado la versión 0.8.3.1 hace una semana, esperan liberar una versión alfa de la 0.9 este mes y el libro trabaja sobre la 0.8.1. Dicho lo cual, repetir que merece la pena igualmente.

No hay comentarios: