lunes, 3 de noviembre de 2014

Lenguajes de Programación

Lenguajes de Programación


Los lenguajes de programación sirven para escribir programas que permitan la comunicación usuario/maquina. Unos programas especiales llamados traductores (compiladores o interpretes) convierten las instrucciones escritas en lenguajes de programación en instrucciones escritas en lenguajes maquina (0 y 1, bits) que la computadora pueda entender.

Los programas de utilidad facilitan el uso de la computadora. Un ejemplo es un editor de textos que permite la escritura y edición de documentos. Los programas que realizan tareas concretas, nominas, contabilidad etc.., se denominan programas de aplicación.

Se debe diferenciar entre el acto de crear un programa y la acción de la computadora cuando ejecuta las instrucciones del programa. La creación de un programa se hace inicialmente en papel y a continuación se introduce en la computadora y se convierte en lenguaje entendible por la computadora.

El propósito de un lenguaje informático (lenguaje de computadora) es permitir a las personas comunicarse con una computadora. Los lenguajes de los humanos y los lenguajes de la maquina son muy diferentes, ya que las características y posibilidades de las personas y de las maquinas son muy diferentes. Los lenguajes de computadoras permiten a las personas escribir en un lenguaje que sea mas apropiado a las características humanas y se puedan traducir al lenguaje maquina de diferentes tipos de maquinas.

Los principales tipos de lenguajes utilizados en la actualidad son tres:

  1. Lenguaje maquina
  2. Lenguaje de bajo nivel (ensamblador)
  3. Lenguajes de alto nivel


Lenguajes maquinas


Los lenguajes maquina son aquellos que están escritos en lenguajes directamente inteligibles por la maquina (computadora), ya que sus instrucciones son cadenas binarias (cadenas o series de caracteres—dígitos—0 y 1)que especifican una operación, y las posiciones (dirección) de memoria implicadas en la operación se denominan instrucciones de maquina o código maquina. El código maquina es el conocido código binario.

Las instrucciones en lenguaje maquina dependen del hardware de la computadora y, por tanto diferirán de una computadora a otra. El lenguaje maquina de un PC sera diferente de un sistema HP, Dell, Compaq etc…


 Las ventajas de programar en lenguaje maquina se refieren, fundamentalmente, a la posibilidad de cargar (transferir un programa a la memoria) sin necesidad de traducción posterior, lo que supone una velocidad de ejecución superior a cualquier otro lenguaje de programación.

Los inconvenientes superan a las ventajas, lo que hace prácticamente no recomendables los lenguajes maquina al programador de aplicaciones. Estos inconvenientes son:

  • Dificultad y lentitud en la codificación.
  • Poca fiabilidad,
  • Dificultad grande de verificar y poner a punto los programas,
  • Los programas solo son ejecutables en el mismo procesador (UCP),

 Para evitar los lenguajes maquina, desde el punto de vista del usuario, se han creado otros lenguajes que permiten escribir programas con instrucciones similares al lenguaje humano. Esto lenguajes se denominan de alto y bajo nivel.

Lenguajes de bajo nivel


Los lenguajes de bajo nivel son mas fáciles de utilizar que los lenguajes maquina, pero al igual que ellos, dependen de la maquina en particular. El lenguaje de bajo nivel por excelencia es el ensamblador. Las instrucciones en lenguaje ensamblador son instrucciones conocidas como nemotécnicos . Por ejemplo, nemotécnicos típicos de operaciones aritméticas son: en ingles ADD, SUB, DIV, etc., en español, SUM, RES, DIV, etc.

Una instrucción típica de suma seria:

ADD, M, N, P

Esta instrucción podía significar “sumar el numero contenido en la posición de memoria M al numero almacenado en la posición de memoria N y situar el resultado en la posición de memoria P”. Evidentemente , es mucho mas sencillo recordar la instrucción anterior con un nemotécnico que su equivalente en código maquina:

0110 1001 1010 1011

Un programa escrito en lenguaje ensamblador no puede ser ejecutado directamente por la computadora – en esto se diferencia esencialmente del lenguaje maquina- , sino que requiere una fase de traducción al lenguaje maquina.

El programa original escrito en lenguaje ensamblador se denomina programa fuente y el programa traducido en lenguaje maquina se conoce como programa objeto, ya directamente inteligible por la computadora.

El traductor de programas fuente a objeto es un programa llamado ensamblador, existente en casi todas las computadoras.

No se debe confundir el programa ensamblador, encargado de efectuar la traducción del programa fuente escrito a lenguaje maquina, que el lenguaje ensamblador, lenguaje de programación con una estructura y gramática definidas.

Los lenguajes ensambladores presentan la ventaja frente a los lenguajes maquina de su mayor facilidad de codificación y , en general, su velocidad de calculo.

Los inconvenientes mas notables de los lenguajes ensambladores son:

  • Dependencia total de la maquina, lo que impide la transportabilidad de los programas (posibilidad de ejecutar un programa en diferentes maquinas).
  • La formación de los programadores es mas compleja que la correspondiente a los programadores de alto nivel, ya que exige no solo las técnicas de programación, sino también el conocimiento del interior de la maquina.

Lenguajes de alto nivel


Los lenguajes de alto nivel son los mas utilizados por los programadores. Están diseñados para que las personas escriban y entiendan los programas de un modo mucho mas fácil que los lenguajes maquina y ensambladores. Otra razón es que un programa escrito en lenguaje de alto nivel es independiente de la maquina; esto es, las instrucciones del programa de la computadora no dependen del diseño del hardware o de una computadora en particular. En consecuencia, los programas escritos en lenguaje de alto nivel son portables o transportables, lo que significa la posibilidad de poder ser ejecutados con poca o ninguna modificación en diferentes tipos de computadoras; al contrario que los programas en lenguaje maquina o ensamblador, que solo se pueden ejecutar en un determinado tipo de computadora. Los lenguajes de alto nivel presentan las siguientes ventajas:

  • El tiempo de formación de los programadores es relativamente corto comparado con otros lenguajes.
  • La escritura de programas se basa en reglas sintácticas similares a los lenguajes humanos. Nombres de las instrucciones, pueden ser READ, WRITE, PRINT, OPEN, etc.
  • Las modificaciones puestas a punto de los programas son mas fáciles.
  • Reducción del conste de los programas.
  • Transportabilidad.

Los inconvenientes se concretan en:

  • Incremento del tiempo de puesta a punto, al necesitarse diferentes traducciones del programa fuente para conseguir el programa definitivo.
  • No se aprovechan los recursos internos de la maquina, que se explotan mucho mejor en lenguajes máquina y ensambladores.
  • Aumento de la ocupación de memoria.
  • El tiempo de ejecución de los programas es mucho mayor.

 Al igual que sucede con los lenguajes ensambladores, los programas fuente tienen que ser traducidos por los programas traductores, llamados en este caso compiladores e interpretes.

Traductores de lenguaje


Los traductores de lenguaje son programas que traducen a su vez los programas fuente escritos en lenguajes de alto nivel a código maquina. Los traductores se dividen en:
  • Compiladores
  •  Interpretes

Interpretes


Un interprete es un traductor que toma un programa fuente, lo traduce y a continuación lo ejecuta. Los programas interpretes clásicos, como BASIC, prácticamente ya no se utilizan, aunque puede encontrarse una vieja computadora que funcione con la versión QBASIC bajo el sistema operativo DOS que corre en las computadoras personales.


Compiladores


Después que se ha diseñado el algoritmo y escrito el programa en un papel, se debe comenzar el proceso de introducir el programa en un archivo (fichero) en el disco duro de la computadora. La introducción y modificación de su programa en un archivo se hace utilizando un editor de texto o simplemente un editor, un programa que viene con su computadora, normalmente, y que le permite el almacenamiento y recuperaron de lo que se ha escrito en el disco. El aprendizaje de cómo utilizar un editor hace la tarea de introducir un programa una tarea muy fácil.

El programa que se ha introducido esta escrito en C o en Java, pero ni C ni java son lenguajes maquina de su computadora, muy al contrario son lenguajes de alto nivel diseñados para hacer mas fácil la programación que utilizando el lenguaje maquina. Una computadora no entiende los lenguajes de alto nivel. En consecuencia, un programa escrito en un lenguaje de alto nivel debe ser traducido a un lenguaje que la maquina pueda comprender. Los lenguajes que la computadora puede comprender mas o menos directamente se llaman lenguajes de bajo nivel. La traducción de un programa escrito en en lenguaje de alto nivel, como C++ o Java, a un lenguaje que pueda entender la computadora se hace mediante otro programa conocido como compilador.

Los lenguajes de bajo nivel que la computadora puede entender directamente se conocen como lenguajes ensamblador o lenguajes maquina. En realidad, aunque son muy similares y en ocasiones se les considera sinónimos, tienen algunas pequeñas diferencias. El lenguaje que la computadora puede comprender directamente se denomina lenguaje maquina. El lenguaje ensamblador es casi la misma cosa, pero necesita un paso adicional para que la traducción pueda ser entendida por la maquina. Si un compilador traduce su programa de alto nivel a algún lenguaje de bajo nivel, no es exactamente lenguaje de maquina, se necesitara, por tanto una pequeña traducción adicional antes de ser ejecutado en la computadora, pero normalmente este proceso suele ser automático y no es problemático.

Cuando se ejecuta un programa en lenguaje de alto nivel, tal como C, C++ o Java, se esta ejecutando realmente una traducción de ese programa a un lenguaje de bajo nivel. Por consiguiente, antes de que se ejecute un programa escrito en un lenguaje de alto nivel, se debe ejecutar en primer lugar el compilador en el programa. Cuando se ejecuta un compilador sobre sus programa se dice que se compila el programa.

Una desventaja del proceso de traducción que se acaba de describir es que se necesita un compilador diferente para cada tipo de computadora y cada sistema operativo. Si se desea ejecutar su programa en lenguaje de alto nivel en tres maquinas diferentes, se necesitaran utilizar tres diferentes compiladores y se debe compilar su programa tres veces.

En resumen , para crear y ejecutar un programa en un lenguaje tal como C, C++ o Java, se necesita introducir el programa utilizando un editor de texto; ejecutar un programa especial denominado compilador, traducir el lenguaje de alto nivel a lenguaje maquina y a continuación cargar el lenguaje maquina en memoria principal y ejecutarlo.

La compilación y sus fases


La compilación es el proceso de traducción de programas fuente a programas objeto. El programa objeto obtenido de la compilación ha sido traducido normalmente a código maquina.

Para conseguir el programa maquina real se debe utilizar un programa llamado montador o enlazador. El proceso de montaje conduce a un programa en lenguaje maquina directamente ejecutable.

El proceso de ejecución de un programa escrito en un lenguaje de programación y mediante un compilador suele tener los siguientes pasos:

  1. Escritura del programa fuente con un editor y guardarlo en un dispositivo de almacenamiento.
  2. Introducir el programa fuente en memoria.
  3. Compilar el programa con el compilador 
  4. Verificar y corregir errores de compilación (listado de errores),
  5. Obtención del programa objeto.
  6. El enlazador obtiene el programa ejecutable
  7. Se ejecuta el programa y, si no existen errores, se tendrá la salida del programa.

No hay comentarios.:

Publicar un comentario