
Os imagináis trabajar en un laboratorio informático, vestido con una bata blanca, y que para obtener el resultado de un algoritmo lo tuvierais que describir por medio de perforaciones en una tarjeta, dicha tarjeta enviarla por mensajero a un edificio de otro barrio o ciudad, y que te devolviera la respuesta (fuera el resultado o la descripción de errores) por medio de otras tarjetas que tuvieras que traducir para saber qué había pasado?
O, cuando Grace Hopper en 1951, que construyo el primer compilador que permitía olvidarnos del código binario o el lenguaje máquina del que hablé en el artículo anterior, encontraros con FORTRAN, que en su primera implementación solo tenía TRES comandos: DO, FOR y GOTO.
La división inicial es su cercanía al hardware, habiendo una concordancia entre la dificultad y coste de mantenimiento contra la complejidad de los algoritmos.
Eso sí, trabajando en ensamblador es como se conoce realmente como trabaja un sistema informático. Vamos que se le vén las tripas.
A partir de este punto tenemos otra clasificación de acuerdo al paradigma de programación: imperativo, declarativo, estructurado, funcional, orientado a objetos u orientado a aspectos, que están aún muy lejos del contenido de esta serie de iniciación básica.
Lo importante es seguir recalcando que toda la complejidad en la abstracción de los lenguajes, desde su inicio, están asociados a la búsqueda de poder expresar lo que queremos que hagan los ordenadores de la forma más natural posible.
Ya que, a pesar de lo que piense la inmensa mayoría de los usuarios, los ordenadores son absolutamente “tontos”, y solamente hacen lo que se les determina que hagan, de forma binaria.
Variables
Al realizar cualquier algoritmo, necesitamos un repositorio en la memoria, según la arquitectura de Von Neumann, en donde poder guardar los valores iniciales, finales y los estados de un proceso.
Por ello todos los lenguajes permiten definir un nombre simbolico a un unidad de información que puede cambiar durante la ejecución del programa. Y esto se le llama variable.
Por ejemplo, en el ejemplo de un programa sencillo realizado en javascript en una página web, WriteCodeOnline, en donde podéis probar vuestros primero pinitos.
saludo = “Hola Mundo”; alert(saludo);
Aquí estoy utilizando la variable llamada saludo en donde almaceno la cadena de caracteres “Hola Mundo”.
El alert que utilizo a continuación es un objeto de javascript que hace que salga una ventanita mostrando el contenido de la variable saludo, y que lo tengo que utilizar para poder ver el contenido de la variable.
Condicionales
Toda la algorítmica de un desarrollo de software está basada en las decisiones que se deben tomar de acuerdo al valor de las variables. Incluso en la máquina de Turing se debe acceder a una tabla de acciones que es dependiente del valor que se lee. Por ello en todo lenguaje debe haber alguna forma de comparar entre dos valores y con el resultado realizar una acción u otra.
Si seguimos con el ejemplo anterior, podría modificar mi código para que, dependiendo del contenido de saludo, muestre un mensaje o muestre otro.
saludo = ‘Hola Mundo’;
if (saludo == ‘Hola Mundo’)
{ alert(saludo);
}
Este condicional rápidamente evolucionó hacia el moderno if then else, switch, select case, etc. Todo tipo de condicionales que permiten construir un árbol de decisiones para nuestra lógica.
Veamos un último ejemplo añadiendo la sentencia else a nuestro condicional,
saludo = ‘Hola Mundo’;
if (saludo == ‘Hola Mundo’)
{ alert(saludo);
}
else
{ alert(‘No te he entendido’);
}
Para que se me entienda mejor veamos un ejemplo. Imagínate que contar los primeros 5 números. Si no hubiera una estructura que me permitiera hacer un bucle, debería de escribir algo tan engorroso como esto,
numero = 0;
alert(numero);
numero = 1;
alert(numero);
numero = 2;
alert(numero);
numero = 3;
alert(numero);
numero = 4;
alert(numero);
numero = 0;
for (numero = 0; numero < = 5; numero = numero + 1)
{ alert(numero);
}
Y te he presentado los tres pilares básicos de todo programa de software. Y partiendo de estas simples reglas (realmente todo basado en unos y ceros) se ha construido la compleja Sociedad de la Información y la Revolución Informática en la que vivimos.
Web de prácticas | WriteCodeOnline
Más Información| Historia y evolución de los lenguajes de programación, Historia de los lenguajes de programación
Imagen de portada | Ada Lovelace en la Wikipedia
En GenbetaDev | Iniciación básica a la programación, Diez lenguajes experimentales que podrían impactar en un futuro