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