1. Tipos de lenguajes de programación
El ordenador, en principio, únicamente es capaz de ejecutar un
conjunto básico de instrucciones definidas en el Lenguaje de Máquina, y
que es específico de cada uno.
1.1. Lenguaje máquina
El lenguaje de máquina está definido por la lista de
instrucciones directamente ejecutables por la unidad de proceso, y su
representación interna en forma binaria; siendo, por tanto, el único
lenguaje directamente ejecutable por el ordenador.
Es decir, es un lenguaje binario compuesto sólo por ceros y unos (0 y 1).
La escritura de programas en este lenguaje
presenta una gran dificultad, debido tanto a la manipulación de las
instrucciones y datos (en su forma binaria), así como a la localización,
manipulación y organización de la información en memoria. En general,
son programas muy difíciles tanto de escribir, como de leer y depurar, y
en definitiva de poner en condiciones de operación.
1.2. Lenguaje ensamblador
Debido a estas circunstancias, se dió un primer paso en el desarrollo de los lenguajes de programación, naciendo los Lenguajes Ensambladores.
Estos lenguajes están constituidos básicamente por las instrucciones
del lenguaje máquina escritas en forma simbólica, mediante códigos
nemotécnicos, fáciles de leer y de recordar. Permiten una mayor libertad
en la representación de los datos (notación entera, decimal, etc.), así
como una mejor organización y gestión de memoria.
Un programa escrito en este lenguaje no es directamente
ejecutable en la máquina. De esta forma, debido a su simbolismo, debe de
ser traducido a un programa equivalente, escrito en lenguaje de
máquina, capaz de ser ejecutado. Esta traducción se realiza mediante
programas denominados Ensambladores.
2. Lenguajes de alto nivel
No obstante, pronto se manifestó la necesidad de lenguajes más
generales que permitieran un simbolismo más parecido a la escritura
lógico-matemática, dando lugar a los lenguajes denominados
Evolucionados o de Alto Nivel.
El empleo de estos lenguajes presupone la existencia de
programas capaces de traducir las instrucciones pertenecientes a la
forma evolucionada (conocida por el programador) a las instrucciones de
máquina (directamente ejecutables). Estos programas de traducción pueden
ser: Compiladores o Intérpretes.
Compilador
Un compilador es un programa que, a partir del programa fuente
(en lenguaje evolucionado) y en una única operación, produce un programa
objeto (en lenguaje máquina) equivalente y permanente, directamente
ejecutable, mediante un proceso denominado “fase de compilación”
independiente de la fase de ejecución.
Intérprete
Un intérprete es un programa que, en tiempo de ejecución,
transcribe a lenguaje máquina y ejecuta una por una, en la secuencia
descrita en el programa fuente, el conjunto de instrucciones del mismo
(sin generar un programa objeto). De esta forma, cada vez que se ejecuta
el programa fuente, éste deberá ser interpretado de nuevo; cada vez que
se ejecuta una sentencia ésta debe ser interpretada de nuevo.
3. Lenguajes estructurados y orientados a objetos
La programación estructurada es un paradigma de programación
orientado a mejorar la claridad, calidad y tiempo de desarrollo de un
programa de computadora, utilizando únicamente subrutinas y tres
estructuras: secuencia, selección e iteración. El teorema del programa
estructurado, propuesto por Böhm-Jacopini, demuestra que cualquier
programa se puede desarrollar con esas estructuras.
Las ventajas de este tipo de programación son entre otras la
mejora de la claridad del código, la sencillez de la programación y las
pruebas, la reducción de los costes de mantenimiento y el aumento de la
productividad de los programadores.
Los lenguajes orientados a objetos son una evolución de los
estructurados. En estos lenguajes se habla de objetos que tienen un
estado, un comportamiento (los métodos que pueden cambiar su estado) y
una identidad (que los diferencian del resto). Podemos decir que en la
programación estructurada los datos y los procedimientos que actúan
sobre esos datos están separados y en la orientada a objetos están
unidos. Así podríamos tener un objeto llamado "persona" que tendría como
datos: fecha de nacimiento", "peso", "longitud del pelo"... y como
métodos: "cumplir años", "adelgazar", "cortar pelo"... Podríamos crear
tantas instancias del objeto persona como nos hicieran falta y trabajar
con ellas individualmente.
La programación orientada a objetos fue tomando cada vez más
importancia, sobre todo con la aparición de las interfaces gráficas y la
programación orientada a eventos que trajeron asociadas. La
programación orientada a objetos era perfecta para estos casos, ya que
cada elemento de la interfaz se convertía en un objeto que disponía de
sus propios métodos que respondían a los eventos del usuario en la
interfaz.
4. Lenguajes de programación
Del mismo modo que existen distintos lenguajes naturales con
reglas sintácticas diferentes, también existen distintos lenguajes de
programación diseñados fundamentalmente en función del problema que ha
de plantearse. Así, los científicos y técnicos ven el ordenador como una
herramienta para resolver cálculos numéricos complejos, por lo que
necesitan un lenguaje de programación con gran flexibilidad para
representar expresiones algebraicas. Por el contrario, los usuarios de
ordenadores con fines comerciales o de gestión necesitarán un lenguaje
de programación capaz de procesar grandes cantidades de datos.
Por los motivos anteriormente expuestos, a pesar de los
esfuerzos de unificación, en la actualidad existen gran número de
lenguajes de programación.
4.1. FORTRAN (FORmula TRANslator)
Se desarrolla a mediados de la década de los 50 (s. XX) por un equipo dirigido por John Backus para IBM.
Es muy popular entre científicos e ingenieros, debido a la gran
cantidad de programas de aplicación desarrollados en este lenguaje.
4.2. COBOL (COmmon Bussiness Oriented Language)
Impulsado por el Gobierno Federal de los EE.UU a finales de los
años 50. Está orientado para resolver problemas de gestión y su uso es
casi universal.
Aunque es un lenguaje obsoleto, hoy en día todavía quedan
aplicaciones desarrolladas en COBOL, como por ejemplo los programas
bancarios.
4.3. BASIC (Beginners All-purpose Symbolic Instruction Code)
Desarrollado en la primera década de los 60 en el Darmouth
College (EE.UU), para hacer más accesible el uso del ordenador a los
estudiantes. Ha ido consiguiendo cada vez más popularidad.
A lo largo del tiempo, BASIC ha ido evolucionando hasta
convertirse en un lenguaje visual y orientado a objetos en su última
versión Visual .NET.
4.4. PASCAL
Desarrollado por Niklaus Wirth a mediados de la década de los
70, viene a cubrir el mismo espacio que el ALGOL con el que guarda
cierta semejanza, pero incorporando nuevas características que le hacen
particularmente atractivo a la comunidad científica. La empresa Borland
creó una versión visual con orientación a objetos llamada Delphi.
4.5. C/C++
Es un lenguaje de programación que no va orientado a ninguna
aplicación en particular (de propósito general). Fue diseñado
originalmente por Dennis Ritchie bajo el sistema operativo UNIX en DEC
PDP-11. Es denominado “system programming language” porque se usa a
menudo para escribir sistemas operativos, procesadores de textos,
programas de datos y, especialmente, juegos de ordenador.
Actualmente ha evolucionado a entornos visuales y se incluye orientación a objetos en la versión Visual C++ y Visual .NET.
4.6. JAVA
Desarrollado por Sun Microsystems. Originalmente fue ideado
para programar electrodomésticos, pero fue un auténtico fracaso. Con el
auge de Internet, se ha explotado como el lenguaje de la red.
Su sintaxis es similar a C/C++ pero incorpora muchas funciones para adaptarse a las páginas web y a Internet.
5. El lenguaje BASIC: su historia
El nombre BASIC corresponde a las siglas
Beginner'sAll Purpose Symbolic lnstruction Code (Código para
principiantes de instrucciones simbólicas con cualquier propósito). El
lenguaje fue desarrollado en 1964 en el Dartmouth College por los
matemáticos John George Kemeny y Tom Kurtzas. Intentaban construir un
lenguaje de programación fácil de aprender para sus estudiantes de
licenciatura. Debía ser un paso intermedio antes de aprender otros más
potentes de aquella época, como FORTRAN o ALGOL. Este último era el
lenguaje más utilizado en aplicaciones de procesos de datos, mientras
que FORTRAN era empleado en las aplicaciones científicas. Sin embargo,
ambos eran difíciles de aprender, tenían gran cantidad de reglas en las
estructuras de los programas y su sintaxis.
El primer programa hecho en BASIC se ejecutó a las 4 de la
madrugada del 1 de mayo de 1964. Debido a su sencillez, BASIC se hizo
inmediatamente muy popular y se empezó a usar tanto en aplicaciones
científicas como comerciales. Tuvo el mismo impacto en los lenguajes de
programación que la aparición del PC sobre los grandes ordenadores.
Cuando se desarrolló BASIC eran los tiempos en los que la
informática estaba recluída en universidades y grandes empresas, con
ordenadores del tamaño de una habitación. Pero pronto las cosas
empezaron a cambiar. En 1971 lntel fabricaba el primer microprocesador.
En 1975, la empresa MITS lanzó al mercado un kit de ordenador llamado
Altair 8800 a un precio de 397 dólares. Era un ordenador barato, pero no
para gente inexperta, había que saber electrónica para montarlo. Además
tenía sólo 256 bytes (no es una errata, solo bytes, nada de Kbytes,
megas o gigas) y se programaba en código máquina a base de 0 y 1,
moviendo unos interruptores que tenía en el frontal.
Dos jovencitos vieron un modelo en una revista de electrónica y
decidieron montarlo. Le ofrecieron al dueño de MITS, además, hacer un
intérprete de BASIC para los nuevos modelos de Altair. Eran William
Gates y Paul Allen, y aquel BASIC, con un tamaño de 4 Kbytes, fue el
primer producto que entregó una nueva empresa llamada Microsoft. Fue
sólo el principio. A finales de los 70, AlIen y Gates habían portado
BASIC ya a un buen número de plataformas: Atari, Apple, Ccmmodore, etc.
Ya en 1981, cuando desarrollaron DOS para IBM y su nuevo PC, añadieron
también su propio intérprete de BASIC al sistema. En posteriores años
siguieron otras versiones hechas por otras compañías como Borland, pero
el declive de BASIC había empezado. Las interfaces gráficas de ventanas
que Apple popularizó y Microsoft adoptó con sucesivas versiones de
Windows, se convirtieron en un estándar y BASlC no era un lenguaje
preparado para estos entornos.
Sin embargo, en marzo de 1988, un desarrollador de software
llamado Alan Cooper, intentaba vender una aplicación que permitía
personalizar fácilmente el entorno de ventanas usando el ratón. El
programa se llamaba Tripod y en aquellas fechas consiguió que William
Gates lo viera y le encargara el desarrollo de una nueva versión a la
que llamaron Ruby, y a la que añadieron un pequeño lenguaje de
programación. Microsoft reemplazó ese lenguaje por su propia versión de
BASIC, Quickbasic y el 20 de marzo de 1991 se lanzó al mercado con el
nombre de Visual Basic. Al principio fue un verdadero fracaso de ventas,
pero la versión 3 publicada en el otoño de 1996 fue un éxito total,
tanto que actualmente es e1 lenguaje de programación más usado. Visual
Basic siguió evolucionando hasta la versión 6.0.
En 2002 fue integrado en la plataforma .NET de desarrollo, en
lo que para muchos de los seguidores ha supuesto el abandono de
Microsoft, ya que ha cambiado buena parte de la sintaxis añadiéndole
complejidad en contradicción con el espíritu y el nombre del lenguaje.
En cualquier caso, a día de hoy se calcula que entre el 70% y 80% de
todas las aplicaciones desarrolladas en Windows se han hecho con alguna
de las versiones de Visual Basic.
Las causas del éxito de Visual Basic son numerosas, pero entre
otras se puede señalar como obvia el uso del lenguaje BASlC que fue
pensado para un aprendizaje fácil. Otro de los motivos es disponer de un
entorno de desarrollo cómodo, que hace un juego de niños el diseño de
la interfaz gráfica de cualquier aplicación, apartando al programador de
perder tiempo en escribir el código necesario para crear ventanas,
botones, etc., y dejándole centrarse únicamente en Ia solución al
problema que cualquier programa intenta resolver.
6. El entorno GAMBAS
Con la popularización de sistemas operativos libres como
GNU/Linux, éstas y otras razones hacían suponer que la aparición de un
entorno equivalente libre sería un éxito y contribuiría a la
presentación de muchos nuevos desarrollos que lo utilizarían. Ha habido
varios intentos que no han cuajado, bien por la lentitud de su
evolución, bien por su dificultad de uso o por no ser toralmente libres y
no haber arrastrado una comunidad de usuarios detrás. Finalmente,
Benoît Minisini, un programador con experiencia en la escritura de
compiladores que estaba harto de luchar contra los fallos de diseño de
Visual Basic, y deseaba poder usar un entorno de GNU/Linux fácil en su
distribución, comenzó a desarrollar su propio entorno para Linux basado
en BASIC.
El 28 de febrero de 2002 puso en Internet la primera versión
pública de Gambas: Gambas 0.20. Benoît eliminó del diseño del lenguaje
bastantes de los problemas que Visual Basic tenía, como la gestión de
errores, y le añadió características comunes en los lenguajes actuales
más modernos, como la orientación a objetos y la propia estructura de
los programas. Como prueba de fuego, el propio entorno de desarrollo fue
programado en Gambas desde la primera versión, sirviendo a un tiempo de
demostración de la potencia del lenguaje y de detección de necesidades y
corrección de errores que se fueron incorporando a las distintas
versiones.
En enero de 2005, Benoît publicó la versión 1.0, en la que ya
se incorporaba un puñado de componentes desarrollados por otros
programadores que colaboraron con él: Daniel Campos, Nigel Gerrard,
Laurent Carlier, Rob Kudla y Ahmad Kahmal. Esta versión se consideró
suficientemente estable y cerró un ciclo. A partir de esa fecha empezó
la programación de la versión 2.0. Ésta ya incluye algunas mejoras en el
lenguaje, muchos más componentes y un nuevo modelo de objetos que
permitirán usar Gambas en un futuro para el desarrollo de aplicaciones
web con la misma filosofía y facilidad que actualmente se usa para
aplicaciones de escritorio.
7. Un entorno libre
Gambas es un entorno de desarrollo que se
distribuye con la licencia GPL GNU (General Public License). Esto
significa que se distribuye siempre con el código fuente y respeta las
cuatro libertades que define la Free Software Foundation:
- La libertad de usar el programa con cualquier propósito (libertad 0).
- La libertad de estudiar cómo funciona el programa y
adaptarlo a las propias necesidades (libertad 1). El acceso al código
fuente es una condición previa para esto.
- La libertad de distribuir copias, con las que se puede ayudar al vecino (libertad 2).
- La libertad de mejorar el programa y hacer publicas las
mejoras a los demás, de modo que toda la comunidad se beneficie
(libertad 3). El acceso al código fuente es un requisito previo para
esto.
Uno de los engaños más comunes en el uso de Software
Libre es la creencia de que este modelo de desarrollo obliga a que el
trabajo se publique gratis, lo que es del todo incierto. Estas
cuatro libertades permiten que quien lo desee, venda copias de Gambas
(entregando siempre el código fuente y respetando esas cuatro
libertades) y, por supuesto, de cualquier aplicación desarrollada con
este programa. Las aplicaciones desarrolladas con Gambas pueden o no
acogerse a la licencia GPL.
También cualquier programador es libre de alterar el propio
lenguaje y modificarlo a su gusto, siempre y cuando entregue el código
correspondiente a esas modificaciones y respete los derechos de autor de
los desarrolladores originales.
Aparte de estas libertades propias de la naturaleza de un
proyecto de Software Libre sobre GNU/Linux, Gambas añade más facilidades
para el programador:
- Una ayuda muy completa del lenguaje y cada uno de los
componentes, algo que es muy de agradecer para los que empiezan a
programar en Gambas, y que no es habitual en los proyectos de Software
Libre.
- Una API (Interfaz para programar la aplicación) sencilla y
bien documentada, lo que facilita a los programadores crear nuevos
componentes para Gambas. La API no es de util idad inmediata para quien
desarrolle con este lenguaje, pero permite a los programadores avanzados
que lo deseen añadir funcionalidades al entorno de desarrollo y crear
nuevas herramientas para Gambas.
|