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 basada en clases: programación orientada a objetos en la que la herencia se logra definiendo clases de objetos, en lugar de los objetos mismos.
- Programación basada en prototipos : programación orientada a objetos que evita las clases e implementa la herencia mediante la clonación de instancias.
- 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
- Carbon (lenguaje de programación) : lenguaje multiparadigma desarrollado por Google para suceder a C++.
- paradigma de programación
- Lista de lenguajes de programación por tipo
- Lenguaje específico del dominio
- Multimodelado específico del dominio
Notas
- ↑ encuentro y basado en monitor
- 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
- 1 2 3 4 5 metaprogramación de plantillas
- 1 2 3 usando TPL Dataflow
- ↑ Solo admite expresiones lambda (programación funcional perezosa)
- ↑ usando TPL Dataflow
- 1 2 3 usando Reactive Extensions (Rx)
- ↑ Despacho múltiple, combinaciones de métodos
- 1 2 3 4 5 programación de actores
- ↑ promesas, extensiones nativas
- ↑ utilizando el módulo cluster de Node.js o el método child_process.fork , web workers en el navegador, etc.
- 1 2 3 4 Basado en prototipos
- ↑ utilizando Reactive Extensions (RxJS)
- ↑ en Node.js a través de sumódulo de eventos
- ↑ en navegadores a través de suAPI nativa EventTarget
- 1 2 3 puramente funcional
- ↑ clases parametrizadas
- ↑ inmutable
- ↑ Utiliza estructuras con polimorfismo de funciones y despacho múltiple.
- ↑ Akka Archivado el 19/01/2013 en Wayback Machine
Citas
- ↑ 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 .
- ↑ Manual de referencia de Ada, ISO/IEC 8652:2005(E) Ed. 3 , Sección 9: Tareas y sincronización
- ↑ Manual de referencia de Ada, ISO/IEC 8652:2005(E) Ed. 3 Anexo E: Sistemas distribuidos
- ↑ Manual de referencia de Ada, ISO/IEC 8652:2005(E) Ed. 3 , Sección 12: Unidades genéricas
- ↑ Manual de referencia de Ada, ISO/IEC 8652:2005(E) Ed. 3 , Sección 6: Subprogramas
- ↑ Manual de referencia de Ada, ISO/IEC 8652:2005(E) Ed. 3 , 3.9 Tipos etiquetados y extensiones de tipo
- ↑ Soporte para subprocesos
- ↑ Soporte atómico
- ↑ Modelo de memoria
- ↑ Gecode
- ↑ SistemaC
- ↑ Boost.Iostreams
- ↑ Boolinq
- ↑ "AraRat" (PDF) . Archivado del original (PDF) el 19 de agosto de 2019. Consultado el 15 de septiembre de 2019 .
- ↑ OpenMPI
- ↑ Boost.MPI
- ↑ Boost.MPL
- ↑ LC++
- ↑ Castor Archivado el 25/01/2013 en Wayback Machine
- ↑ Biblioteca Reflect
- ↑ N3534
- ↑ Impulso.Espíritu
- ↑ Decider
- ↑ Zen
- ↑ LINQ
- ↑ Orleans
- ↑ WCF
- ↑ Reflexión
- ↑ Generadores de código fuente
- ↑ Guan
- ↑ NetPrints
- ↑ Motor de reglas
- ↑ Clojure - Programación concurrente
- ↑ Clojure - core.async
- ↑ Clojure - Programación funcional
- ↑ Clojure - Macros
- ↑ Clojure - core.logic
- ↑ Clojure - Guía de macros de subprocesos
- ↑ Multimétodos y jerarquías
- ↑ Agentes y acciones asíncronas
- ↑ "concurrencia" . CLIki .
- ↑programación con restricciones dentro de CL mediante extensiones
- ↑extensión de flujo de datos
- ↑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.
- ↑MPI, etc., mediante extensiones de lenguaje.
- ↑ Metaprogramación con plantillas mediante macros (ver C++)
- ↑Prolog se implementó como una extensión del lenguaje.
- ↑ Sistema de objetos de Common Lisp. Consulte el artículo de Wikipedia sobre CLOS, el sistema de objetos de Common Lisp.
- ↑ implementado por el usuario mediante una macro corta, ejemplo de implementación
- ↑ - Herramienta de programación visual basada en Common Lisp
- ↑extensión de programación basada en reglas
- ↑Archivado el 26 de abril de 2018 en la Wayback Machine a través del Protocolo de Objetos Meta.
- ↑ Tabla de características del idioma D
- ↑ Algoritmo estándar de Phobos
- ↑ Mixins de cadenas del lenguaje D
- ↑ El pequeño JavaScripter demuestra una similitud fundamental con Scheme, un lenguaje funcional.
- ↑ 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.
- ↑ "React – Una biblioteca de JavaScript para construir interfaces de usuario" . 8 de abril de 2019.
- ↑ "TNG-Hooks" . GitHub . 8 de abril de 2019.
- ↑ "Documentación de Lodash" . 8 de abril de 2019.
- ↑ "mori" . 8 de abril de 2019.
- ↑ "TNG-Hooks" . GitHub . 8 de abril de 2019.
- ↑ "Incrustación de Prolog" . Haskell.org .
- ↑ "Programación reactiva funcional" . HaskellWiki .
- ↑ Cloud Haskell
- ↑ "Plantilla Haskell" . HaskellWiki .
- ↑ "Logict: Una mónada de programación lógica con retroceso" . Haskell.org .
- ↑ 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 .
- ↑ https://jcp.org/en/jsr/detail?id=331 JSR 331: API de programación de restricciones
- ↑ https://github.com/GoogleCloudPlatform/DataflowJavaSDK SDK de Dataflow de Google Cloud Platform
- ↑ "JuliaOpt/JuMP.jl" . GitHub . JuliaOpt. 11 de febrero de 2020. Consultado el 12 de febrero de 2020 .
- ↑ "GitHub - MikeInnes/DataFlow.jl" . GitHub . 2019-01-15.
- ↑ "GitHub - JuliaGizmos/Reactive.jl: Primitivas de programación reactiva para Julia" . GitHub . 28 de diciembre de 2018.
- ↑ https://github.com/davidanthoff/Query.jl Consulta casi cualquier cosa en Julia
- ↑ https://github.com/lilinjn/LilKanren.jl Una colección de implementaciones de Kanren en Julia
- ↑ "GitHub - abeschneider/PEGParser.jl: Analizador PEG para Julia" . GitHub . 3 de diciembre de 2018.
- ↑ "GitHub - gitfoxi/Parsimonious.jl: Un generador de analizadores PEG para Julia" . GitHub . 3 de agosto de 2017.
- ↑ Lazy https://github.com/MikeInnes/Lazy.jl
- ↑ "Ejecutar iteraciones de bucle en paralelo" . mathworks.com . Consultado el 21 de octubre de 2016 .
- ↑ "Restricciones de escritura" . mathworks.com . Consultado el 21 de octubre de 2016 .
- ↑ "Primeros pasos con SimEvents" . mathworks.com . Consultado el 21 de octubre de 2016 .
- ↑ "Ejecutar iteraciones de bucle en paralelo" . mathworks.com . Consultado el 21 de octubre de 2016 .
- ↑ "Ejecutar expresión de MATLAB en texto - MATLAB eval" . mathworks.com . Consultado el 21 de octubre de 2016 .
- ↑ "Determinar la clase de un objeto" . mathworks.com . Consultado el 21 de octubre de 2016 .
- ↑ "Metadatos de clase" . mathworks.com . Consultado el 21 de octubre de 2016 .
- ↑ "Programación orientada a objetos" . mathworks.com . Consultado el 21 de octubre de 2016 .
- ↑ "Simulink" . mathworks.com . Consultado el 21 de octubre de 2016 .
- ↑ Hilos basados en intérprete
- ↑ Perl de orden superior
- ↑ Manual de PHP , Capítulo 17. Funciones
- ↑ Manual de PHP , Capítulo 19. Clases y objetos (PHP 5)
- ↑ Manual de PHP , Funciones anónimas
- ↑ "Procesamiento paralelo y multiprocesamiento en Python" . Python Wiki . Consultado el 21 de octubre de 2016 .
- ↑ "threading — Interfaz de subprocesos de nivel superior" . docs.python.org . Consultado el 21 de octubre de 2016 .
- ↑ "python-constraint" . pypi.python.org . Consultado el 21 de octubre de 2016 .
- ↑ "Programación distribuida" . Wiki de Python . Consultado el 21 de octubre de 2016 .
- ↑ "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 .
- ↑ "Metaprogramación" . readthedocs.io . Consultado el 22 de octubre de 2016 .
- ↑ "PEP 443 – Funciones genéricas de despacho único" . python.org . Consultado el 22 de octubre de 2016 .
- ↑ "PEP 484 – Sugerencias de tipos" . python.org . Consultado el 22 de octubre de 2016 .
- ↑ "PyDatalog" . Consultado el 22 de octubre de 2016 .
- ↑ "Futureverse" .
- ↑ "futuras herramientas por lotes" .
- ↑ "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.
- ↑ Guía de Racket: Concurrencia y sincronización
- ↑ La guía de la roseta
- ↑ FrTime: Un lenguaje para programas reactivos
- ↑ Guía de raquetas: Lugares distribuidos
- ↑ Raqueta perezosa
- ↑ Canales y otros mecanismos
- ↑ "Módulo de resolución de problemas" .
- ↑ Operador de alimentación
- ↑ https://github.com/perl6/doc/issues/1744#issuecomment-360565196 Módulo Cro
- ↑ "Metaprogramación: qué, por qué y cómo" . 14 de diciembre de 2011.
- ↑ https://perl6advent.wordpress.com/2009/12/18/day-18-roles/ Roles parametrizados
- ↑ "Protocolo de meta-objetos (MOP)" .
- ↑ https://docs.perl6.org/language/classtut Clases y roles
- ↑ "La guía de macros de Rust" . Rust . Consultado el 19 de enero de 2015 .
- ↑ "Guía de complementos del compilador de Rust" . Rust . Consultado el 19 de enero de 2015 .
- ↑ Referencia de Rust §6.1.3.1
- ↑ Descripción general del lenguaje de programación Scala
- ↑ Especificación del lenguaje Scala
- ↑ "Programación/Introducción a Tcl" . en.wikibooks.org . Consultado el 22 de octubre de 2016 .
- ↑ "TCLLIB - Biblioteca estándar de Tcl: snitfaq" . sourceforge.net . Consultado el 22 de octubre de 2016 .
- ↑ Notas para expertos en lenguajes de programación , Documentación de lenguajes de Wolfram.
- ↑ Programas externos , Documentación del lenguaje Wolfram.
Referencias
- Jim Coplien, Diseño multiparadigma para C++ , Addison-Wesley Professional, 1998.
Categorías :
- paradigmas de programación
- Comparación de lenguajes de programación