Fundamentos de Lenguajes de Programación: Tipos, Código y Procesamiento

Clasificado en Informática

Escrito el en español con un tamaño de 4,95 KB

Tipos de Lenguajes de Programación

En informática, existen principalmente dos categorías de lenguajes de programación en función de su nivel de abstracción respecto al hardware:

  • Lenguaje de bajo nivel (como el Ensamblador o Assembler)
  • Lenguaje de alto nivel (como C, C++, Python, Java, etc.)
  • Lenguaje máquina (el nivel más bajo, directamente entendido por el procesador)

Lenguaje de Bajo Nivel

Son lenguajes totalmente dependientes de la máquina, es decir, que un programa realizado con este tipo de lenguajes no se puede migrar o utilizar directamente en otras máquinas con arquitecturas diferentes. Dentro de esta categoría encontramos el lenguaje máquina y el lenguaje ensamblador.

Lenguaje de Alto Nivel

Se trata de lenguajes independientes del tipo de máquina. En principio, un programa escrito en un lenguaje de alto nivel se puede migrar de una máquina a otra (con el compilador o intérprete adecuado) sin grandes problemas. Dentro de este tipo de lenguajes encontramos ejemplos como C, C++, Python, Java, entre otros.

Del Código Fuente al Ejecutable

El proceso de creación de un programa implica diferentes representaciones del código:

Código Fuente

Es un conjunto de líneas de texto con los pasos que debe seguir el ordenador para ejecutar dicho programa, o una parte de él.

Características:

  • Es el texto que escriben los programadores mediante algún editor de texto.
  • No constituye software directamente ejecutable, solo un conjunto de instrucciones escritas.
  • Utiliza sentencias y órdenes derivadas, a menudo, del inglés.
  • Está cercano al razonamiento y entendimiento humano.
  • El ordenador no entiende directamente este código.
  • Se escribe en un lenguaje de alto nivel (como C++, Java, Python).
  • Los diferentes lenguajes de alto nivel habitualmente son incompatibles entre sí por tener sintaxis y semántica diferentes.

Existe el concepto de código fuente libre (Open Source), que consiste en que cualquier programador tenga acceso libremente a los algoritmos desarrollados por sus creadores para poder analizarlo, copiarlo y modificarlo, creando nuevas versiones.

Código Objeto

Es el resultado de la compilación del código fuente. Es una traducción intermedia y el resultado puede estar en Bytecode (un código intermedio independiente de la plataforma) o directamente en lenguaje máquina.

Características:

  • Se genera después de procesar el código fuente con un compilador.
  • Es un código intermedio entre el código fuente y el código ejecutable (en muchos procesos de compilación).
  • El programa traductor que lo genera es el compilador.
  • Generalmente no es inteligible directamente para el ser humano.
  • A partir del código objeto, normalmente no se puede obtener el código fuente original de forma sencilla (proceso conocido como descompilación, que suele ser complejo).

Código Ejecutable

Es el código final que genera el fichero directamente ejecutable por el sistema operativo.

Características:

  • Representa el último paso para crear un programa que el usuario puede correr.
  • Este código conforma el fichero ejecutable (con extensión .exe en Windows, o sin extensión específica en sistemas tipo Unix, pero con permisos de ejecución).
  • Está en lenguaje máquina o un formato que el cargador del sistema operativo entiende.

Compilación e Interpretación

Existen dos formas principales de traducir y ejecutar programas escritos en lenguajes de alto nivel:

  1. Compilación: El programa que realiza este proceso se llama compilador.
  2. Interpretación: El programa que realiza este proceso se llama intérprete.

Ambos son programas traductores que convierten el código escrito en un lenguaje de alto nivel a código máquina, aunque trabajan de forma distinta:

  • Un compilador traduce todo el código fuente a código máquina (o código intermedio) de una vez, generando un archivo ejecutable separado.
  • Un intérprete traduce y ejecuta el código fuente línea por línea o instrucción por instrucción, sin generar necesariamente un archivo ejecutable independiente previo.

Proceso General:

Lenguaje de Alto Nivel → Traductor (Compilador o Intérprete) → Lenguaje Máquina (Ejecución)

Entradas relacionadas: