Tarjetas para aprender JavaScript: Introducción

En la siguiente serie de artículos vamos a estar presentando las tarjetas para aprender JavaScript, que pueden ser utilizadas para una guía de referencia conceptual y de sintaxis para rellenar huecos que puedan suceder durante nuestro aprendizaje de JavaScript.

Si hacemos click en una tarjeta podemos colapsarla para tratar de recordar lo que decía. Próximamente vamos a hacer dinámicas más avanzadas e interactivas con las tarjetas.

¿Cómo aprender?

Programar es dificil, si bién las reglas fundamentales pueden ser simples y claras, los programas que hacemos con esas reglas son lo suficientemente complejos como para agregar sus propias reglas y complejidad. Estás construyendo tu propio laberinto en cierta forma y puede que te pierdas en él.

Habrá momentos en los cuales aprender JavaScript sea increiblemente frustrante. Si la programación es nueva para tí, será mucho material para digerir. Este material luego será combinado en formas que requeriran nuevas conexiones.

Lo importante de todo esto es no sacar conclusiones sobre tus capacidades cuando estemos frustrados. Estás bien. Solo tienes que seguir adelante. Toma un descanso, vuelve a leer algo del material y trata de entender los ejercicios.

Aprender es dificil pero todo lo que aprendas se vuelve tuyo y hará que lo próximo que tengas que aprender sea más fácil.

Programas

Un programa puede ser muchas cosas. Un pedazo de texto que escribió un programador, la fuerza directa que hace que la computadora haga lo que hace, los datos en la memoria de la computadora y que controla las acciones que se hacen sobre esa memoria.

Una analogía que se usa, aunque no encaje del todo, es que un programa es como una máquina, muchas partes separadas están involucradas y para entender el todo necesitamos considerar las maneras en las que estas partes interactuan y contribuyen a la operación del todo.

Las computadoras son las que albergan estan máquinas. En realidad las computadoras solo transforman de manera tonta las palabras en acciones (probemos equivocarnos en alguna palabra o en algunos casos en alguna mayúscula). La razón por la que son útiles se porque son muy rápidas haciendo esa transformación de palabras en acciones. Con un programa podemos combinar numerosas de esas acciones simples para hacer cosas realmente complicadas.

¿Por qué el lenguaje importa?

Al principio de las computadoras los lenguajes se veían así.

00110001 00000000 00000000
00110001 00000001 00000001
00110011 00000001 00000010
01010001 00001011 00000010
00100010 00000010 00001000
01000011 00000001 00000000
01000001 00000001 00000001
00010000 00000010 00000000
01100010 00000000 00000000

Este programa sirve para sumar los números del 1 al 10 e imprimir el resultado: 1 + 2 + … + 10 = 55.

Para programar estas computadoras primitivas teníamos que tocar interruptores o meter tarjetas con agujeros que significaran todo eso lo cual hacía la tarea muy dificil e impensable para hacer programas más complejos.

Si pasaramos a nuestro idioma esas instrucciones dirían algo como lo siguiente:

  1. Guarda el número 0 en la ubicación 0.
  2. Guarda el número 1 en la ubicación 1.
  3. Guarda el valor de de memoria de la ubicación 1 en la ubicación 2.
  4. Resta el número 11 del valor en la ubicación 2.
  5. Si el valor de la ubicación 2 es el número 0, continúa con la instrucción 9.
  6. Suma el valor de la ubicación 1 a la memoria de la ubicación 0.
  7. Suma el número 1 al valor de memoria de la ubicación 1.
  8. Continúa con la instrucción 3.
  9. Imprime el valor de la ubicación 0.

A pesar de que es mucho más entendible que los ceros y unos, todavía está bastante oscuro. Cómo las computadoras de antes eran más primitivas, solo podían entender este tipo de instrucciones. Con el avance de la computación, se pudieron hacer lenguajes que sean más faciles de entender para los humanos y que luego son traducidos a instrucciones de computadora.

Aquí está el mismo programa escrito en JavaScript:

let total = 0, count = 1;
while (count <= 10) {
  total += count;
  count += 1;
}
console.log(total);
// → 55

Vemos que esto es mucho más corto y facil de entender. La moral de la historia es que los programas se pueden expresar de varias maneras, de maneras largas y cortas, fáciles y díficiles de entender.

Un buen lenguaje de programación nos ayuda a escribir nuestras instrucciones en un nivel más alto (cómo JavaScript). Nos proporciona bloques de construcción convenientes (como un while o un console.log), nos permite definir nuestros propios bloques y hace que esos bloques sean faciles de combinar.

¿Qué es JavaScript?

JavaScript es un lenguaje de programación inventado para agregar programas a las páginas web en un navegador que existió llamado Netscape. El lenguaje después fue aceptado por otros navegadores web. No tiene nada que ver con el lenguaje de programación Java, sus creadores usaron un nombre parecido para ayudar al marketing.

Después de que los navegadores empezaron a aceptarlo, se escribió un documento para describir la manera en la que JavaScript debería funcionar para que los software que dicen aceptar JavaScript estén hablando de la misma cosa. Este documento es llamado el estandar ECMAScript, por la organización ECMA que escribió el documento. Cada tanto salen nuevas versiones como ES6 que agregan cosas al lenguaje JavaScript. En la práctica las palabras ECMAScript y JavaScript se pueden usar de manera intercambiable, se refieren al mismo lenguaje.

Habrá gente que dirá cosas horribles de JavaScript y tendrán razón. Cuando empecé a programar JavaScript por primera vez, lo desprecié. Si bien aceptaba cualquier cosa que le escriba, lo interpretaba de una manera muy diferente a la que yo quería. Esto tenía que ver con que yo no tenía idea de lo que estaba haciendo, por su puesto, pero el verdadero problema es este: JavaScript es muy liberal en lo que te deja hacer. La idea era que sea fácil para principiantes, pero en la práctica hace que sea más dificil encontrar un problema en nuestros programas porque el sistema no nos dirá claramente donde está el problema.

Pero la flexibilidad de JavaScript tiene sus ventajas también. Deja el espacio libre para un montón de técnicas que serían imposibles en otros lenguajes, y como veremos pueden servir para superar cosas que le falten a JavaScript. Después de un tiempo de aprender JavaScript y trabajar con el lenguaje, aprendí a quererlo.