Un lenguaje de programación es un lenguaje inventado para controlar una máquina, (normalmente, un ordenador). Hay muchísimos, de toda clase de tipos y características, inventados para facilitar el abordaje de distintos problemas, el mantenimiento del software, su reutilización, mejorar la productividad, etc.
Los lenguajes de programación se pueden clasificar según varios criterios. He encontrado doce en total: Nivel de abstracción, propósito, evolución histórica, manera de ejecutarse, manera de abordar la tarea a realizar, paradigma de programación, lugar de ejecución, concurrencia, interactividad, realización visual, determinismo y productividad.
Hay que tener en cuenta también, que en la práctica, la mayoría de lenguajes no pueden ser puramente clasificados en una categoría, pues surgen incorporando ideas de otros lenguajes y de otras filosofías de programación, pero no importa al establecer las clasificaciones, pues el auténtico objetivo de las mismas es mostrar los rangos, las posibilidades y tipos de lenguajes que hay.
1. Nivel de abstracción.
Según el nivel de abstracción, o sea, según el grado de cercanía a la máquina:
- Lenguajes de bajo nivel: La programación se realiza teniendo muy en cuenta las características del procesador. Ejemplo: Lenguajes ensamblador.
- 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 puede realizar operaciones lógicas y de desplazamiento con bits, tratar todos los tipos de datos como lo que son en realidad a bajo nivel (números), etc.
- Lenguajes de alto nivel: Más parecidos al lenguaje humano. Manejan conceptos, tipos de datos, etc., de una manera cercana al pensamiento humano ignorando (abstrayéndose) del funcionamiento de la máquina. Ejemplos: Java, Ruby.
Hay quien sólo considera lenguajes de bajo nivel y de alto nivel, (en ese caso, C es considerado de alto nivel).
2. Propósito.
Según el propósito, es decir, el tipo de problemas a tratar con ellos:
- Lenguajes de propósito general: Aptos para todo tipo de tareas: Ejemplo: C.
- Lenguajes de propósito específico: Hechos para un objetivo muy concreto. Ejemplo: Csound (para crear ficheros de audio).
- Lenguajes de programación de sistemas: Diseñados 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 programación web, etc.). Ejemplos: bash (shell), mIRC script, JavaScript (programación web).
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:
- Lenguajes de primera generación (1GL): Código máquina.
- Lenguajes de segunda generación (2GL): Lenguajes ensamblador.
- Lenguajes de tercera generación (3GL): La mayoría de los lenguajes modernos, diseñados para facilitar la programación a los humanos. Ejemplos: C, Java.
- Lenguajes de cuarta generación (4GL): Diseñados con un propósito concreto, o sea, para abordar un tipo concreto de problemas. Ejemplos: NATURAL, Mathematica.
- Lenguajes de quinta generación (5GL): La intención es que el programador establezca el qué problema ha de ser resuelto y las condiciones a reunir, y la máquina lo resuelve. Se usan en inteligencia artificial. Ejemplo: Prolog.
4. Manera de ejecutarse.
Según la manera de ejecutarse:
- Lenguajes compilados: Un programa traductor 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.
- Lenguajes interpretados: Un programa (intérprete), 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», y este «bytecode» puede ser ejecutado luego (interpretado) en ordenadores con distintas arquitecturas (procesadores) que tengan todos instalados la misma «máquina virtual» Java.
5. Manera de abordar la tarea a realizar.
Según la manera de abordar la tarea a realizar, pueden ser:
- Lenguajes imperativos: Indican cómo 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 programación, son HTML (para describir páginas web) o SQL (para consultar bases de datos).
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:
- Lenguajes de programación procedural: Divide el problema en partes más pequeñas, que serán realizadas por subprogramas (subrutinas, funciones, procedimientos), que se llaman unas a otras para ser ejecutadas. Ejemplos: C, Pascal.
- 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++, Java.
- Lenguajes de programación funcional: La tarea se realiza evaluando funciones, (como en Matemáticas), de manera recursiva. Ejemplo: Lisp.
- Lenguajes de programación lógica: La tarea a realizar se expresa empleando lógica formal matemática. Expresa qué computar. Ejemplo: Prolog.
Hay muchos paradigmas de programación: Programación genérica, programación reflexiva, programación orientada a procesos, etc.
7. Lugar de ejecución.
En sistemas distribuidos, según dónde se ejecute:
- Lenguajes de servidor: Se ejecutan en el servidor. Ejemplo: PHP es el más utilizado en servidores web.
- Lenguajes de cliente: Se ejecutan en el cliente. Ejemplo: JavaScript en navegadores web.
8. Concurrencia.
Según admitan o no concurrencia de procesos, esto es, la ejecución simultánea de varios procesos lanzados por el programa:
- Lenguajes concurrentes. Ejemplo: Ada.
- Lenguajes no concurrentes. Ejemplo: C.
9. Interactividad.
Según la interactividad del programa con el usuario u otros programas:
- 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, lenguajes de programación 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 más claro (actualizaciones de bases de datos, colas de impresión de documentos, etc.). Ejemplos: Lenguajes de programación imperativos.
10. Realización visual.
Según la realización visual o no del programa:
- 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 y sus lenguajes de programación textuales (como Visual C#). Ejemplo: Mindscript.
- Lenguajes de programación textual: El código del programa se realiza escribiéndolo. Ejemplos: C, Java, Lisp.
11. Determinismo.
Según se pueda predecir o no el siguiente estado del programa a partir del estado actual:
- Lenguajes deterministas. Ejemplos: Todos los anteriores.
- Lenguajes probabilísticos o no deterministas: Sirven para explorar grandes espacios de búsqueda, (como gramáticas), y en la investigación teórica de hipercomputación. Ejemplo: mutt (generador de texto aleatorio).
12. Productividad.
Según 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 públicas y/o en la enseñanza. Ejemplos: Cualquier lenguaje de uso habitual (C, Java, C++, Lisp, Python, Ruby, …).
- 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 en programación. Ejemplo: Brainfuck.
Etiquetas: clasificación, lenguaje de programación.
quisiera saber sobre ejemplos de la clasificacion de los lenguajes de programacion
Creo que con los ejemplos que he incluído en cada clasificación es suficiente.
Agradezo por la información proporcionada, pero lo que faltaria para que este trabajo sea mas serio, es que se pudiera poner referencias bibliograficas y el nombre del autor o autores,
Gracias.
Las referencias bibliográficas y el autor soy yo. La «seriedad» depende de la validez y de la corrección de la información, así que esto es muy «serio».
quisiera saber sobre clasificacion segun su nivel aplicacion y paradigma del lenguaje JAVA
Java es un lenguaje de alto nivel de propósito general, y en cuanto al paradigma, los principales son procedural y orientado a objetos.
estos criterios son de los mas ampliamente aceptados, por muchos expertos y academicos, incluso resultan ilustrativos, pues relaciona el concepto con el tipo o estilo de programacion, pero faltaron las fuentes que consulto para estructurar la idea.
Las fuentes son los respectivos autores de dichos lenguajes, que al crearlos iban abriendo nuevos paradigmas y estilos de programación, haciendo evolucionar esta parte de la informática. Habría que hacer una investigación muy minuciosa y trabajosa en la historia de la programación. Daría para un libro.
He actualizado el artículo añadiendo al final dos nuevas clasificaciones: Determinismo y productividad.
buenas tardes
en la clasificacion de los lenguajes hay uno que es «Manera de abordar la tarea a realizar» que es el punto 5, que son implerativo y declarativo, quisas si sea usted el autor y le poga la seriedad posible, pero esta clasificacion lo devio de haber sacado de algun lado, el punto es, si tiene el autor que hace esta clasificacion, me gustaria que me la proporcionara, es de suma importancia, de verdad se lo agradecere.
¿Por qué es de suma importancia saber el nombre?. El autor soy yo, JTG.
esta informacion esta completa
ok
sirve de mucho
bye
Creo que está muy bien ampliado el tema
esta informasio me sirve de mucho pero algien me puede decir donde encuentro el lenguaje de programacion binario si saben plis publiquenl
bueno bye
A lo mejor has querido decir «lenguaje de programación en binario», que es el lenguaje máquina formado por 1 y 0, una cosa bastante ladrillo.
O quizás te referías al «sistema de numeración binario», que es algo que no tiene que ver (de manera directa) con lo aquí tratado.
quisiera ejemplos
me podrian decir cuales son los
tipos de programacion visual????????
tanyou
gracias mos salvaste en computacion!!!!!
hey falta poner la clasificacion de los lenguajes segun su generacion, paradigma, nivel de abstraccion y la forma e ejecucion… y esta pagina queda unica a nivel universal….
¿Pero qué dices? Están todas esas.
El artículo es muy bueno y está bien explicado y se entiende perfectamente. es de las mejores paginas que se encuentran enla RED. El artículo lo conservo para aprendermelo bien y la proxima vez que se trate el tema con alguien más me sentiré genial de saber lo que ustedes han escrito en él.
Tengo otro comentario y se trata de pedirles por favor si es posible que publiquen acerca de un lenguaje de programación llamado Phi. No encuentro nada relacionado a el y ya llevo horas buscando,ademas de que tampoco tengo mucho tiempo para su busqueda,así que les agradezco de antemano puedan hacer algo por mi al respecto.
Su pagina por cierto es digna de recomendarla sin más, quemás, es acertada.
Por el momento es todo, les agradezco mucho su atención y que sigan conmucho exito. Su respuesta , la veo mañana en mi correopor x favor o aquí en su pagina. Gracias. son las 19:35 aqui.
¡¡¡F E L I CI D A D E S!!!
No conozco ningún lenguaje de programación llamado Phi. ¿No será Delphi?.
Ya son las 14:20 horas y les escribo con gusto desde esta parte del planeta que aún es hermoso.
Repasé en mi mente y en inernet el concepto de «Lenguaje de programación Phi», y como tal no existe. El concepto mas bien se relaciona con otros varios Lenguajes de programación. Mas bien se trara de leer mucho y buscar para ir integrando el trabajo, que lleva el título de:
«Programación Phi -(Ky Lix).
El desarrollo del tema es el siguiente:
> Elementos.
Ambiente de trabajo.
– Pantalla.
– Tablas.
– Formularios.
– Controles.
– Métodos.
– Elementos.
– Eventos.
– Reportes.
Conclusiones.
Bibliografía.
Estoy muy agradecido con ustedes por dedicar de su tiempo y darme una respuesta. Disculpen por favor no les haya escrito anteriormente como es el trabajo que me ocupa el tiempo en su investigación; y sí, pregunte nuevamente y efectivamente, el trabajo a investigar lleva el titulo que les comento y, no es programación Delfhi, lo pregunté varias veces y siempre me dijeron que se trata de programación Phi.
Seguiré al pendiente de esto que nos ocupa el tiempo y, me despido de ustedes nuevamente, agradeciendo sus infinitas atenciones y deseandoles más exito en su empresa.
Atentamente: Dr. Toño.
PD. Disculpen, al pendiente significa que seguire consultando su página, como es costumbre en mí, para aprender más. GRACIAS.
Pues no, de ese asunto no sé nada.
Cuales cree usted que son los lenguajes de programacion mas usados?? saludos
C, C++, Java, JavaScript y PHP (sin ordenarlos, claro, y cada uno en lo suyo). Probablemente también C#.
NO SE DE LO QUE ESTAS HABLANDO
Gracias el articulo es muy completo de una para bibliografia, ojala colocaras tu nombre (el autor) con mas claridad
excelente tu informacion,te faltaron los lenguajes
micro-assembler y nano assembler para programacion de firmware,
podrias poner informacion de alguno de estos 2? busque en internet y no encontre mucho
ah y en nivel de abstraccion esta tambien lenguajes de 4ta generaccion (como Genexus) que son generadores de codigo en cualquier lenguaje.
esta 1000 veces mas completo que la wikipedia en la categoria clasificacion de lenguajes
saludos
Gracias. Por eso escribí el artículo, porque en ningún sitio estaba hecho como a mí me gusta.
No conozco esos micro-assembler y nano assembler.
muy buena informacion
gracias
los amo mil…….
y un saludo para las e 10
grasias a esta informaci0n pude terminar mi ensall0 sii grasias a quien abrio este articulo
NECESITO QUE ME LO MANDEN AMI CORREO ESTA BUENA LA INFORMACION
Muy interesante.
Existe alguna librería para C / C++ que permita realizar programación concurrente?. El artículo es claro al mencionar a C como «no concurrente», pero pregunto igual.
Gracias
Las librerías son paquetes de código hechos en el lenguaje, y por lo tanto, siguen las reglas del lenguaje (que las hace cumplir el compilador), por lo que no puede haber librerías que permitan programación concurrente.
Habría que cambiar el compilador, y entonces no sería un compilador de C, sino de otra cosa, como de Ada o de Pascal concurrente.
necesito informacion sobre cual es el tipo de lenguaje de programacion que se utiliza en los programas Word, Power Point y Excel.
Visual Basic para Aplicaciones (VBA):
http://www.webandmacros.com/macro_excel_definicion.htm
podria decirme la clasificacion de los lenguajes de programacion visual..?? llevo tiempo buscando y no consigo mucho..!! cualquier informacion acerca de VPL seria de utilidad.. gracias..
pasame informacion acerca de visual ogramming..languages.. gracias..
espero la respuesta
No estoy al tanto de eso.
quiero saber la casificacion de los lenguajes de programacion y etapa de desarrollo de un sistema
nadie sabe a todo
access es un lenguaje de programacion
Muy bien detallado el tema…. gracias… me sirvio de mucho
posi
quiero saber las desventajas de la comunicacion del lenguaje de programacion
Muchas Gracias por el tema, a mis compañeros y a mi nos a ayudado mucho, el prof. dijo que esta muy completo
Gracias por la informacion.
Gracias por la informacion. Me salavaste de reprobar en computacio
quiero que expliquen de la clasificasion del lenguaje aurita rapidito mañana tengo ese curso
Este artículo, es sumamente esclarecedor, recomendado y aporta información fehaciente.
Si el autor, no ha efectuado transcripciones textuales (que no lo ha hecho), no necesita citar fuentes de ningún tipo y por lo tanto, la ausencia de las mismas, NO puede ni debe, quitar mérito al artículo, ni tampoco por ello, es una opinión respetable, sostener que carece de seriedad.
Excelente aporte.
Saludos!
esta shiila la informaciiipn me sirvio de musha ayuuda graciias 🙂
esta informacion los mayuda a informarnos
ok!
Mu buena la información! tenemos este tema como parte de una tarea muy extensa 😀 pero gracias a tu ayuda terminaremos rapido
esta pagina ta genial
muy buena repuesta
Gracias por la información me sirvió saludos 😀
Orale!. Muchas gracias por esta información me ayudo en mucho! 😉
po9s yop0 creo k es muy aburrido9
Completo. Puedes mencionar que opinas sobre el rumbo de Java bajo Oracle
quisiera saver mas sobre el lenguaje y sobre la programacion
HOLA SOY OLAYBEL TENGO QUE ASER UNA TAREA COMPUTACION Y LO BUENO ES QUE ESTOY EN LA CUMPUTADORA TODO EL DIA JA,JA,JA
están bien pendejos .l.
Si quieren añadir bibliografía, consulten los libros de Sebesta y Louden de Lenguajes de Programación, son muy buenos para establecer diferencias con ejemplos. Podría recomendarte que agregaras ejemplos de compiladores en línea versus los descargables. Su existencia a mi también me tomó por sorpresa.
Ahh y a los paradigmas hay que agregar Programación orientada a eventos y aspectos.
mira me parece que tiene mucho sentido “tu explicacion ” me ha ayudado de mucho gracias
ademas no me gusta criticar lo que hacen los demas
a aburido
estuvobuena la info
Quisiera saber la clasificacion para el programa Julia
esto me parecio interesante
esto me parece interesante
es mucha informacion xD
grasias x la informasion
me sirbio muxho jejeps
manita arriba!!1 xDDDDDDDDD
muy largo
[…] Tipos de lenguaje de alto nivel […]
hola dame tu numero nena
[…] de programación Dentro de estos podemos clasificarlos en función de diferentes criterios (Nivel de abstracción, propósito, evolución histórica, manera de ejecutarse, manera de abordar […]
[…] de estos podemos clasificarlos en función de diferentes criterios (Nivel de abstracción, propósito, evolución histórica, manera de ejecutarse, manera de abordar […]
[…] de estos podemos clasificarlos en función de diferentes criterios (Nivel de abstracción, propósito, evolución histórica, manera de ejecutarse, manera de abordar […]
[…] de estos podemos clasificarlos en función de diferentes criterios (Nivel de abstracción, propósito, evolución histórica, manera de ejecutarse, manera de abordar […]