Este artículo data de febrero de 2004.

El Arte de la Programación.

Hay mucha gente que utiliza el ordenador como una plataforma de ocio, o bien de comunicaciones, ofimática, etc. Son los usuarios casuales cuyo interés por la Informática no reviste importancia alguna. Sin embargo hay gente que es curiosa por naturaleza. Gente a la que le gusta aprender todo lo posible sobre aquello que le gusta, y si esto se junta con la informática, tenemos a un usuario avanzado. Hoy en día, todo está en la red, y la Programación no es una excepción en este aspecto.

Cualquier persona que quiera aprender a programar, tan sólo tiene que pasar unas horas navegando para recabar toda la información posible y, a partir de ahí, emprender su viaje. Mucha gente se ha iniciado en el mundo de la Programación de esta forma, ya que hacerlo a partir de estudios superiores suele ser más difícil.

La Informática se asienta sobre una base lógica y matemática muy sólida, accesible mediante los llamados lenguajes de programación, que no son otra cosa que instrucciones que el usuario le da al ordenador para que éste realice una determinada tarea. Atrás quedan los días de los ordenadores que tenían que ser programados con lenguaje máquina (binario) o ensambladores. Para esto se inventaron los llamados "lenguajes de alto nivel", que son lenguajes de programación cuyo idioma se parece, o al menos lo intenta, al nuestro.

Como decía antes, cualquier persona que desee adentrarse en el mundo de la programación, puede hacerlo desde dos perspectivas: la de profesional, y la de aficionado. La primera suele ser la más restrictiva y más cara, puesto que requiere estudios de tipo universitario, etc, mientras que a un aficionado le basta con tener acceso a Internet y tiempo, sobre todo, tiempo. Y puede que me equivoque, pero hay cosas que como mejor se aprenden son por cuenta propia, y no me refiero la innecesidad de docencia, sino que la programación debe ser abordada desde el punto de vista experimental, porque es así como de verdad se aprende.

Y nada mejor que un ejemplo para ilustrar este punto de vista. Supongamos que queremos comprender qué es una manzana, y adquirir conocimientos sobre ella, etc. Podemos hacerlo de dos maneras: una de ellas, es hartándonos de buscar información sobre las rosáceas, y otra es hartándonos de comer manzanas. ¿Cuál de los dos métodos proporciona más información? A priori ninguno de ellos prevalece, puesto que a lo mejor no nos interesa saber su textura, pero sí saber su morfología. Pero en cualquier caso, nadie duda que lo más instructivo es lo segundo, porque nuestra mente está preparada para adquirir la experiencia por medio de los sentidos, y cuantos más sentidos usemos, mejor.

Dejando de lado la botánica, recordemos que un lenguaje de programación es algo muy distinto de una manzana, pero que para aprenderlo debemos masticarlo y no sólo leer libros. Más aún cuando se es novato en estas lides, la estructura, o más bien, la filosofía de los lenguajes de programación puede parecer caprichosa y causar rechazo, pero en poco tiempo nos damos cuenta que los lenguajes no tienen casi nada por capricho, todos buscan conseguir un cosmos entre prestaciones y amigabilidad de cara al usuario. En la programación después de todo, el lenguaje más difícil es el primero, el resto resultan más sencillos pues ya estaremos habituados a su filosofía.

Como decía antes, existen multitud de lenguajes de alto nivel, todos ellos con una estructura lógica muy similar, puesto que se basan en secuencias y la mayoría persigue resultados de tipo matemático, y de todos es sabido que la matemática es inseparable de la lógica. Al fin y al cabo lo que buscamos es la resolución de problemas ¿no? y para el usuario aficionado puede servirle para desarrollar nuevas funcionalidades para su ordenador, o ayudar al desarrollo de un sistema operativo, etc.

Claro que, no todos los lenguajes son iguales en la forma, dentro de los lenguajes de alto nivel hay de todo y para todos los gustos y usos que nos podamos imaginar. La mayoría son muy similares en estructura, pero hay algunos que revisten una mayor simplicidad a la hora de ser programados, y sobre todo de ser programados sin errores. Podría apostar a que nadie es capaz de escribir un programa que salga bien a la primera, a parte del "Hola Mundo", y por eso no podemos desanimarnos si la primera vez que intentamos sumar dos números nos da un error, porque es lo más normal del mundo. Nadie se convierte en el Dios de la programación en tres semanas, pero en tres semanas podemos hacer cosas de lo más interesante.

A continuación, pondré un ejemplo de cómo tres lenguajes de alto nivel (Fortran 90, JavaScript y python) logran resolver un problema, para ver cómo la estructura es muy similar, y sin embargo en unos es más simple que en otros.

El problema es hallar la llamada Serie de Fibonacci, una sucesión de números positivos en la que cada número es suma de los dos anteriores: 1 1 2 3 5 8 13 21 ... y en realidad no es nada del otro mundo.

Estructura formal
Inicio del programa
Declaración de variables (los datos a los que asignaremos valores) a, b, c, n
Petición de datos (asignarle el valor a "n")
Asignación de datos a las variables a = 0, b = 1 y c = a + b.
Bucle: Repetir el interior hasta que "c" sea menor que "n", el valor pedido por pantalla.
Imprimir los resultados en la pantalla.
JavaScript
<script language="JavaScript" type="text/javascript">
var a;
var b;
var c;
var n = prompt("Introduce un número natural positivo","1000");
n = parseInt(n);
document.write("Estos son los términos de la Serie de Fibonacci menores que "+ n +"<BR>");
a = 0;
b = 1;
c = a + b;
while (c < n) {
a = b;
b = c;
c = a + b;
if (c > n) {
break
}
document.write(c,", ");
}
</script>
Fortran 90
PROGRAM Fibonacci
INTEGER a,b,c
PRINT*, "Introduce un numero natural positivo"
READ*, n
PRINT*, "Estos son los términos de la Serie de Fibonacci menores que",n
a = 0
b = 1
c = a + b
PRINT*, a
PRINT*, b
DO WHILE(c <= n)
PRINT*, c
a = b
b = c
c = a + b
END DO
END PROGRAM Fibonacci
python
n = int(raw_input("Introduce un número natural positivo: "))
print "Estos son los términos de la Serie de Fibonacci menores que ",n
a, b = 0, 1
while b < n:
print b
a, b = b, a+b


Por pantalla obtendremos los mismos resultados, si bien JavaScript los vuelca en una sóla línea (esto es debido a que no he querido entretenerme en organizar el código para hacerlo bonito, nada más). Los tres lenguajes tienen una estructura como vemos muy similar, sin embargo unos son más quisquillosos que otros a la hora de exigir una sintaxis. Podemos comprobar cómo python resuelve nuestro problema en seis líneas frente a las 18 de JavaScript, así como éste exige unas delimitaciones a la hora de abarcar las operaciones que sean. Fortran no es tan exigente con la sintaxis de JavaScript, heredada de c pero sin embargo no es comparable (además, JavaScript a diferencia de c no hace falta compilarlo, basta copiar el código en un documento HTML). Python tiene la ventaja de ser interactivo, se ejecuta a medida que le damos las instrucciones, con lo cual vemos de forma inmediata lo que estamos haciendo. No obstante, podemos grabar los archivos en un editor de texto y, respetando ciertas imposiciones el programa funcionará sin problemas.

Este ejemplo muestra cómo se están implementando lenguajes de muy alto nivel, capaces de realizar potentes cálculos en apenas gasto de líneas de código, lo cual resulta extremadamente beneficioso para cualquiera, y es por esto por lo que python está cada vez más de moda entre los aficionados y los profesionales.

No es casualidad, se trata de ver cómo la programación al menos en un nivel primerizo no es tan difícil, y el ejemplo anterior ilustra cómo una vez aprendido un lenguaje, las estructuras son asombrosamente parecidas en unos casos y en otros. En definitiva, con Internet en nuestras manos, podemos abrirnos camino en un mundo extremadamente extenso como es el de la Informática Avanzada.

Nota:

Los programas mostrados han sido comprobados y el código funciona. Si falla, es debido a la imposibilidad de sangrar el texto debidamente. Incluyo a continuación una copia descargable y totalmente funcional, sin compilar, de los tres archivos:

— © 2004 Miguel Rodríguez Lago, webmaster —

Volver a Artículos