UP | HOME

Lenguajes compilados e interpretados

Table of Contents

Introducción

Los lenguajes de programación son herramientas esenciales en el desarrollo de software, y se dividen comúnmente en dos categorías: compilados e interpretados. La principal diferencia entre ambos radica en cómo se ejecuta el código fuente que escriben los programadores.

Un lenguaje compilado convierte el código fuente en código máquina a través de un compilador. Esto significa que antes de que el programa se ejecute, se traduce completamente a un formato que la computadora puede entender. Ejemplos de lenguajes compilados incluyen C, C++ y Rust.

Por otro lado, un lenguaje interpretado utiliza un intérprete para traducir y ejecutar el código línea por línea en tiempo de ejecución. Ejemplos de lenguajes interpretados incluyen Python, JavaScript y Ruby.

En la siguiente tabla se resumen las ventajas, inconvenientes y características de cada tipo de lenguaje: compilados e interpretados.

Lenguajes compilados Lenguajes interpretados
Se tienen que compilar y dicha compilación puede requerir muchísimo tiempo No hace falta invertir tiempo en la traducción, se escribe el código y se pueden pasar a ejecutar inmediatamente
Los programas compilados son más rápidos en su ejecución Los programas interpretados son más lentos en su ejecución
Si quieres ejecutar el programa en varias arquitecturas tendrás que compilar para cada una de ellas, obteniendo un ejecutable diferente para cada arquitectura Teniendo el intérprete instalado, el programa interpretado se puede ejecutar en cualquier arquitectura
El usuario final solo necesita el ejecutable para ejecutar un programa compilado El usuario final tiene que instalar el intérprete en su equipo para poder ejecutar un programa interpretado
Mejor control sobre la gestión de memoria y optimizaciones en el código Más fácil de depurar y modificar el código en tiempo real
La mayoría de los errores se detectan en tiempo de compilación, lo que puede reducir los fallos en tiempo de ejecución (bugs) Los errores se detectan en tiempo de ejecución, lo que puede causar interrupciones o fallos inesperados
Suelen ser usados en aplicaciones donde el rendimiento es crítico, como sistemas operativos o aplicaciones de alto rendimiento Frecuentemente utilizados en el desarrollo web, scripting y aplicaciones de prototipado debido a su flexibilidad

En los siguientes apartados vamos a ver cómo usar lenguajes compilados, usando C y Java como base, y lenguajes interpretados, usando Python como lenguaje de prueba.

Java es en realidad un lenguaje compilado a un código intermedio llamado bytecode. Este bytecode es ejecutado por una máquina virtual llamada Java Virtual Machine o JVM. Esto permite que el mismo código de Java pueda ser ejecutado en diferentes arquitecturas. Lo único necesario es tener dicha máquina virtual instalada en el equipo en el que se va a ejecutar el programa.

Así, si quieres desarrollar programas en Java vas a necesitar instalar en tu equipo un kit de desarrollo llamado Java Development Kit o JDK. Si quieres ejecutar programas escritos en Java entonces tendrás que instalar el llamado Java Runtime Environment o JRE.

Más adelante aprenderemos a instalar en entorno de programación de Java, tanto en Linux como en Windows.

El PATH de los sistemas operativos

El PATH es una variable de entorno en los sistemas operativos que define una lista de directorios donde el sistema buscará archivos ejecutables. Cuando un usuario intenta ejecutar un comando en la terminal o en la línea de comandos, el sistema busca en estos directorios para encontrar el programa correspondiente.

En sistemas UNIX/Linux, los directorios se separan por dos puntos (:), mientras que en Windows se utilizan punto y coma (;).

En un sistema Linux, el valor típico de la variable PATH puede ser algo como:

/bin:/usr/bin:/usr/local/bin

Para ver el PATH, en Linux, desde la terminal:

$ echo $PATH

En Windows, el PATH, podría verse así:

C:\Program Files\Python39\;C:\Windows\System32\;C:\Windows\

Para ver el PATH, en Windows, desde la terminal:

$ echo %PATH%

Conocer cómo funciona el PATH es fundamental para los programadores por varias razones:

  1. Ejecutar Herramientas y Scripts

    Los programadores a menudo usan diversas herramientas y lenguajes de programación (como Python, Java, etc.). Si estos ejecutables no están en el PATH, deberán especificar la ruta completa cada vez, lo que puede ser ineficiente.

  2. Configuración de Entornos de Desarrollo

    Al configurar entornos de desarrollo, como instalar el SDK de un lenguaje o bibliotecas, a menudo se necesita agregar directorios al PATH para que el sistema pueda encontrar estos programas.

  3. Resolución de Problemas

    Entender el PATH ayuda a los programadores a diagnosticar problemas de integración de software. Si un comando no funciona, puede ser porque el directorio correspondiente no está en el PATH.

  4. Portabilidad del Código

    Si se utilizan herramientas o lenguajes específicos, es vital que los compañeros de equipo o colaboradores tengan las mismas configuraciones de PATH para que el código funcione en sus entornos.

Lenguajes compilados

Lenguaje C

El lenguaje de programación C es un lenguaje muy popular y su sintaxis ha servido de base para muchos otros lenguajes como Java.

Existen varios compiladores de C, pero nosotros vamos a usar GNU GCC o simplemente gcc (GNU C Compiler).

Los compiladores son herramientas, utilidades o programas de la terminal, es decir, se usan sobre la terminal.

Uso básico: compilación completa, desde el código fuente al código ejeutable

Partimos de un fichero fuente llamado main.c con el siguiente programa, típico "Hola Mundo":

#include <stdio.h>

int main(int argc, char **argv)
{
    printf("Hola Mundo!!!\n");
    return 0;
}

Para poder ejecutarlo, antes lo tienes que traducir a lenguaje máquina. Es ahí donde usamos el compilador gcc. Desde la terminal, situándose en el directorio donde está el fichero fuente main.c, se ejecuta el siguiente comando:

$ gcc -o main main.c

Básicamente, el compilador de C, se usa tal que así:

  • Se invoca al compilador (se ejecuta) gcc
  • Con la opcion -o se decide el nombre del ejecutable que, en este ejemplo, será main
  • A continuación se especifican los ficheros fuente necesarios para obtener el ejecutable final (en este caso todo esta en l mismo fichero fuente llamado main.c)

Ahora verás dos ficheros:

  • main con el código ejecutable
  • main.c con el código fuente

Para ejecutar el programa, desde el directorio donde está el ejecutable main, en la terminal lo ejecutas como si fuera un comando más:

$ ./main

Fíjate como hemos especificado, realmente, la ruta relativa al ejecutable. De otro modo no se ejecutaría el programa porque estaría buscando un ejecutable llamado main en el PATH del sistema.

Obtener código objeto (no ejecutable)

El compilador lleva a cabo varios pasos para, partiendo del código fuente, obtener el código máquina final. Resumiendo bastante, podemos decir que el compilador, pasa por dos etapas:

  1. Convertir el código fuente a código objeto por medio de la traducción, y
  2. Enlazar (linkar) todo el código objeto y las bibliotecas necesarias para obtener el código ejecutable final.

Si solo quieres obtener el código objeto, la traducción sin el enlace, puedes usar la opción -c como ves a continuación:

$ gcc -o main.o -c main.c

En C, los ficheros fuente tienen extensión *.c, los ficheros objeto tienen extensión *.o y los ficheros ejecutables no tienen extensión.

Lenguaje Java

Para compilar programas escritos en Java se usa el compilador denominado javac (de Java Compiler). El compilador de Java se instala con el JDK que, previamente, habrás debido instalar en tu equipo de desarrollo.

Imagina el típico programa "Hola Mundo" escrito en Java en un fichero fuente llamado Main.java:

public class Main {
    public static void main(String[] args) {
        System.out.println("Hola Mundo!!!");
    }
}

Para compilar este programa, abre la terminal y ejecuta el compilador tal que así:

$ javac Main.java

Verás, como resultado, un fichero llamado Main.class con el código intermedio o bytecode que podrás ejecutar usando la máquina virtual de Java o JVM, que no es más que un programa de la terminal llamado java:

$ java Main

Fíjate como no hay que especificar la extensión del programa a ejecutar (solo Main sin el .class).

Para poder usar las herramientas javac (el compilador de Java) y el java (el JVM de Java) tienes que tener instalado el JDK en tu equipo.

Lenguajes interpretados

Veamos cómo ejecutar un programa escrito con un lenguaje interpretado. Vamosa usar Python. Este sería el archivo fuente, que podemos llamar main.py, por ejemplo:

print("Hola Mundo!!!")

Así de fácil sería escribir el típico "Hola Mundo" en Python. Ahora, para ejecutarlo, necesitas tener instalado el intérprete de Python, que es un programa de la terminal, y lanzar el archivo fuente main.py con el intérprete:

$ python main.py

Author: Román Ginés Martínez Ferrández

Created: 2026-01-06 mar 18:17

Validate