Introducción
Calculadoras, celulares, televisores, videojuegos, compras, etc. Todos los elementos de nuestra cotidianeidad se encuentran, en mayor o menor medida, atravesados por la programación. Esto, indefectiblemente, desemboca en una necesidad de profesionales capacitados para programar, haciendo que el mercado laboral IT sea muy atractivo para el empleado. Probablemente, por este motivo, hayas decido aprender. También, y acorde a los tiempos que corren, hayas buscado, y encontrado, tutoriales para ello. En esta búsqueda te aparecieron resultados con títulos del estilo: "Aprende a programar en C#" o "Cómo programar usando JavaScript" y un largo etcétera. Todos estos títulos, sin embargo, tienen algo en común: prometen enseñar a Programar usando un Lenguaje de Programación.
Programación
Programar, o el acto de hacer un programa, se puede definir como el planteo de una secuencia de pasos lógicos (código) utilizados en la resolución de un problema. Cada uno de los pasos se arma utilizando elementos que la programación pone a disposición. Estos son: sentencias, variables, operadores, condiciones, estructuras de control de flujo y funciones.
Vamos a empezar definiendo los elementos que permiten programar:
- Sentencias - Escribir un código implica encadenar una serie de órdenes para que el elemento que vaya a utilizar ese código realize. Esas órdenes (que pueden ser pensadas como las oraciones de un párrafo) son conocidas como sentencias. Cada sentencia representa una acción que debe ser realizada al momento de la ejecución del código.
- Variables - Las variables permiten almacenar valores que, posteriormente, serán utilizados en nuestro programa. Se llaman así porque el valor que almacenan puede cambiar producto de la ejecución del programa (ejecutar = usar). Las variables se componen de dos partes: un identificador y un valor.
- Identificador (o nombre) - permite manipular el valor almacenado
- Valor - dato almacenado.
- Identificador (o nombre) - permite manipular el valor almacenado
- Operadores - Los operadores permiten realizar acciones con los datos almacenados dentro de las variables. Estos se pueden dividir, principalmente, en dos grandes grupos: los operadores matemáticos y los operadores lógicos
- Operadores matemáticos - Permiten realizar operaciones matemáticas con los datos almacenados dentro de las variables
- Operadores lógicos - Permiten generar comparaciones entre los datos almacenados en las variables
- Operadores matemáticos - Permiten realizar operaciones matemáticas con los datos almacenados dentro de las variables
- Condiciones - Las condiciones estructuras creadas mediante operadores lógicos que permiten una evaluación a verdadero (true) o falso (false). Por ejemplo, podríamos preguntar si el valor almacenado en la variable num1 (siguiendo el ejemplo que venimos desarrollando, este sería 10) es más grande que el almacenado en la variable num2 (que sería 30). La respuesta a esta pregunta es falso (false). En programación se vería así: num1 > num2 → false.
- Estructuras de Control de Flujo - Los elementos que usan (ejecutan) los programas tienen que leerlos. Para ello, al igual que cuando nosotros leemos, siguen un orden y una dirección. Eso es conocido como Flujo de Ejecución de un Programa. Existen ocasiones en las que necesitamos que ese orden se rompa (como cuando salteamos párrafos de un texto hasta encontrar la parte que nos interesa leer). Existen dos tipos de Estructuras de Control de Flujo: las estructuras condicionales y los bucles
- Condicionales - Las estructuras condicionales se utilizan para seleccionar qué bloque de código (secuencia de pasos lógicos) queremos ejecutar (usar). Para esto es necesario crear una condición (evaluación) que el elemento ejecutante (navegador, celular, microondas, etc.) utilizará para realizar la selección
- Bucles -Los bucles son usados para repetir una secuencia de pasos lógicos (código). En los bucles es necesario crear una evaluación (condición) para que el elemento ejecutante sepa en qué momento debe dejar de repetir la secuencia de pasos lógicos (bloque de código).
- Condicionales - Las estructuras condicionales se utilizan para seleccionar qué bloque de código (secuencia de pasos lógicos) queremos ejecutar (usar). Para esto es necesario crear una condición (evaluación) que el elemento ejecutante (navegador, celular, microondas, etc.) utilizará para realizar la selección
- Funciones - Las funciones permiten agrupar un bloque de código (secuencia de pasos lógicos) para reutilizarlo a lo largo de nuestro programa.
Cuando realizamos un programa debemos tener en claro cuál es el elemento que va a usar dicho programa, porque eso nos va a permitir saber qué Lenguaje de Programación debemos utilizar.
Al igual que los idiomas como el Español o el Inglés, un Lenguaje de Programación es un medio de comunicación y, así como las personas que hablan Español, pueden entenderse entre sí. Un navegador, por ejemplo, es capaz de entender las órdenes que planteamos en nuestros programas si utilizamos el Lenguaje de Programación JavaScript porque es el idioma que conocen.
La elección del Lenguaje de Programación a aprender, entonces, dependerá del elemento con lo que queramos comunicarnos. Lo mismo que cuando aprendemos Inglés para comunicarnos con personas de Estados Unidos o Inglaterra.
JavaScript: Lenguaje de Programación
Antes comparábamos a los Lenguajes de Programación con los idiomas. Esta comparación no está únicamente pensada para que entendamos qué es un Lenguaje de Programación. Si no también, porque los idiomas tienen una estructura sintáctico-gramatical que debemos aprender si queremos escribirlo. Lo mismo sucede con los Lenguajes de Programación.
Cuando decidimos que queremos aprender JavaScript, estamos diciendo que vamos a estudiar su estructura sintáctico-gramatical y cómo esta es aplicada cuando los programas son ejecutados.
Historia
Antiguamente, si uno utilizaba internet para abrir una página, obtenía una información única y estática que no se podía modificar (lo mismo que si nos muestran una diapositiva de PowerPoint).
En 1995, con el lanzamiento de Windows '95, los usuarios no especializados empezaron a tener acceso a internet. Como consecuencia surgió un nuevo mercado pensado para comercializar dicho acceso. El problema era que es muy difícil vender un producto estático.
JavaScript fue creado por Brendan Eich como respuesta a esta necesidad de que los navegadores web pudieran realizar acciones más dinámicas con el objeto de atraer clientes.
A lo largo de los años, producto de la evolución y la revolución del internet, fue necesario realizar modificaciones al Lenguaje original escrito por Eich para que todos los navegadores web pudieran utilizarlo correctamente. Así es como, a partir del año 1997, JavaScript es mantenido y actualizado por la Ecma International. Además, paso a llamarse oficialmente ecma-262, aunque el nombre original, JavaScript, sigue siendo válido.
Ecma International se ha encargado de generar publicaciones para estandarizar el Lenguaje JavaScript. Es decir, las empresas que desarrollan programas que trabajan con JavaScript deben asegurarse que estos sean capaces de entender los elementos contenidos en las distintas publicaciones realizadas por Ecma International.
El primer Estándar es producto de la publicación realizada en el año 1997. A lo largo de los años se hicieron varias publicaciones y modificaciones de Estándar. Hoy en día, quienes quieran aprender JavaScript, deben hacerlo utilizando el Estándar ECMA-262 6.ª Edición (también conocido como ECMAScript 6 o ECMAScript 2015).
Algo a tener en cuenta es que Ecma International suele hacer actualizaciones al Lenguaje de forma anual. De hecho, la actualización más reciente hasta la fecha (marzo del 2023) es ECMA-262 13.ª Edición (ECMAScript 2022). Pero no toda actualización marca un cambio de Estándar, ya que esto significa cambiar radicalmente las reglas sintáctico-gramaticales que se están utilizando.
El Estándar anterior, ECMAScript 5.1, se sostuvo en el tiempo desde el año de su publicación (2011) hasta el año 2015, cuando se publica el nuevo Estándar.
Cuando trabajamos con navegadores de internet tenemos que tener en cuenta una regla fundamental que se aplica a todo el internet: "No rompas internet". ¿Qué significa esto?. Básicamente, implica entender que en internet podemos encontrarnos con elementos tan antiguos que no están preparados para las nuevas tecnologías, pero que, en el espíritu de "No romper internet" se conservan los elementos antiguos que les permiten trabajar.
Para las personas que buscan aprender JavaScript, esto se traduce en aprender y utilizar el Estándar actual (ECMAScript 6) sabiendo que en algún punto puede ser necesario realizar operaciones con el Estándar anterior (ECMAScript 5).
Características
JavaScript es un Lenguaje front-end pensado para el desarrollo de páginas web. De hecho, una página web se desarrolla aplicando, en conjunto, tres tecnologías: HTML, CSS y JavaScript. Por tanto, al igual que sucede con CSS, si queremos trabajar con JavaScript debemos incorporarlo al archivo HTML que el navegador leerá para mostrar la página web.
Formas de Incorporar JS |
JavaScript es un Lenguaje bloqueante, interpretado just-in-time. Esto quiere decir que cuando el navegador web se encuentra con código JS, deja de realizar otras tareas y se enfoca en cumplir con las órdenes planteadas en el programa. Por ese motivo, si queremos evitar errores, lo más recomendable es agregar los archivos JS poniendo la etiqueta script en la línea inmediatamente superior al cierre del body.
Los Lenguajes de Programación pueden dividirse en dos grandes categorías: fuertemente tipados y debilmente tipados.
Los Lenguajes fuertemente tipados son aquellos que exigen que, al momento de escribir el código, indiques exáctamente qué tipos de valores vas a estar guardando en una variable. Por ejemplo, si a un Lenguaje fuertemente tipado le decimos que queremos crear una varriable llamada num, también debemos decirle qué tipo de valores vamos a guardar en ella (por ejemplo, números). Además, un Lenguaje fuertemente tipado suele ser estático. Es decir, una vez que declaraste qué tipo de valores se almacenarán en una variable no te deja almacenar otro. Siguiendo con el ejemplo anterior, en la variable num nunca podremos letras.
Por otra parte, los Lenguajes debilmente tipados no exigen indicar qué valores se almacenarán en una variable. Esta característica hace que muchos Lenguajes debilmente tipados sean, además, dinámicos. Es decir, si en un Lenguaje debilmente tipado y dinámico creamos una variable num para almacenar un valor numérico, más adelante, en esa misma variable num, podremos almacenar letras.
JavaScript es un Lenguaje debilmente tipado y dinámico.
Conclusión
Programar implica estructurar una secuencia de pasos lógicos que, usando algún Lenguaje de Programación, desarrollaremos para armar un programa.
La elección del Lenguaje de Programación está ligada con el elemento (computadora, navegadores, microondas, etc.) encargado de utilizar el programa desarrollado.
Ecma-262, popularmente conocido como JavaScript, actualmente se encuentra en el Estándar ECMAScript 6 (también conocido como ECMAScript 2015) pero existen navegadores que no son completamente compatibles con el mismo. Por esa razón, el Estándar anterior (ECMAScript 5.1) todavía se encuentra vigente.
JavaScript es un Lenguaje front-end, con tipado débil y dinámico, bloqueante e interpretado just-in-time.
Redes