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.

freebasic-gnu-linux-002

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:

  1. #DEBIAN Y UBUNTU
  2. apt-get -y install gcc libncurses5-dev libffi-dev libgl1-mesa-dev libx11-dev libxext-dev libxrender-dev libxrandr-dev libxpm-dev 
  3.  
  4. #FEDORA
  5. yum install gcc ncurses-devel libffi-devel mesa-libGL-devel libX11-devel libXext-devel libXrender-devel libXrandr-devel libXpm-devel 
  6.  
  7. #OPENSUSE
  8. 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:

  1. tar xvzf fichero.tar.gz

Accedemos dentro  de la carpeta resultante y escribimos:

  1. 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:

  1. 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:

Página Web Oficial FreeBASIC

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

creative-computing

Nos vemos pronto!!