Lenguaje de programación

De MateWiki
Revisión del 11:31 25 jul 2013 de Herraiz (Discusión | contribuciones) (Tipos de lenguajes de programación)

Saltar a: navegación, buscar

Los lenguajes de programación permiten escribir programas para que se ejecuten en un ordenador. Existen muchos lenguajes de programación de diferentes tipos, que presentan ventajas e inconvenientes según el tipo de programa que se vaya a desarrollar. Los lenguajes de programación cumplen las mismas reglas que otros lenguajes naturales, aunque son lenguajes artificiales.

1 Tipos de lenguajes de programación

Algunos lenguajes son de propósito general, y otros son más adecuados para tareas especializadas (desarrollo de aplicaciones en la web, en el escritorio, en un móvil, cálculo científico). Existen muchos criterios para clasificar los lenguajes de programación, según las características de los lenguajes. Nosotros los clasificaremos en dos grandes grupos:

  • Lenguajes de bajo nivel
  • Lenguajes de alto nivel

Los ordenadores pueden entender directamente los lenguajes de bajo nivel, pero no los del alto nivel, que requieren de programas que traduzcan un programa de alto nivel al lenguaje que entiende la máquina.

El ordenador es capaz de entender un lenguaje denominado lenguaje máquina o lenguaje ensamblador. En los primeros tiempos de la Informática, los programadores escribían código directamente en este lenguaje máquina. Este tipo de lenguajes eran muy complejos de usar por parte de los programadores, pero muy sencillo de ejecutar por parte del ordenador. Por este motivo, los programas escritos en lenguaje máquina se suelen ejecutar con rapidez y sin requerir muchos recursos.

Por ejemplo, el siguiente programa en ensamblador escribe el mensaje Hola mundo[1] en la pantalla[2]:

; ---------------------------------------------
; Programa que imprime un string en la pantalla
; ---------------------------------------------
	.model small               ; modelo de memoria
	.stack                     ; segmento del stack
	.data                      ; segmento de datos
	Cadena1 DB 'Hola Mundo.$'  ; string a imprimir (finalizado en $)
	.code                      ; segmento del código
; ---------------------------------------------
; Inicio del programa
; ---------------------------------------------	
  programa:
		MOV AX, @data           ; carga en AX la dirección del segmento de datos
		MOV DS, AX              ; mueve la dirección al registro de segmento por medio de AX
		MOV DX, offset Cadena1  ; mueve a DX la dirección del string a imprimir
		MOV AH, 9               ; AH = código de la función del MS DOS para imprimir un string en la pantalla
		INT 21h                 ; llamada al MS DOS para imprimir un string en la pantalla
		INT 20h                 ; llamada al MS DOS para finalizar el programa
  end programa

Como podemos observar es un lenguaje muy complejo, que necesita muchas líneas de código para realizar una tarea muy sencilla. Conforme la tecnología de los ordenadores fue avanzando, también cambiaron los lenguajes de programación. Se crearon lenguajes de alto nivel. Un lenguaje de alto nivel es más fácil de entender por parte de los programadores, pero requiere ser traducido a lenguaje máquina para poder ser ejecutado por el ordenador. Por este motivo, los programas escritos en lenguajes de alto nivel suelen ser más lentos que los programas escritos en lenguajes de alto nivel. Aunque el tiempo de desarrollo requerido para escribir programas en lenguajes de alto nivel es mucho menor.

Por ejemplo, el programa equivalente al de arriba en lenguaje MATLAB, un lenguaje de muy alto nivel, sería

disp('Hola mundo');

Es decir, es tremendamente más sencillo de escribir y de entender, ya que necesita una única línea de código que es bastante auto-explicativa. Sin embargo, el programa MATLAB necesita un intérprete para que el ordenador entienda el programa. El intérprete consume muchos recursos de la máquina, por lo que se ejecutará de manera mucho más lenta que el programa anterior, y también necesitará más memoria RAM y un procesador más potente.

La siguiente tabla muestra un resumen de ventajas e inconvenientes de los lenguajes de alto y bajo nivel:

Lenguajes de alto nivel Lenguajes de bajo nivel
Ventajas Fáciles de entender y usar por los programadores Fáciles de ejecutar por el ordenador
Inconvenientes Requieren traducción a un lenguaje de bajo nivel Difíciles de entender por los programadores. Provoca problemas de mantenimiento de software
Tiempo de desarrollo Corto Muy largo
Tiempo de ejecución Lento Muy rápido

En la práctica se suelen emplear mucho más los lenguajes de alto nivel. Pero esto requiere usar un programa que haga de traductor a lenguaje máquina. Existen dos clases de estos programas traductores:

  • Compiladores
  • Intérpretes

Un compilador es un programa que toma el código fuente escrito en un lenguaje de alto nivel, y lo transforma en un archivo escrito en lenguaje de bajo nivel, que es ejecutable directamente por el sistema operativo. Una vez generado el programa por parte del compilador, ya no se necesita usar el compilador cada vez que se quiera ejecutar el programa, se puede ejecutar directamente. Ésta es la principal ventaja de los compiladores.

Un intérprete es un programa que lee el código fuente escrito en un lenguaje de alto nivel, y lo ejecuta línea a línea, directamente. Es decir, no genera ningún programa nuevo escrito en lenguaje máquina. Por este motivo, es necesario usar el intérprete cada vez que queramos ejecutar el programa de alto nivel. A pesar de esta desventaja respecto a los compiladores, es más fácil depurar y revisar la ejecución de un programa con un intérprete que con un compilador.

Los lenguajes por sí mismos no son ni interpretados ni compilados. Es cierto que algunos lenguajes son más sencillos de implementar usando un compilador, y otros usando un intérprete. Por eso en ocasiones se suele decir que un lenguaje es compilado y otro es interpretado. El lenguaje M de MATLAB y Octave UPM es interpretado.

En el cálculo científico los lenguajes interpretados presentan ventajas, ya que es más fácil explorar de manera interactiva cómo se comporta un programa, lo que facilita las tareas de desarrollo. Sin embargo, una vez que se termina el programa en lenguaje interpretado, se suelen usar herramientas que los transformen a un lenguaje compilado, como el lenguaje C, para posteriormente generar un fichero ejecutable que se ejecute más rápidamente que el programa interpretado.

2 Elementos principales de un lenguaje de programación

3 Referencias

  1. Hola mundo (Wikipedia ES)
  2. Extraído de Lenguaje ensamblador (Wikipedia ES)