Cómo diferenciar los tipos de Lenguajes de Programación

Hay muchos tipos de lenguajes de programación. En esta entrada aprenderemos a diferenciarlos y sobre todo, cómo clasificarlos.

Uno de los tipos de lenguajes de programación son lenguajes formales, como lo son el lenguaje matemático o el lenguaje lógico. Que sea formal significa que está formalmente especificado, esto es, las normas sintácticas determinan las combinaciones de símbolos válidos. A estas combinaciones las llamaremos fórmulas bien formadas.

El lenguaje formal es el conjunto de fórmulas bien formadas que se pueden construir a partir de su alfabeto.

Los lenguajes de programación también tienen un conjunto de normas semánticas que determinan el significado de las fórmulas bien formadas. Además, este significado es unívoco, es decir, cada fórmula tiene un único significado y no admite ambigüedades.

Atendiendo al nivel, es decir, la proximidad del lenguaje respecto a la máquina.

Podemos clasificarlos en diferentes tipos de lenguajes de programación:

Lenguaje máquina

Es el único que reconoce y ejecuta la CPU. Consiste en secuencias de 1 y 0 que codifican tanto las instrucciones a realizar como los datos de dichas instrucciones. Son dependientes de la máquina, ya que cada procesador cuenta con su propio juego de instrucciones. Se considera el lenguaje de primera generación.

Lenguaje ensamblador

Es un lenguaje mnemotécnico, intermedio entre el lenguaje máquina y el de alto nivel. Consiste en un conjunto de abreviaturas para facilitar el acceso al juego de instrucciones del lenguaje máquina.

Cada instrucción de ensamblador se corresponde con una única instrucción en LM y al igual que éste, también depende de la máquina.

Para poder ejecutar un programa en ensamblador es necesario “ensamblarlo” para genera el código ejecutable.

Se considera lenguaje de segunda generación (algunos también incluirían en esta generación a C).

Lenguaje de alto nivel

Son lenguajes de programación formados por sentencias que se representan mediante palabras del lenguaje humano. A diferencia de los 2 anteriores, son independientes de la máquina, por lo que el código generado, el código fuente, necesita ser compilado y enlazado para generar el ejecutable, que no es más que código máquina del procesador en el que correrá el programa.

Pueden ser de:

  • Tercera generación: lenguajes de propósito general que permiten un alto nivel de abstracción y una forma de programar mucho más entendible e intuitiva, donde algunas instrucciones son traducción directa del lenguaje humano.
  • Cuarta generación: son lenguajes creados con un propósito específico. Reducen la cantidad de líneas de código a escribir en los lenguajes de tercera generación ya que tienen rutinas para las operaciones específicas para las que fueron creados. Por ejemplo, lenguajes de interrogación de bases de datos o lenguajes creados para aplicaciones matemáticas o estadísticas.
  • Quinta generación: pretenden abstraer aún más el lenguaje natural con una base de conocimientos que produce un sistema basado en conocimiento. Pueden establecer el problema que hay que resolver y las premisas y condiciones que hay que reunir para que la máquina los resuelva, son ejemplos de esto: PROLOG, LISP utilizados sobre todo en lógica e inteligencia artificial.
  Las extensiones de Visual Studio Code más útiles para programadores

A su vez los Lenguajes de alto nivel se clasifican en:

Lenguajes Compilados

En los lenguajes compilados, hay que convertir todo el código fuente en lenguaje máquina (código objeto), antes de poder generar el ejecutable. En este proceso, llamado compilación, se detectan los errores sintácticos que hubiera. Hasta que estos no son subsanados no obtenemos el código objeto.

Una vez que tenemos el código objeto, se realiza el enlazado con las referencias externas al programa en cuestión para conseguir el ejecutable.

Ejemplos de lenguajes compilados: C, COBOL, Pascal, etc.

Lenguajes Interpretados

En los lenguajes interpretados, el código fuente se va convirtiendo y ejecutado “al vuelo” instrucción por instrucción, por tanto no obtenemos ningún fichero con el código objeto. Cada vez que el programa se ejecuta, el código tiene que ser traducido, aunque últimamente se están utilizando técnicas de compilación JIT que utilizan cachés para reutilizar código que ha sido recientemente interpretado.

Ejemplos de lenguajes interpretados: Lisp, Ruby, Prolog.

Lenguajes ejecutados en máquinas virtuales

Últimamente, se están desarrollando lenguajes en los que el código fuente no se compila directamente a código máquina, sino que se compila un código intermedio y se ejecuta en una máquina virtual. Ésta, se encarga de convertir las instrucciones en código intermedio (lenguaje máquina de la máquina virtual), a código máquina nativo (lenguaje máquina de la máquina real).

Desde la perspectiva de la máquina virtual, el código fuente es compilado, pero, desde la perspectiva de la máquina real, el código intermedio es interpretado.

Generalmente el paso de código intermedio a código nativo, se realiza usando los denominados compiladores Just in Time (al vuelo), que optimizan el proceso, utilizando cachés, o almacenes temporales, donde guardan las conversiones ya realizadas para optimizar el proceso.

Ejemplos de este último grupo serían Java o los lenguajes para la plataforma .net de Microsoft (Visual Basic .net, Visual C#, etc).

5/5 - (7 votos)

2 comentarios en «Cómo diferenciar los tipos de Lenguajes de Programación»

Deja una respuesta