1) Nivel abstracto: según el nivel de
abstracción, es decir el nivel de cercanía a la máquina.
a. Lenguajes de bajo nivel: La
programación se realiza teniendo muy en cuenta las características del
procesador. Por ejemplo: lenguaje ensamblador.
b. Lenguajes de nivel medio: Permiten
un mayor grado de abstracción pero al mismo tiempo mantienen algunas cualidades
de los lenguajes de bajo nivel. Ejemplo: C.
c. Lenguajes de alto nivel: Más
parecidos al lenguaje humano. Manejan conceptos, tipos de datos, etc., de una
manera cercana al pensamiento humano ignorante (abstrayéndose) del
funcionamiento de la máquina. Ejemplo: Java, Ruby.
Hay quienes sólo consideran a los lenguajes de alto y de bajo nivel, en
ese caso, C es considerado de alto nivel.
2) Propósito: según el tipo de
problemas a tratar con ellos.
a. Lenguajes de propósito general:
Aptos para todo tipo de tareas. Ejemplo:
C.
b. Lenguajes de propósito específico:
hechos para un objetivo muy concreto. Ejemplo: Csound (para crear ficheros de
audio.
c. Lenguajes de programación de
sistemas: diseñados para realizar sistemas operativos o drivers. Ejemplo: C.
d. Lenguajes de script: para realizar
tareas varias de control y auxiliares. Antiguamente eran los llamados,
lenguajes de procesamiento por lotes (batch) o JCL (Job Control Languages). Se subdividen
e varias clases (de Shell, de GUI, de programación web, etc.)
3) Evolución histórica: con el paso del
tiempo, se va incrementando el nivel de abstracción, pero en la práctica los de
una generación no terminan de sustituir a los de la anterior.
a. Lenguajes de primera generación (1GL):
Código máquina.
b. Lenguajes de segunda generación
(2GL): Lenguajes ensamblados.
c. Lenguajes de tercera generación
(3GL): La mayoría de los lenguajes modernos, diseñador para facilitar la
programación a los humanos. Ejemplo: Java.
d. Lenguajes de cuarta generación (4
GL): diseñados con un propósito concreto, o sea, para abordar un tipo concreto
de problemas. Ejemplos: NATURAL.
e. Lenguajes de quinta generación
(5GL): la intención es que el programador establezca el que problema ha de ser
resuelto y las condiciones a reunir, y que la máquina lo resuelva. Se usa en
inteligencia artificial. Ejemplo: Prolog.
4) Manera de ejecutarse: Según la
manera de ejecutarse.
a. Lenguajes compiladores: un programa
traductor que traduce el código del programa (código fuente) en código máquina
(código objeto). Otro programa, el enlazador, unirá los ficheros de código
objeto del programa principal con los de las librerías para producir el
programa ejecutable. Ejemplo: C.
b. Lenguajes interpretados: Un programa
(interprete), ejecuta las instrucciones del programa de manera directa:
ejemplo: Lisp.
También los hay mixtos
como Java, que primero pasan por una fase de compilación en la que el código
fuente se transforma en “bytecode”, puede ser ejecutado luego en ordenadores
con distintas arquitecturas (procesadores) todos que tengan instalados la misma
“máquina virtual”.
5) Manera de abordar la tarea a
realizar.
a. Lenguajes imperativos: Indican como
hay que hacer la tarea, es decir, expresan los pasos a realizar. Ejemplo: C.
b. Lenguajes declarativos: Indican que
hay que hacer. Ejemplo: Lisp
6) Paradigma de programación: El
paradigma de programación es el estilo de programación empleado. Algunos lenguajes
soportan varios paradigmas, y otros sólo uno. Se puede decir que históricamente
han ido apareciendo para facilitar la tarea de programar según el tipo de
problema a abordar, o para facilitar el mantenimiento del software, o por otra
cuestión similar, por lo que todos corresponden a lenguajes de alto nivel (o
nivel medio), estando los lenguajes ensambladores “atados” a la arquitectura de
su procesador correspondiente. Los principales son:
a. Lenguajes de programación
procedural: divide el problema en partes más pequeñas, que serán realizadas por
subprogramas. Que se llaman unas a otras para ser ejecutadas. Ejemplo: C y
PASCAL.
b. Lenguajes de programación orientada
a objetos: Crean un sistema de clases y objetos siguiendo el ejemplo del mundo
real, en el que unos objetos realizan acciones y se comunican con otros
objetos. Ejemplos: C++.
c. Lenguajes de programación funcional:
la tarea se realiza evaluando las funciones (como en matemáticas), de manera
recursiva. Ejemplo: Lisp.
d. Lenguajes de programación lógica: la
tarea a realizar se expresa empleando lógica formal matemática. Expresa que
computar. Ejemplo: Prolog.
7) Lugar de ejecución: Sistema
distribuido según donde se ejecute.
a. Lenguaje de servidor: Su ejecución
es en el servidor. Ejemplo: Ada.
b. Lenguaje de cliente: Se ejecutan en
el cliente. Ejemplo: JavaScript.
8) Concurrencia: Según admitan o no
concurrencia de procesos.
a. Lenguajes concurrentes. Ejemplo:
Ada.
concurrentes. Ejemplo:
C.
9) Interactividad: según la
interactividad del programa con el usuario u otros programas:
a. Lenguajes orientados a sucesos: El
flujo del programa es controlado por la interacción con el usuario o por
mensajes de otros programas/sistema operativo, como editores de texto,
interfaces gráficos de usuario (GUI) o Kernels. Ejemplo: VisualBasic.
b. Lenguajes no orientados a sucesos:
El flujo del programa no depende de sucesos exteriores, sino que se conoce de
antemano, siendo los procesos batch, el ejemplo más claro.
10) Realización visual: según la realización
visual del programa.
a. Lenguajes de programación visual: El
programa se realiza moviendo bloques de construcción de programas (objetos visuales)
en un interfaz adecuado para ello. No confundir con entornos de programación
visual, como Microsoft Visual Studio. Ejemplo: Mindscript.
b. Lenguajes de programación textual:
el código del programa se realiza escribiéndolo. Ejemplo: C.
11) Determinismo: Según se pueda
predecir o no el siguiente estado del programa a partir del estado actual.
a. Lenguajes deterministas: Ejemplo,
Todos los anteriores.
b. Lenguajes probabilístico o no
determinista: Sirve para explorar grandes espacios de búsqueda, (como
gramática), en la investigación teórica
de hipercomputación. Ejemplo: mutt.
12) Productividad: Se caracterizan por
tener virtudes útiles o productivas, u oscuras y enrevesadas.
13) Lenguajes útiles o productivos: sus
virtudes en cuanto a eficiencia, sencillez, claridad, productividad, etc.
14) Lenguajes esotéricos o exóticos:
Inventados con la intención de ser los más raros, oscuros, difíciles, simples
y/o retorcidos de los lenguajes, para diversión y entretenimiento de frikis
programadores. A veces exploran nuevas ideas de programación. Ejemplo:
Branfuck.
No hay comentarios:
Publicar un comentario