Objetivos Objetivos
  • Conocer los conceptos básicos relacionados con los lenguajes de programación.
  • Conocer un poco de historia de los lenguajes de programación.
   
Fuentes de información Fuentes de información
Contenidos
Contenidos
 

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. Lenguaje máquina

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.

Lenguaje ensamblador

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.

Compilació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.

Interpretado

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.
Ejercicios
Ejercicio
 

Tras leer toda la unidad deberás responder a las siguientes preguntas. Crea un documento de texto con el nombre cuestiones_ini en el que copiarás y responderás todas las preguntas:

  1. ¿Conocías o habías oído hablar de alguno de los lenguajes de programación?
  2. Busca en Internet un juego famoso que haya sido programado en C y anótalo.
  3. Antes de leer la historia del lenguaje BASIC, ¿conocías o habías oído hablar de dicho lenguaje?
  4. ¿Por qué crees que se programan muchas aplicaciones en el lenguaje BASIC?
  5. ¿Piensas que su popularidad se debe en gran medida a la aportación de Bill Gates y Microsoft?
  6. Busca en Internet alguna noticia sobre BASIC y escribe un pequeño resumen.

 

Sube el archivo cuestiones_ini a la plataforma.