Pregunta

Hasta ahora he trabajado con Java, Prolog, SQL y C #. Sé que Java y C # son imperativos, Prolog declarativo y SQL en cierto modo declarativo. Java y C # están orientados a objetos y puedes desarrollar programas orientados a aspectos con ellos.

Ya se trata de cuatro características diferentes que ciertos lenguajes pueden encajar o implementar: imperativo, declarativo, orientado a objetos, orientado a aspectos y me he encontrado con varias otras categorías: lenguajes funcionales, lenguajes de ensamblaje y probablemente mucho más. t escuchado.

¿Existe algún tipo de categorización acordada y / o lógica o categorización multidimensional entre las cuales los lenguajes de programación se pueden clasificar de una manera algo consistente?

¿Fue útil?

Solución

Puede encontrar una gran cantidad de paradigmas de programación en este artículo de Wikipedia del mismo nombre . Especialmente el árbol de la derecha es bastante útil y completo.

Y me temo que muchos lenguajes de programación pueden caber en más de una categoría, por ejemplo, C # es estructurado, imperativo, orientado a objetos, orientado a eventos, funcional.

  • Estructurado porque incluye declaraciones de control de flujo.
  • Imperativo, ya que escribes lo que debe hacer la computadora.
  • Orientado a objetos porque puedes modelar problemas con clases.
  • Controlado por eventos debido a la inclusión de delegados y eventos de multidifusión directamente en la sintaxis del idioma, lo que hace que algunos patrones de diseño queden obsoletos.
  • Funcional porque los delegados son funciones como objetos de primera clase y le permiten escribir programas de manera funcional.

Java, por otra parte, solo comparte estructurado, imperativo y orientado a objetos de esa lista, por lo que es más que un " puro " Lenguaje OO, sin mancha por muchos otros paradigmas.

Nota: Esas categorizaciones se tomaron de las respectivas páginas de Wikipedia.

Cada una de estas clasificaciones es ortogonal entre sí y muchas de las mencionadas en el artículo anterior son. Describen cómo se manejan los diferentes aspectos del lenguaje, la sintaxis o la ejecución.

Otros consejos

Hay una discusión interesante al final de esta CS seminal documento (que precede a OO, por cierto) de Peter Landin , donde podemos ver que la distinción más fundamental que se hace es la de los lenguajes imperativos frente a los declarativos. Aún en el nivel fundamental, las categorías del sistema de tipos permiten una agrupación de idiomas de alto nivel. La extensibilidad de la sintaxis es otro nivel bastante alto y una categorización fundamental.

Creo que una matriz multidimensional es mucho más adecuada para su propósito que una jerarquía, y creo que las 3 dimensiones descritas anteriormente son absolutamente fundamentales.

Ligeramente tangencial, pero O'Reilly hizo un gran póster basado en & # 201; ric L & # 233; v & # 233; el original de nez que rastrea los principales lenguajes de programación a través de su historia.

http://cdn.oreillystatic.com/news/graphics/history-poster20.gif

Estas caracterizaciones (paradigmas) son bien entendidas y aceptadas. Pero no necesariamente definen el lenguaje. C # tiene características tanto imperativas como funcionales, además de estar orientado a objetos, y F # también tiene características imperativas.

Sería difícil vencer a la Lista de lenguajes de programación por categoría . Utiliza cuarenta categorías.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top