El lenguaje de programación de código abierto de Microsoft, TypeScript, el alter ego de JavaScript pero con un sistema de tipos, cumple 10 años en diciembre.
Ha crecido hasta convertirse en un lenguaje de referencia para crear aplicaciones que se ejecutan en el navegador, pero en 2010 tuvo que abrirse camino a través de una cultura empresarial de Microsoft que todavía temía el código abierto.
El cocreador de TypeScript, Anders Hejlsberg, ingeniero de software danés y miembro técnico de Microsoft, describe a el momento de 2010 en el que, bajo la dirección del entonces jefe de Microsoft, Steve Ballmer, su equipo decidió que una estrategia de código abierto era la única forma de conquistar Desarrolladores de JavaScript.
VER: Kit de contratación: desarrollador de Python (Premium de TechRepublic)
Ballmer en 2001 llamó a Linux un “cáncer” que amenazaba toda la propiedad intelectual de Microsoft, y en 2010 el código abierto en Microsoft todavía era un tema espinoso para la alta dirección.
“Linux era [seen as] una amenaza para Windows, y resulta que es exactamente lo contrario”, afirma Hejlsberg.
Ballmer, quien renunció como director ejecutivo en agosto de 2014, desde entonces se ha retractado de ese puesto y hoy, bajo la dirección del director ejecutivo de Microsoft, Satya Nadella, y con un enfoque en la nube, la compañía ama el código abierto y es propietaria del repositorio de código abierto, GitHub.
Sus otros proyectos importantes de código abierto incluyen el popular editor de código Visual Studio Code (VS Code), .NET Code y TypeScript, un superconjunto de JavaScript con un sistema de tipos que se compila en JavaScript.
Desde su lanzamiento oficial en 2012, TypeScript se ha convertido en un lenguaje crucial para el desarrollo front-end de aplicaciones de navegador, adoptado por empresas como Slack, Airbnb y, por supuesto, Microsoft, que creó VS Code en TypeScript. El lenguaje ahora ocupa un lugar firme entre los 10 principales lenguajes de programación junto con Java, JavaScript y Python.
Pero en 2010, Hejlsberg sabía que presentar TypeScript como un proyecto de código abierto podría ser difícil de vender en la sede de Microsoft en Redmond. A medida que el lenguaje de programación se acerca a su décimo aniversario, Hejlsberg recuerda cómo Microsoft veía todo lo que fuera de código abierto con inquietud.
“Serán 10 años cuando llegue la época navideña”, le dice a . “TypeScript fue en realidad solo una idea de 'Veamos si podemos mejorar un poco JavaScript'.
“Construimos algunos prototipos y los armamos. Pero estaba muy claro que la única manera de atraer a la comunidad de JavaScript es siendo de código abierto. Y en ese momento, esa era una conversación diferente que tener en el momento. Microsoft de ese día.”
El equipo de TypeScript de Hejlsberg “tuvo que llegar hasta el mástil con un grupo de personas que tenían opiniones firmes sobre lo que deberíamos hacer aquí”, dice, sin mencionar nombres de ejecutivos que podrían haberse opuesto. Pero señala que en ese momento, bajo Ballmer, Microsoft era “muy ambivalente” acerca del código abierto y “tenía miedo” de él.
“Sabíamos que era algo que teníamos que hacer, pero no teníamos experiencia en hacerlo”, dice Hejlsberg.
Pero a medida que TypeScript maduró y el código abierto ganó aceptación en Microsoft en su giro de Windows a la nube, en 2014 la compañía cambiaría TypeScript a un modelo de “desarrollo abierto” a través de un repositorio público en GitHub. El uso de GitHub permitió a la comunidad de desarrolladores de TypeScript y JavaScript influir en su futuro.
Debido a ese enfoque diferente, su equipo ahora tiene “distancia cero” con sus clientes: los desarrolladores que utilizan JavaScript o TypeScript.
“Existe el código abierto en el sentido técnico en el que le das a la gente tu código fuente y cedes tus derechos de propiedad intelectual, y técnicamente eso es código abierto”, explica Hejlsberg.
“Pero luego está el desarrollo abierto, donde en realidad haces todo el proceso de desarrollo de forma abierta, lo que hemos estado haciendo desde que TypeScript se mudó a GitHub en 2014”.
Hoy en día, GitHub, que Microsoft adquirió en 2018 por 7.500 millones de dólares, es donde el equipo de TypeScript de unos 20 ingenieros de Microsoft realiza todo su trabajo diario, lo que permite una “cercanía a nuestros clientes como nunca antes había visto”.
Hejlsberg ha estado en Microsoft desde 1996 después de un período en Borland, construyendo el compilador Turbo Pascal. En Microsoft también fue el arquitecto principal de C#.
Antes de pasar a GitHub, Hejlsberg dice que los usuarios de TypeScript enviaban errores o exigían solicitudes en conferencias de desarrolladores, pero su equipo tardaba un año en ofrecer nuevas funciones que a menudo no daban en el blanco.
¿Por qué crear TypeScript?
TypeScript nació en Microsoft en un momento interesante para la web y la empresa. Con Internet Explorer perdiendo participación frente a Google Chrome, Microsoft lanzaría más tarde su navegador Edge en 2015 con el motor JavaScript de código abierto Chakra. Pero para entonces Google Chrome, con su enfoque en estándares web y un potente motor JavaScript llamado V8, ya se había convertido en un claro ganador de la guerra de los navegadores.
“La guerra de los navegadores había terminado, Google había creado Chrome y HTML5 estaba sucediendo. Google también había creado un motor JavaScript muy eficiente y la eficiencia de JavaScript había aumentado enormemente. Todos comenzaban a darse cuenta de que el navegador iba a estar en el lugar real. se estaban creando aplicaciones”, recuerda Hejlsberg.
Para entonces, los desarrolladores habían comenzado a crear enormes aplicaciones JavaScript para el navegador y tenían dificultades para escribirlas en JavaScript, un lenguaje que, según él, carecía de características clave como módulos, clases y, lo que es más importante, un sistema de tipos para crear orden a través de reglas en un programa.
Luego estaban las herramientas de desarrollo, como los entornos de desarrollo integrados (IDE) como VS Code para mejorar la productividad de los desarrolladores.
“Si piensas en lo que impulsa nuestras herramientas de desarrollo, como los IDE modernos, que todos damos por sentado, como Visual Studio o WebStorm [from JetBrains] y otros productos disponibles: todas las funciones de productividad del programador que tenemos, como IntelliSense de VSCode, definición de código y navegación de código, requieren que el IDE pueda razonar sobre el código en el que se está trabajando”, afirma.
“Un sistema de tipos es una forma de razonar sobre su código. Es la capacidad de verificar su código antes de ejecutarlo e implementarlo. Sin tipos en un lenguaje, eso es casi imposible.
“En ese momento, los desarrolladores estaban haciendo cosas locas como escribir un producto completo como Outlook.com, que en un momento fue escrito en una variante de C# que se estaba compilando de forma cruzada con JavaScript utilizando una herramienta llamada Script Sharp”.
Google tenía una herramienta de compilación cruzada similar llamada Google Web Toolkit (GWT), que permitía a sus desarrolladores escribir en Java y realizar una compilación cruzada en JavaScript.
“De esa manera [Google] podría obtener herramientas de desarrollo para adultos. Podrían obtener un IDE real con características del proyecto, módulos y clases e IntelliSense y finalización de declaraciones, y luego podrían ver JavaScript como un lenguaje de instrucción”, afirma.
Antes de que surgiera TypeScript, Microsoft buscaba convertir una herramienta llamada Script Sharp en un producto. Pero Hejlsberg se preguntó si estos desarrolladores estaban dispuestos a “hacer todo lo posible para escribir en JavaScript”. Entonces, ¿por qué no intentar resolver los problemas reales con JavaScript?
“Porque seguramente no vas a crear la mejor experiencia de desarrollo para JavaScript diciéndole a la gente que escriba en un idioma diferente”, dice.
“Así que comenzamos a ver qué podíamos hacer para abordar estos problemas y crear mejores herramientas para JavaScript. Esa fue realmente la génesis de TypeScript. La clave fue agregar un sistema de tipos al lenguaje de una manera que no eliminara todo las cosas que hicieron que JavaScript fuera tan popular en primer lugar”.
Hejlsberg y compañía decidieron construir un “sistema de tipos borrables”, el componente que convierte a TypeScript en un superconjunto de JavaScript. En el momento de la compilación, TypeScript eliminaría todos los tipos y los devolvería a JavaScript.
“En cierto sentido, es un sistema de tipos que sólo existe durante la experiencia del desarrollador, pero desaparece en el tiempo de ejecución. Pero te brinda todos los beneficios y ninguno de los inconvenientes cuando lo ejecutas”, explica.
¿Cuál es el principal competidor de TypeScript?
Según Hejlsberg, el único competidor real de TypeScript es JavaScript, dado que ambos son ahora los lenguajes de referencia para ejecutar aplicaciones front-end, mientras que WebAssembly está borrando los límites entre las aplicaciones nativas y las aplicaciones de navegador.
“Pero JavaScript no es realmente un competidor. Es nuestro gemelo o alter ego”, afirma.
“La pregunta realmente es: '¿Existen lenguajes que compitan con JavaScript y/o TypeScript?' Sí y no, pero todos los lenguajes que ves en estas listas suelen tener un punto de afinidad, como Python que se ha utilizado mucho en el aprendizaje automático y la inteligencia artificial, SQL se utiliza para crear bases de datos y C# y Java son importantes. back-end empresarial.
“JavaScript y TypeScript son, ya sabes, cómo se ejecuta el front-end. Es el único lenguaje que se ejecuta en el navegador, excepto ahora WebAssembly. Por lo tanto, existe una afinidad completamente natural. Si vas a escribir una aplicación web, debes hacerlo”. Lo escribiremos en JavaScript o TypeScript”.
Al igual que JavaScript, Microsoft TypeScript sigue el desarrollo del estándar ECMAScript y cada vez más se desarrolla TypeScript para atender a los desarrolladores que prefieren JavaScript simple.
“Una vez que una característica alcanza la etapa tres en el proceso de estandarización de ECMAScript, la consideramos lista para su adopción en TypeScript y luego trabajamos con la comunidad para fusionar una solicitud de extracción”, dice.
VER: Llega el lenguaje de programación TypeScript 4.0 de Microsoft: es un gran hito
Durante los últimos dos años, el equipo de TypeScript se ha centrado en crear TypeScript “para las personas que no quieren TypeScript” mediante un soporte mejorado para anotaciones de tipo en los comentarios de JavaScript js.doc.
“Debido a que TypeScript es un superconjunto de JavaScript, también se podría pensar en JavaScript como un subconjunto de TypeScript. Y eso significa que toda nuestra cadena de herramientas de TypeScript está perfectamente feliz de procesar JavaScript y proporcionar todos los servicios además de JavaScript”, dice Hejlsberg.
“En cierto sentido, JavaScript es como TypeScript sin anotaciones de tipo. Por eso, una forma popular de usar JavaScript es, en lugar de usar anotaciones de tipo directamente en el código fuente, la gente colocará anotaciones de tipo en los comentarios (comentarios js.doc) y un En realidad, el compilador puede obtener mucha información de esos comentarios.
“Por lo tanto, hemos reforzado nuestro soporte para comentarios js.doc en los últimos años y hemos reforzado nuestra capacidad de consumir JavaScript directamente”.
Imagen: Microsoft/YouTube