Entornos de programación

Un entorno de programación es un programa o conjunto de programas que engloban todas las tareas necesarias para el desarrollo de un programa o aplicación. Estas tareas son básicamente las siguientes:

Hay quien además incluye la creación de documentación complementaria que facilita el mantenimiento del programa dentro de estas funciones.

Este tipo de entornos incorporan numerosas herramientas, utilidades, aplicaciones ya desarrolladas, ejemplos, tutoriales, etc. Todas ellas encaminadas a faciltiar y mejorar el desarrollo.

Editores

El primer elemento necesario para el desarrollo de un programa es un editor de texto. Un editor es un programa que nos permite escribir (editar) las instrucciones del programa y posteriormente guardar el programa en un fichero en un soporte de almacenamiento. Cualquier editor de texto se puede utilizar para editar programas con la única precaución de que a la hora de guardar, salvar o almacenar el programa sólo se almacene el texto sin opciones de formato: negrita, estilos, itálica, etc.

Lo normal es utilizar un editor especialmente preparado para la programación. Estos tienen facilidades para la corrección de errores, destacan las palabras del lenguaje en colores, y en general facilitan la labor del programador.

Procesadores del lenguaje: traductores, compiladores e intérpretes

Una vez editado nuestro programa es necesario que este sea procesado y tranformado en ódenes que puedan ser ejecutadas por el ordenador. Estas órdenes por tanto deben estar en el único lenguaje que la máquina entiende: el código máquina. Para ello son necesarios los proceadores de lenguaje cuyo concepto es muy amplio. Dentro de los procesadores de lenguaje destacan los traductores, los compiladores y los intérpretes.

Un compilador es un programa cuyo cometido es realizar la conversión de un programa escrito en un lenguaje de programación a su correspondiente equivalente en lenguaje máquina. El resultado que devuelve un compilador es un programa que ya puede ser ejecutado por el ordenador destino sin la necesidad de que el compilador esté presente. Por ejemplo, el lenguaje Pascal o el lenguaje C son lenguajes de programación que necesitan ser compilados. Cuando la conversión se realiza entre el lenguaje ensamblador (Assembly) y el código máquina, el compilador recibe el nombre específico de Ensamblador (Assembler).

Un intéprete es un programa que convierte línea por línea el programa escrito en un lenguaje de programación y que a medida que realiza la conversión ejecuta las instrucciones . Evidentemente el intérprete no devuelve nada ya que la ejecución se realiza de forma simultánea. Por este motivo, el intérprete debe estar presente durante la ejecución. Lenguajes de programación que tradicionalmente son interpretados son el LISP y el BASIC.

Un traductor es el nombre que reciben aquellos procesadores de lenguaje que convierten programas de unos lenguajes a otros pero no generan código máquina. Por ejemplo hay traductores de Pascal a C y viceversa.

Hay otros lenguajes de programación que combinan ambas estrategias como por ejemplo sucede con el lenguaje de programación Java . Para este lenguaje existen traductores que generan un programa en un código denominado intermedio que luego será ejecutado a través de un intérpre que recibe en este caso el nombre de máquina virtual Java.

Enlazadores

Por simplificación y para facilitar la comprensión de los conceptos anteriores se ha señalado que los compiladores y los ensambladores (caso particular de compilador) generan código máquina que puede ser ejecutado por el ordenador. Sin embargo esto no es totalmente cierto ya que hay una etapa de enlazado que debe ser realizada por otro programa denominado enlazador (linker). Lo habitual es que durante la escritura de un programa sea necesario utilizar otros subprogramas en forma de bibliotecas de funciones o bien que el propio programa esté formado realmente por varios programas almacenados en diferentes ficheos. Esta situación hace que durante la compilación de cada módulo no se conozca con exactitud la ubicación de las instrucciones del resto de programas o bibliotecas de funciones. El papel del enlazador es unir en un único fichero ejecutable el resultado de todas las compilaciones así como las bibiotecas estáticas de funciones. Es frecuente que el enlazado sea un paso más de la compilación y que se ejecute inmediatamente tras la compilación de todos los ficheros.

Es habitual denominar a cada uno de los ficheros que participan en el desarrollo de un programa con nombres genéricos que identifican en qué fase se encuentran. Por ejemplo, las instrucciones que escribe directamente el programador y que forman el programa en el lenguaje de programación escogido como ficheros fuente (source file). El resultado de la compilación de estos programas se denomina fichero objeto (object file) y por el último el resultado del enlazado fichero ejecutable (executable file). Es este último el único que puede entender un ordenador sin la presencia del compilador. En el caso de los lenguajes interpretados el fichero fuente es directamente interpretado y ejecutado por el interprete.

Depuradores

Una vez editado y compilado el programa es necesario ejecutarlo (run en inglés), pero es habitual que durante el desarrollo de una aplicación que generen ficheros ejecutables que aunque sean correctos desde un punto de vista sintáctico no realicen lo que realmente se espera de ellos por lo que se consideran que no funcionan correctamente. Los depuradores (debuggers) son capaces de ejecutar el programa paso a paso incluyendo además un conjunto de facilidades que permiten observar el valor de las variables y estructuras de datos permitiendo así una mejor localización de errores no evidentes.