Programando con FreeBASIC en GNU Linux
Creo que por aquí todavía no lo había explicado, pero el primer lenguaje de programación con el que trabaje, recordad que soy técnico de sistemas no programador, fue BASIC, conjuntamente con COBOL, aunque de éste último no tengo prácticamente ningún recuerdo, ya que estoy hablando de finales de los ochenta, cuando quien escribe estaba en los primeros años de la adolescencia. Por entonces era un afortunado, ya que era de los pocos en mi barrio que tenía un PC, concretamente un EPSON con procesador 80286. En la misma época asistía a una academia de informática, creo que en américa se llaman de computación. En dicho local aprendí BASIC y ciertamente le tengo un grato recuerdo. De hecho en la caja donde vino mi PC venían dos manuales. Uno hablaba respecto al montaje y las piezas del equipo, y el otro era de programación en BASIC.
Pues bien, todo éste rollo es debido al tema del artículo de hoy, que es el compilador FreeBASIC, que tal y como indica su nombre compila el lenguaje BASIC, con síntesis de Quick BASIC o QB. Dicho compilador es multiplataforma, es decir, funciona en Microsoft Windows, MAC OS X y GNU Linux. Pero antes de llegar al compilador, hagamos un poco de historia.
Sobre el lenguaje de programación BASIC
Aunque se habla de BASIC como un lenguaje de programación, realmente se trata de una familia de lenguajes. Su nombre se debe a sus siglas en inglés: “Beginner’s All-purpose Symbolic Instruction Code”, es decir Código simbólico de instrucciones de propósito general para principiantes. Su origen se remonta al año 1964. La intención de su creación fue facilitar un lenguaje de programación para alumnos y profesores que no fueran de ciencias, es decir, en la época era una herramienta de enseñanza. Su éxito fue tal que prácticamente todos los ordenadores en los años 70 y 80 lo llevaban incluido en el software. Con el tiempo ha evolucionado, a lenguajes como Microsoft Visual Basic o Gambas en GNU/Linux, aunque distan bastante de cómo funcionaba en su origen.
Entre sus ventajas se encontraban ser fácil de usar, era un lenguaje de propósito general, es decir, no era orientado a objetos. Proveía de mensajes de errores claros y amigables. No necesitaba un hardware muy exigente.
En sus inicios el lenguaje BASIC no estructurado era como en el ejemplo que podemos ver en Wikipedia:
10 INPUT "Cuál es su nombre:"; NN$ 20 PRINT "Bienvenido al 'asterisquero' ";NN$ 25 PRINT 30 INPUT "con cuántos asteriscos inicia [Cero sale]:"; N 40 IF N<=0 THEN GOTO 200 50 AS$="" 60 FOR I=1 TO N 70 AS$=AS$+"*" 80 NEXT I 90 PRINT "AQUI ESTAN:"; AS$ 100 INPUT "Desea más asteriscos:";SN$ 110 IF SN$="" THEN GOTO 100 120 IF SN$<>"S" AND SN$<>"s" THEN GOTO 200 130 INPUT "CUANTAS VECES DESEA REPETIRLOS [Cero sale]:"; VECES 140 IF VECES<=0 THEN GOTO 200 150 FOR I=1 TO VECES 160 PRINT AS$; 170 NEXT I 180 PRINT 185 REM A repetir todo el ciclo (comentario) 190 GOTO 25 200 END
Actualmente FreeBASIC funciona como compilador para Quick Basic. En la imagen tenéis otro ejemplo, también extraído de Wikipedia.
DEFINT I-N 'Declara entera toda variable que comience con letras I a N iTrue = -1 'Flag en Verdadero INPUT "¿Cuál es su nombre"; NombreUsuario$ PRINT "Bievenido al 'asterisquero',"; NombreUsuario$ DO PRINT INPUT "¿Con cuántos asteriscos inicia [Cero sale]:"; NroAsteriscos IF NroAsteriscos<=0 THEN EXIT DO Asteriscos$ = "" FOR I=1 TO NroAsteriscos Asteriscos$=Asteriscos$ + "*" NEXT I PRINT "AQUI ESTAN: "; Asteriscos$ DO INPUT "Desea más asteriscos:";SN$ LOOP UNTIL SN$<>"" IF SN$<>"S" AND SN$<>"s" THEN EXIT DO 'Salida INPUT "CUANTAS VECES DESEA REPETIRLOS [Cero sale]:";iVeces IF iVeces<=0 THEN EXIT DO 'Salida FOR I = 1 TO iVeces PRINT Asteriscos$; NEXT I PRINT LOOP WHILE iTrue END
Sobre Quick Basic
Tal y como he comentado en párrafos anteriores Quick Basic es una deriva BASIC. Utiliza una síntesis estructurada. Funciona con la estructura y síntesis de éste.
Sobre FreeBASIC
Se trata de un compilador gratuito multiplataforma, que utiliza licencia libre GPL, y funciona con el lenguaje de programación BASIC. Utiliza para el lenguaje la síntesis de QuickBasic. Soporta la librería GNU-C, tiene cabeceras para GTK, SDL, OpenGL o MySQL.
Instalación de FreeBASIC en GNU Linux
Antes de instalar el compilador, para que todo funcione de manera correcta debemos de tener una serie programas y librerías disponibles. Según las versión de nuestra distribución:
#DEBIAN Y UBUNTU
apt-get -y install gcc libncurses5-dev libffi-dev libgl1-mesa-dev libx11-dev libxext-dev libxrender-dev libxrandr-dev libxpm-dev
#FEDORA
yum install gcc ncurses-devel libffi-devel mesa-libGL-devel libX11-devel libXext-devel libXrender-devel libXrandr-devel libXpm-devel
#OPENSUSE
zypper install gcc ncurses-devel libffi46-devel xorg-x11-devel
El archivo comprimido con la última versión nos lo podemos bajar desde aquí.
Lo descomprimimos de la siguiente manera:
tar xvzf fichero.tar.gz
Accedemos dentro de la carpeta resultante y escribimos:
sudo ./install.sh -i
Una vez instalado se recomienda trabajar con el editor Geany, que soporta FreeBASIC
Trabajar con FreeBASIC, primeros pasos
Cuando ya tenemos el compilador instalado nos podemos poner en faena. Para llamar el compilador usaremos el comando fbc, por ejemplo:
fbc examples/misc/hello.bas
De ésta manera compilaremos el programa con extensión .bas, una vez compilado lo ejecutamos escribiendo ./hello
Si queréis ampliar información o bien empezar con éste lenguaje de programación, os dejo la siguiente serie de enlaces:
Tutoriales de la comunidad FreeBASIC
Programar juegos con FreeBASIC
A nivel anecdótico y como añadido al artículo. En el proyecto archive.org, se puede consultar la histórica revista Creative Computing, donde podemos ver una larga lista de sus números de los primeros años de los ochenta. Todo ellos con ejemplos de programas, muchos de ellos de juegos, en lenguaje BASIC
Nos vemos pronto!!