Sie sind auf Seite 1von 7

Clasificacin de lenguajes de programacin

Un lenguaje de programacin es un lenguaje inventado para controlar una mquina,


(normalmente, un ordenador). Hay muchsimos, de toda clase de tipos y caractersticas,
inventados para facilitar el abordaje de distintos problemas, el mantenimiento del software,
su reutilizacin, mejorar la productividad, etc.

Los lenguajes de programacin se pueden clasificar segn varios criterios. He encontrado


doce en total: Nivel de abstraccin, propsito, evolucin histrica, manera de ejecutarse,
manera de abordar la tarea a realizar, paradigma de programacin, lugar de ejecucin,
concurrencia, interactividad, realizacin visual, determinismo y productividad.

Hay que tener en cuenta tambin, que en la prctica, la mayora de lenguajes no pueden ser
puramente clasificados en una categora, pues surgen incorporando ideas de otros lenguajes
y de otras filosofas de programacin, pero no importa al establecer las clasificaciones, pues
el autntico objetivo de las mismas es mostrar los rangos, las posibilidades y tipos de
lenguajes que hay.

1. Nivel de abstraccin.

Segn el nivel de abstraccin, o sea, segn el grado de cercana a la mquina:

Lenguajes de bajo nivel: La programacin se realiza teniendo muy en cuenta las


caractersticas del procesador. Ejemplo: Lenguajes ensamblador.

Lenguajes de nivel medio: Permiten un mayor grado de abstraccin pero al mismo


tiempo mantienen algunas cualidades de los lenguajes de bajo nivel. Ejemplo: C
puede realizar operaciones lgicas y de desplazamiento con bits, tratar todos los
tipos de datos como lo que son en realidad a bajo nivel (nmeros), etc.

Lenguajes de alto nivel: Ms parecidos al lenguaje humano. Manejan conceptos,


tipos de datos, etc., de una manera cercana al pensamiento humano ignorando
(abstrayndose) del funcionamiento de la mquina. Ejemplos: Java, Ruby.

Hay quien slo considera lenguajes de bajo nivel y de alto nivel, (en ese caso, C es
considerado de alto nivel).

2. Propsito.

Segn el propsito, es decir, el tipo de problemas a tratar con ellos:

Lenguajes de propsito general: Aptos para todo tipo de tareas: Ejemplo: C.


Lenguajes de propsito especfico: Hechos para un objetivo muy concreto.
Ejemplo: Csound (para crear ficheros de audio).

Lenguajes de programacin de sistemas: Diseados para realizar sistemas


operativos o drivers. Ejemplo: C.

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 en varias clases (de shell, de GUI, de
programacin web, etc.). Ejemplos: bash (shell), mIRC script, JavaScript
(programacin web).

3. Evolucin histrica.

Con el paso del tiempo, se va incrementando el nivel de abstraccin, pero en la prctica,


los de una generacin no terminan de sustituir a los de la anterior:

Lenguajes de primera generacin (1GL): Cdigo mquina.

Lenguajes de segunda generacin (2GL): Lenguajes ensamblador.

Lenguajes de tercera generacin (3GL): La mayora de los lenguajes modernos,


diseados para facilitar la programacin a los humanos. Ejemplos: C, Java.

Lenguajes de cuarta generacin (4GL): Diseados con un propsito concreto, o


sea, para abordar un tipo concreto de problemas. Ejemplos: NATURAL,
Mathematica.

Lenguajes de quinta generacin (5GL): La intencin es que el programador


establezca el qu problema ha de ser resuelto y las condiciones a reunir, y la
mquina lo resuelve. Se usan en inteligencia artificial. Ejemplo: Prolog.

4. Manera de ejecutarse.

Segn la manera de ejecutarse:

Lenguajes compilados: Un programa traductor traduce el cdigo del programa


(cdigo fuente) en cdigo mquina (cdigo objeto). Otro programa, el enlazador,
unir los ficheros de cdigo objeto del programa principal con los de las libreras
para producir el programa ejecutable. Ejemplo: C.

Lenguajes interpretados: Un programa (intrprete), ejecuta las instrucciones del


programa de manera directa. Ejemplo: Lisp.
Tambin los hay mixtos, como Java, que primero pasan por una fase de compilacin en la
que el cdigo fuente se transforma en bytecode, y este bytecode puede ser ejecutado
luego (interpretado) en ordenadores con distintas arquitecturas (procesadores) que tengan
todos instalados la misma mquina virtual Java.

5. Manera de abordar la tarea a realizar.

Segn la manera de abordar la tarea a realizar, pueden ser:

Lenguajes imperativos: Indican cmo hay que hacer la tarea, es decir, expresan los
pasos a realizar. Ejemplo: C.

Lenguajes declarativos: Indican qu hay que hacer. Ejemplos: Lisp, Prolog. Otros
ejemplos de lenguajes declarativos, pero que no son lenguajes de programacin, son
HTML (para describir pginas web) o SQL (para consultar bases de datos).

6. Paradigma de programacin.

El paradigma de programacin es el estilo de programacin empleado. Algunos lenguajes


soportan varios paradigmas, y otros slo uno. Se puede decir que histricamente han ido
apareciendo para facilitar la tarea de programar segn el tipo de problema a abordar, o para
facilitar el mantenimiento del software, o por otra cuestin 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:

Lenguajes de programacin procedural: Divide el problema en partes ms


pequeas, que sern realizadas por subprogramas (subrutinas, funciones,
procedimientos), que se llaman unas a otras para ser ejecutadas. Ejemplos: C,
Pascal.

Lenguajes de programacin 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++, Java.

Lenguajes de programacin funcional: La tarea se realiza evaluando funciones,


(como en Matemticas), de manera recursiva. Ejemplo: Lisp.

Lenguajes de programacin lgica: La tarea a realizar se expresa empleando lgica


formal matemtica. Expresa qu computar. Ejemplo: Prolog.

Hay muchos paradigmas de programacin: Programacin genrica, programacin reflexiva,


programacin orientada a procesos, etc.

7. Lugar de ejecucin.
En sistemas distribuidos, segn dnde se ejecute:

Lenguajes de servidor: Se ejecutan en el servidor. Ejemplo: PHP es el ms utilizado


en servidores web.

Lenguajes de cliente: Se ejecutan en el cliente. Ejemplo: JavaScript en navegadores


web.

8. Concurrencia.

Segn admitan o no concurrencia de procesos, esto es, la ejecucin simultnea de varios


procesos lanzados por el programa:

Lenguajes concurrentes. Ejemplo: Ada.

Lenguajes no concurrentes. Ejemplo: C.

9. Interactividad.

Segn la interactividad del programa con el usuario u otros programas:

Lenguajes orientados a sucesos: El flujo del programa es controlado por la


interaccin con el usuario o por mensajes de otros programas/sistema operativo,
como editores de texto, interfaces grficos de usuario (GUI) o kernels. Ejemplo:
VisualBasic, lenguajes de programacin declarativos.

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
ms claro (actualizaciones de bases de datos, colas de impresin de documentos,
etc.). Ejemplos: Lenguajes de programacin imperativos.

10. Realizacin visual.

Segn la realizacin visual o no del programa:

Lenguajes de programacin visual: El programa se realiza moviendo bloques de


construccin de programas (objetos visuales) en un interfaz adecuado para ello. No
confundir con entornos de programacin visual, como Microsoft Visual Studio y sus
lenguajes de programacin textuales (como Visual C#). Ejemplo: Mindscript.

Lenguajes de programacin textual: El cdigo del programa se realiza


escribindolo. Ejemplos: C, Java, Lisp.

11. Determinismo.
Segn se pueda predecir o no el siguiente estado del programa a partir del estado actual:

Lenguajes deterministas. Ejemplos: Todos los anteriores.

Lenguajes probabilsticos o no deterministas: Sirven para explorar grandes


espacios de bsqueda, (como gramticas), y en la investigacin terica de
hipercomputacin. Ejemplo: mutt (generador de texto aleatorio).

12. Productividad.

Segn se caractericen por tener virtudes tiles o productivas, u oscuras y enrevesadas:

Lenguajes tiles o productivos: Sus virtudes en cuanto a eficiencia, sencillez,


claridad, productividad, etc., motiva que sean utilizados en empresas,
administraciones pblicas y/o en la enseanza. Ejemplos: Cualquier lenguaje de uso
habitual (C, Java, C++, Lisp, Python, Ruby, ).

Lenguajes esotricos o exticos: Inventados con la intencin de ser los ms raros,


oscuros, difciles, simples y/o retorcidos de los lenguajes, para diversin y
entretenimiento de frikis programadores. A veces exploran nuevas ideas en
programacin. Ejemplo: Brainfuck.

CLASIFICACIN DE LOS LENGUAJES DE PROGRAMACIN

Los lenguajes de programacin se pueden clasificar de acuerdo con diversos criterios. El criterio ms
simple que se puede considerar hace referencia a la proximidad del lenguaje con la mquina o con el
lenguaje natural. De acuerdo con este criterio, existen tres niveles:

Lenguajes de bajo nivel: Lenguajes mquina.

Lenguajes de nivel medio: Lenguajes ensambladores y macroensambladores.

Lenguajes de alto nivel: El resto de los lenguajes, a los que ya hemos hecho referencia.

Dado que los lenguajes de programacin, en cierto modo, han tenido un desarrollo paralelo a la
evolucin de los ordenadores, se pueden clasificar atendiendo a su desarrollo histrico. Esta
clasificacin distingue cinco generaciones de lenguajes:

Primera generacin: Lenguajes mquina.


Segunda generacin: Ayudas a la programacin, como los ensambladores.

Tercera generacin: Lenguajes de alto nivel imperativos, que siguen vigentes en la


actualidad, como Pascal, Modula 2, Fortran, Cobol, C y Ada.

Cuarta generacin: Lenguajes o entornos de programacin orientados bsicamente a


aplicaciones de gestin y bases de datos, como SQL, Natural, etc.

Quinta generacin: Lenguajes orientados a aplicaciones en Inteligencia Artificial, como Lisp


y Prolog.

4.1. Clasificaciones de los lenguajes de alto nivel

De forma muy general, los lenguajes de alto nivel se pueden dividir en lenguajes de propsito
general, que pueden ser empleados en cualquier tipo de aplicacin y lenguajes de propsito especial.

Desde el punto de vista del campo de aplicacin al que pertenece el lenguaje podemos
considerar la siguiente clasificacin:

Aplicaciones cientficas: En las que predominan las operaciones numricas o matriciales propias de
algoritmos matemticos. Lenguajes adecuados para estas aplicaciones son Fortran y Pascal.

Aplicaciones de procesamiento de datos: Donde son frecuentes las operaciones de creacin,


mantenimiento y consulta sobre ficheros y bases de datos. Dentro de este campo estaran aplicaciones
de gestin empresarial, como programas de nminas, contabilidad, facturacin, control de inventario,
etc. Lenguajes aptos para este tipo de aplicaciones son Cobol y SQL.

Aplicaciones de tratamiento de textos: Asociadas al manejo de textos en lenguaje natural. Lenguajes


adecuados para ello son el Snobol y el C.

Aplicaciones en inteligencia artificial: Realizacin de programas que emulan el comportamiento


inteligente: algoritmos de juegos, programas de comprensin del lenguaje natural, visin artificial,
robtica y sistemas expertos. Los lenguajes que se suelen utilizar en estos casos son el Lisp y el Prolog.

Aplicaciones de programacin de sistemas: Programacin de mdulos de sistemas operativos,


compiladores, ensambladores, intrpretes y, en general, aquellos de interfaz entre el hardware y los
usuarios. Tradicionalmente se utilizaba el lenguaje ensamblador, pero en la actualidad se muestran
muy adecuados los lenguajes Ada, C y Modula 2.
Otra forma de clasificar los lenguajes de alto nivel tiene en cuenta el estilo de programacin que
fomentan, es decir, la filosofa de construccin de programas:

Lenguajes imperativos o procedurales. Estos lenguajes se fundamentan en el uso de variables


para almacenar valores y el uso de instrucciones que indican las operaciones a realizar sobre los datos.
La mayora de los lenguajes de alto nivel son de este tipo.

Lenguajes declarativos. En este caso, el proceso por el cual se ejecuta el programa no


aparece de forma explcita. Los programas se construyen mediante la definicin de funciones
(lenguajes funcionales como Lisp) o expresiones lgicas que indican las relaciones entre determinadas
estructuras de datos (lenguajes de programacin lgica como Prolog).

Lenguajes orientados a objetos. El diseo de los programas se centra ms en los datos y su


estructura. Los programas consisten en descripciones de unidades denominadas objetos que
encapsulan los datos y las operaciones que actan sobre ellos. Uno de los lenguajes ms usados en esta
filosofa es el C++.

Lenguajes orientados al problema. Este tipo de lenguajes estn diseados para problemas
especficos, principalmente de gestin. Los programas estn formados por sentencias que indican qu
se quiere hacer. Generalmente, suelen ser generadores de aplicaciones que permiten cierta
automatizacin de la tarea de desarrollo de software de gestin.

Das könnte Ihnen auch gefallen