Articulo de referencia

Comparación de lenguajes de programación multiparadigma

Los lenguajes de programación se pueden agrupar según el número y el tipo de paradigmas que admiten. Resúmenes de paradigmas Una referencia concisa de los paradigmas de programa...

Los lenguajes de programación se pueden agrupar según el número y el tipo de paradigmas que admiten.

Resúmenes de paradigmas

Una referencia concisa de los paradigmas de programación enumerados en este artículo.

  • Programación concurrente : poseer construcciones de lenguaje para la concurrencia, que pueden incluir multihilo, soporte para computación distribuida, paso de mensajes, recursos compartidos (incluida la memoria compartida) o futuros.
    • Programación basada en actores : computación concurrente con actores que toman decisiones locales en respuesta al entorno (capaces de comportamiento egoísta o competitivo).
  • Programación con restricciones : las relaciones entre variables se expresan como restricciones (o redes de restricciones), que dirigen las soluciones permitidas (utiliza la satisfacción de restricciones o el algoritmo simplex ).
  • Programación de flujo de datos : recálculo forzado de fórmulas cuando cambian los valores de los datos (por ejemplo, hojas de cálculo ).
  • La programación declarativa describe qué cálculos debe realizar, sin especificar cambios de estado detallados (a diferencia de la programación imperativa; la programación funcional y la lógica son subgrupos importantes de la programación declarativa).
  • Programación distribuida : admite múltiples computadoras autónomas que se comunican a través de redes informáticas.
  • Programación funcional : utiliza la evaluación de funciones matemáticas y evita el estado y los datos mutables.
  • Programación genérica : utiliza algoritmos escritos en términos de tipos que se especificarán posteriormente y que luego se instancian según sea necesario para tipos específicos proporcionados como parámetros.
  • Programación imperativa : instrucciones explícitas que cambian el estado de un programa.
  • Programación lógica : utiliza lógica matemática explícita para la programación.
  • Metaprogramación : escribir programas que escriben o manipulan otros programas (o a sí mismos) como sus datos, o que realizan parte del trabajo en tiempo de compilación que de otro modo se haría en tiempo de ejecución.
    • Metaprogramación con plantillas : métodos de metaprogramación en los que un compilador utiliza plantillas para generar código fuente temporal, que el compilador fusiona con el resto del código fuente y luego compila.
    • Programación reflexiva : métodos de metaprogramación en los que un programa se modifica o se extiende a sí mismo.
  • La programación orientada a objetos utiliza estructuras de datos que constan de campos de datos y métodos junto con sus interacciones (objetos) para diseñar programas.
  • Programación en pipeline : un simple cambio de sintaxis para agregar sintaxis a llamadas a funciones anidadas en un lenguaje diseñado originalmente sin ninguna.
  • Programación basada en reglas : una red de reglas prácticas que conforman una base de conocimientos y que pueden utilizarse para sistemas expertos y para la deducción y resolución de problemas.
  • Programación visual : manipulación de elementos del programa gráficamente en lugar de especificarlos textualmente (por ejemplo, Simulink ); también denominada programación diagramática [ 1 ].

Descripción general del idioma

Véase también

Notas

  1. encuentro y basado en monitor
  2. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 basado en clases
  3. 1 2 3 4 5 metaprogramación de plantillas
  4. 1 2 3 usando TPL Dataflow
  5. Solo admite expresiones lambda (programación funcional perezosa)
  6. usando TPL Dataflow
  7. 1 2 3 usando Reactive Extensions (Rx)
  8. Despacho múltiple, combinaciones de métodos
  9. 1 2 3 4 5 programación de actores
  10. promesas, extensiones nativas
  11. utilizando el módulo cluster de Node.js o el método child_process.fork , web workers en el navegador, etc.
  12. 1 2 3 4 Basado en prototipos
  13. utilizando Reactive Extensions (RxJS)
  14. en Node.js a través de sumódulo de eventos
  15. en navegadores a través de suAPI nativa EventTarget
  16. 1 2 3 puramente funcional
  17. clases parametrizadas
  18. inmutable
  19. Utiliza estructuras con polimorfismo de funciones y despacho múltiple.
  20. Akka Archivado el 19/01/2013 en Wayback Machine

Citas

  1. Bragg, SD; Driskill, CG (20–22 de septiembre de 1994). "Lenguajes de programación diagramático-gráficos y DoD-STD-2167A". Actas de AUTOTESTCON '94 (Facebook . Instituto de Ingenieros Eléctricos y Electrónicos (IEEE). pp. 211–220 . doi : 10.1109/AUTEST.1994.381508 . ISBN  978-0-7803-1910-3. S2CID 62509261 . 
  2. Manual de referencia de Ada, ISO/IEC 8652:2005(E) Ed. 3 , Sección 9: Tareas y sincronización
  3. Manual de referencia de Ada, ISO/IEC 8652:2005(E) Ed. 3 Anexo E: Sistemas distribuidos
  4. Manual de referencia de Ada, ISO/IEC 8652:2005(E) Ed. 3 , Sección 12: Unidades genéricas
  5. Manual de referencia de Ada, ISO/IEC 8652:2005(E) Ed. 3 , Sección 6: Subprogramas
  6. Manual de referencia de Ada, ISO/IEC 8652:2005(E) Ed. 3 , 3.9 Tipos etiquetados y extensiones de tipo
  7. Soporte para subprocesos
  8. Soporte atómico
  9. Modelo de memoria
  10. Gecode
  11. SistemaC
  12. Boost.Iostreams
  13. Boolinq
  14. "AraRat" (PDF) . Archivado del original (PDF) el 19 de agosto de 2019. Consultado el 15 de septiembre de 2019 .
  15. OpenMPI
  16. Boost.MPI
  17. Boost.MPL
  18. LC++
  19. Castor Archivado el 25/01/2013 en Wayback Machine
  20. Biblioteca Reflect
  21. N3534
  22. Impulso.Espíritu
  23. Decider
  24. Zen
  25. LINQ
  26. Orleans
  27. WCF
  28. Reflexión
  29. Generadores de código fuente
  30. Guan
  31. NetPrints
  32. Motor de reglas
  33. Clojure - Programación concurrente
  34. Clojure - core.async
  35. Clojure - Programación funcional
  36. Clojure - Macros
  37. Clojure - core.logic
  38. Clojure - Guía de macros de subprocesos
  39. Multimétodos y jerarquías
  40. Agentes y acciones asíncronas
  41. "concurrencia" . CLIki .
  42. programación con restricciones dentro de CL mediante extensiones
  43. extensión de flujo de datos
  44. mediante la creación de DSL utilizando la metaprogramación integrada; véase también la nota sobre los paradigmas funcionales, de restricciones y lógicos, que forman parte de la programación declarativa.
  45. MPI, etc., mediante extensiones de lenguaje.
  46. Metaprogramación con plantillas mediante macros (ver C++)
  47. Prolog se implementó como una extensión del lenguaje.
  48. Sistema de objetos de Common Lisp. Consulte el artículo de Wikipedia sobre CLOS, el sistema de objetos de Common Lisp.
  49. implementado por el usuario mediante una macro corta, ejemplo de implementación
  50. - Herramienta de programación visual basada en Common Lisp
  51. extensión de programación basada en reglas
  52. Archivado el 26 de abril de 2018 en la Wayback Machine a través del Protocolo de Objetos Meta.
  53. Tabla de características del idioma D
  54. Algoritmo estándar de Phobos
  55. Mixins de cadenas del lenguaje D
  56. El pequeño JavaScripter demuestra una similitud fundamental con Scheme, un lenguaje funcional.
  57. El artículo "Programación orientada a objetos en JavaScript", archivado el 10 de febrero de 2019 en Wayback Machine, ofrece una visión general de las técnicas de programación orientada a objetos en JavaScript.
  58. "React – Una biblioteca de JavaScript para construir interfaces de usuario" . 8 de abril de 2019.
  59. "TNG-Hooks" . GitHub . 8 de abril de 2019.
  60. "Documentación de Lodash" . 8 de abril de 2019.
  61. "mori" . 8 de abril de 2019.
  62. "TNG-Hooks" . GitHub . 8 de abril de 2019.
  63. "Incrustación de Prolog" . Haskell.org .
  64. "Programación reactiva funcional" . HaskellWiki .
  65. Cloud Haskell
  66. "Plantilla Haskell" . HaskellWiki .
  67. "Logict: Una mónada de programación lógica con retroceso" . Haskell.org .
  68. Kollmansberger, Steve; Erwig, Martin (30 de mayo de 2006). "Reglas de Haskell: Integración de sistemas de reglas en Haskell" (PDF) . Universidad Estatal de Oregón .
  69. https://jcp.org/en/jsr/detail?id=331 JSR 331: API de programación de restricciones
  70. https://github.com/GoogleCloudPlatform/DataflowJavaSDK SDK de Dataflow de Google Cloud Platform
  71. "JuliaOpt/JuMP.jl" . GitHub . JuliaOpt. 11 de febrero de 2020. Consultado el 12 de febrero de 2020 .
  72. "GitHub - MikeInnes/DataFlow.jl" . GitHub . 2019-01-15.
  73. "GitHub - JuliaGizmos/Reactive.jl: Primitivas de programación reactiva para Julia" . GitHub . 28 de diciembre de 2018.
  74. https://github.com/davidanthoff/Query.jl Consulta casi cualquier cosa en Julia
  75. https://github.com/lilinjn/LilKanren.jl Una colección de implementaciones de Kanren en Julia
  76. "GitHub - abeschneider/PEGParser.jl: Analizador PEG para Julia" . GitHub . 3 de diciembre de 2018.
  77. "GitHub - gitfoxi/Parsimonious.jl: Un generador de analizadores PEG para Julia" . GitHub . 3 de agosto de 2017.
  78. Lazy https://github.com/MikeInnes/Lazy.jl
  79. "Ejecutar iteraciones de bucle en paralelo" . mathworks.com . Consultado el 21 de octubre de 2016 .
  80. "Restricciones de escritura" . mathworks.com . Consultado el 21 de octubre de 2016 .
  81. "Primeros pasos con SimEvents" . mathworks.com . Consultado el 21 de octubre de 2016 .
  82. "Ejecutar iteraciones de bucle en paralelo" . mathworks.com . Consultado el 21 de octubre de 2016 .
  83. "Ejecutar expresión de MATLAB en texto - MATLAB eval" . mathworks.com . Consultado el 21 de octubre de 2016 .
  84. "Determinar la clase de un objeto" . mathworks.com . Consultado el 21 de octubre de 2016 .
  85. "Metadatos de clase" . mathworks.com . Consultado el 21 de octubre de 2016 .
  86. "Programación orientada a objetos" . mathworks.com . Consultado el 21 de octubre de 2016 .
  87. "Simulink" . mathworks.com . Consultado el 21 de octubre de 2016 .
  88. Hilos basados ​​en intérprete
  89. Perl de orden superior
  90. Manual de PHP , Capítulo 17. Funciones
  91. Manual de PHP , Capítulo 19. Clases y objetos (PHP 5)
  92. Manual de PHP , Funciones anónimas
  93. "Procesamiento paralelo y multiprocesamiento en Python" . Python Wiki . Consultado el 21 de octubre de 2016 .
  94. "threading — Interfaz de subprocesos de nivel superior" . docs.python.org . Consultado el 21 de octubre de 2016 .
  95. "python-constraint" . pypi.python.org . Consultado el 21 de octubre de 2016 .
  96. "Programación distribuida" . Wiki de Python . Consultado el 21 de octubre de 2016 .
  97. "Capítulo 9. Metaprogramación" . chimera.labs.oreilly.com . Archivado del original el 23 de octubre de 2016. Consultado el 22 de octubre de 2016 .
  98. "Metaprogramación" . readthedocs.io . Consultado el 22 de octubre de 2016 .
  99. "PEP 443 – Funciones genéricas de despacho único" . python.org . Consultado el 22 de octubre de 2016 .
  100. "PEP 484 – Sugerencias de tipos" . python.org . Consultado el 22 de octubre de 2016 .
  101. "PyDatalog" . Consultado el 22 de octubre de 2016 .
  102. "Futureverse" .
  103. "futuras herramientas por lotes" .
  104. "Magrittr: Un operador de tubería hacia adelante para R" . cran.r-project.org\access-date=13 de julio de 2017. 17 de noviembre de 2020.
  105. Guía de Racket: Concurrencia y sincronización
  106. La guía de la roseta
  107. FrTime: Un lenguaje para programas reactivos
  108. Guía de raquetas: Lugares distribuidos
  109. Raqueta perezosa
  110. Canales y otros mecanismos
  111. "Módulo de resolución de problemas" .
  112. Operador de alimentación
  113. https://github.com/perl6/doc/issues/1744#issuecomment-360565196 Módulo Cro
  114. "Metaprogramación: qué, por qué y cómo" . 14 de diciembre de 2011.
  115. https://perl6advent.wordpress.com/2009/12/18/day-18-roles/ Roles parametrizados
  116. "Protocolo de meta-objetos (MOP)" .
  117. https://docs.perl6.org/language/classtut Clases y roles
  118. "La guía de macros de Rust" . Rust . Consultado el 19 de enero de 2015 .
  119. "Guía de complementos del compilador de Rust" . Rust . Consultado el 19 de enero de 2015 .
  120. Referencia de Rust §6.1.3.1
  121. Descripción general del lenguaje de programación Scala
  122. Especificación del lenguaje Scala
  123. "Programación/Introducción a Tcl" . en.wikibooks.org . Consultado el 22 de octubre de 2016 .
  124. "TCLLIB - Biblioteca estándar de Tcl: snitfaq" . sourceforge.net . Consultado el 22 de octubre de 2016 .
  125. Notas para expertos en lenguajes de programación , Documentación de lenguajes de Wolfram.
  126. Programas externos , Documentación del lenguaje Wolfram.

Referencias

  • Jim Coplien, Diseño multiparadigma para C++ , Addison-Wesley Professional, 1998.