"Keep Calm and Code JavaScript"

Aprendamos JavaScript

Seguramente habrás escuchado acerca de este lenguaje de programación: JavaScript, el lenguaje de la web.

JavaScript es un lenguaje que corre sobre los navegadores web (Safari, Firefox, Chrome,etc.). Su implementación se encuentra en el motor mismo del navegador y ésta es responsabilidad de cada compañía dueña de dicho navegador (Apple, mozilla, Microsoft, Google, etc.).

JavaScript es una implementación de ECMAScript, un lenguaje de scripting creado por ECMA Internacional. Desde la primera implementación de JavaScript en los navegadores, los creadores de los mismos han tenido ideas diferidas en cómo deben implementarse ciertas reglas, y es así como se llegó a un punto en donde desarrollar aplicaciones con JavaScript era tedioso, dado que se debían hacer verificaciones del navegador que se estaba utilizando y realizar cambios al código para que la funcionalidad de dichas aplicaciones se mantuviera homogénea entre los diferentes navegadores.

La retrocompatibilidad, o sea la compatibilidad con versiones antiguas de los navegadores, sigue siendo un punto a tomar en cuenta al momento de desarrollar aplicaciones web, no sólo con JavaScript sino que este problema afecta a todas las tecnologías que un FrontEnd utiliza (HTML y CSS incluidas). Por fortuna los navegadores modernos han tendido a homogeneizar la implementación de JavaScript, de tal forma que una aplicación probada con un navegador tendrá pocos inconvenientes en otro navegador.

La importancia de JavaScript dentro del ambiente del desarrollo web es tal que hasta la fecha no tiene competidor; el contendiente más cercano ha sido Dart, por parte de Google, lenguaje que recientemente esta compañía decidió no incluir en su navegador web. Por ello es importante aprender este lenguaje, pero debemos ser cuidadosos del material que utilizamos para este fin. En la actualidad existen un sinnúmero de sitios y libros a los cuales podemos recurrir para aprender, el problema es el enfoque que toman, lo cual resulta en desarrolladores que creen saber usar JavaScript cuando simplemente conocen las reglas sintácticas básicas.

Uno de los errores más comunes es pensar que por utilizar otros lenguajes de programación y dada la idea de que todos los lenguajes de programación tienen la misma base (¿Quién no ha escuchado la frase “Todos los lenguajes son lo mismo, solo cambian unas cuantas cosas”?), se llega a un punto sin salida. Primeramente y de gran importancia: la mayor parte de los lenguajes modernos son lenguajes orientados a objetos, por su parte JavaScript es un lenguaje funcional. ¿Qué significa lo anterior? La primer respuesta, tal vez obvia pero un tanto escurridiza, es un paradigma de programación diferente, por ende las reglas cambian.

¿Como aprendemos JavaScript?

La mayoría de los cursos online y parte los libros dirigidos a principiantes toman en enfoque de enseñar mediante las similitudes que tiene JavaScript con los lenguajes de programación orientados a objetos:

  • Sintaxis básica: declaración de variables, concatenación, métodos “estáticos” dentro del lenguaje.
  • Estructuras de control: if, if-else, for, while.
  • Funciones

Pero ¿cuál es la esencia de JavaScript?

Prototyping: Si en JavaScript todo es un objetos ¿Cómo creo métodos, propiedades, accesores y clases? El prototipado es la forma en que JavaScript se relaciona con todo lo que conocemos sobre OOP desde otro lenguajes.

Closures: ¿Cómo es que librerías como jQuery delegan eventos a funciones? Los closures son funciones dentro de funciones, las cuales tienen acceso a variables dentro del scope del que fueron llamadas.

Event Loop: JavaScript es un lenguaje que corre en un solo thread en el navegador ¿Cómo es que puede ejecutar procesos asíncronos? La arquitectura de JavaScript consta de 3 partes: el stack, el heap y el queue; cada una de estas partes tiene una función específica dentro del ciclo de vida de los objetos.

Callbacks: ¿Cuál es la razón de poder usar funciones como parámetros de otras funciones? Sencillo, todo, y me refiero a TODO en JavaScript es un objeto, y los objetos pueden ser argumentos de cualquier función.

Scopes: ¿Cómo funciona la magia detrás de la resolución de funciones y cuál es el misterio detrás de los errores en la consola? Muchas veces el desconocer la forma en que trabajan los scopes es la causa de frustración al momento de desarrollar en JavaScript. Una pista: el scope de una función cambia dependiendo de cómo, quién y en qué momento es llamada.

Promises: ¿Qué pasa cuando se requiere de un recurso del cuál no se dispone de manera inmediata o del cuál no sabemos el momento en el que podremos usarlo? Utilizamos promesas, un mecanismo mediante el cuál nuestras funciones reciben un objeto que será resuelto después, pero sin detener la ejecución de la aplicación por la necesidad de esperar que dicho objeto se resuelva.

La anterior lista es, en mi opinión, un compendio de los principales conceptos que dan las bases para poder desarrollar aplicaciones JavaScript aprovechando las bondades y fortalezas del lenguaje y en última instancia nos da las herramientas para crear código mantenible, legible y óptimo. Probablemente esté pasando por alto temas que para alguien más sean importantes, pero al investigar los temas de esta lista llegaremos a cualquier otro tema que yo haya dejado de lado.

Show your support

Clapping shows how much you appreciated Monge’s story.