Javascript: el lenguaje de programación que muchos conocen y pocos dominan
Javascript es un lenguaje de programación que vio la luz con el nacimiento de la web. Su propósito inicial fue dotar de mayor dinamismo a los aburridos y estáticos documentos HTML. Con el tiempo el lenguaje fue evolucionando hasta el punto de que muchas páginas web se han convertido en auténticas aplicaciones que, utilizando el HTML y las CSS’s como mecanismo para la construcción de la interfaz gráfica de usuario, se ejecutan en el entorno del navegador web.
Es un hecho que necesita poca justificación, es enorme la proliferación que estas aplicaciones han tenido en los últimos años. Pensemos por ejemplo en los clientes de correo electrónico de Google o Microsoft y en las herramientas ofimáticas que estas mismas empresas ofrecen en la web. Actualmente encontramos aplicaciones web para cualquier tipo de actividad: capturas de vídeo, confección de diagramas, gestión de clientes, entornos de aprendizaje, procesadores de texto, hojas de cálculo, y un largo etcétera. Incluso muchas de estas aplicaciones están desplazando a sus homólogas aplicaciones de escritorio.
Mientras que en el desarrollo de aplicaciones y servicios web del lado del servidor son varios los lenguajes de programación que compiten entre sí, en el lado del cliente, es decir, en el navegador web, javascript se ha convertido en la tecnología ganadora, desplazando completamente a otras tecnologías como Flash o los applets de Java que también intentaron liderar la programación de aplicaciones en el navegador web. De hecho, todos los navegadores web incorporan por defecto un entorno de ejecución de javascript y, aunque siguen existiendo algunas diferencias entre las implementaciones que hace cada navegador, lo más común es que cualquier aplicación javascript se ejecuta en cualquier navegador.
Por eso, en los últimos años han aparecido multitud de frameworks para desarrollar aplicaciones web del lado del cliente con javascript. Estos frameworks son herramientas que agilizan, reducen los tiempos de desarrollo y mejoran la calidad y mantenibilidad de las aplicaciones. Los ejemplos más sobresalientes son Angular, Vue.js, React.js o Embers.js. Pero ahí no termina la cosa. Resulta que javascript ha suscitado tanto interés y ha sufrido un desarrollo tan intenso a lo largo de todos estos años, que actualmente se está utilizando más allá de la web dando lugar a la aparición de frameworks para el desarrollo de aplicaciones en otros dominios distintos, llegando a cubrir todo el espectro de aplicaciones conocidas:
- aplicaciones de escritorio con electron.js o nwjs.js,
- aplicaciones móviles con apache cordova o ionic,
- aplicaciones del lado del servidor con node.js,
Por ello existe un interés creciente por parte de los desarrolladores web en usar estos potentes frameworks. Sin embargo la estrategia que muchos siguen para aprenderlos no siempre es, la más adecuada. Es típica la situación en la que el desarrollador, sin conocer javascript lo suficiente y amparándose en el hecho de que domina otros lenguajes, sigue algunos tutoriales y, “alucinado” con sus bondades y encantos decide utilizarlo para desarrollar su próxima aplicación.
Aquí es donde muchos programadores caemos en la trampa del javascript. Yo también caí. La realidad es que aunque es un lenguaje extremadamente sencillo de aprender superficialmente, es a la vez un lenguaje bastante duro de roer cuando nos proponemos dominarlo. En efecto, cualquier programador medianamente experimentado obtendrá sus primeros frutos en javascript en muy poco tiempo. Incluso las personas que comienzan a programar pueden usar javascript como primer lenguaje y les resultará realmente sencillo. Pero a medida que profundizamos en su uso, es habitual que nos encontremos con ciertas características exóticas y extrañas que nos llevan a “maldecir” al lenguaje una y otra vez cuando algo no nos sale o no nos cuadra. Estas situaciones desesperantes son especialmente comunes cuando nos proponemos aprender alguno de estos frameworks.
La razón principal de esta situación es una falsa sensación de control de javascript, que es más pronunciada incluso cuando no es el primer lenguaje que se ha aprendido. Sucede debido en parte a lo parecida que es la sintaxis de javascript con la de C, C++, Java, PHP y otros lenguajes, y en parte a la idea de que javascript es un lenguaje menor que sirve para adornar páginas web, el programador novel de javascript no es consciente de lo diferente, peculiar y potente que es en realidad este lenguaje.
El tratamiento e importancia del concepto de función, la orientación a objetos basada en prototipos (no en clases), la existencia del bucle de eventos que forma parte del entorno de ejecución para la programación asíncrona dirigida por eventos, los timers, el curioso comportamiento del parámetro this, son solo algunos de los aspectos mal comprendidos o incluso desconocidos de este lenguaje.
Por ello conocer esos rincones “misteriosos” de javascript es fundamental para el aprendizaje de un framework o para desarrollar aplicaciones profesionales. Cuando tomamos consciencia de la peculiaridad del lenguaje y de la necesidad de estudiarlo más a fondo para controlarlo, los misterios se convierten en revelaciones y evidencias y comenzamos a tomar el gusto a este fascinante lenguaje.
En resumen, javascript ha pasado de ser un sencillo lenguaje para “adornar” documentos HTML a un potentísimo y ubicuo lenguaje, con un inmenso arsenal de herramientas y frameworks con el que podemos construir cualquier tipo de aplicación, provocando en los desarrolladores un interés creciente en su uso. Pero hay que tener en cuenta sus peculiaridades y no dejarnos llevar por lo que sabemos de otros lenguajes para utilizarlo de manera eficaz y sin frustraciones.
Juan David Rodríguez es profesor y desarrollador de software. Actualmente ejerce su actividad en el Instituto de Tecnologías Educativas y Formación del Profesorado del Ministerio de Educación y Formación Profesional donde se dedica a la promoción del Pensamiento Computacional y la Inteligencia Artificial en edades tempranas. Ha sido autor y formador de varios cursos sobre diversas tecnologías que utiliza habitualmente en el desarrollo de sus proyectos como javascript, Python, PHP, Symfony, vagrant, git o electron. Es autor del curso de Claves para dominar JavaScript que próximamente ofreceremos en nuestro catálogo.