Este artículo enumera los lenguajes de programación simultáneos y paralelos , categorizándolos según un paradigma definitorio . Los lenguajes de programación simultáneos y paralelos implican múltiples líneas de tiempo. Dichos lenguajes proporcionan construcciones de sincronización cuyo comportamiento está definido por un modelo de ejecución en paralelo . Un lenguaje de programación concurrentese define como aquel que utiliza el concepto de ejecutar simultáneamente procesos o subprocesos de ejecución como medio para estructurar un programa. Un lenguaje paralelo es capaz de expresar programas que se pueden ejecutar en más de un procesador. Se enumeran ambos tipos, ya que la concurrencia es una herramienta útil para expresar el paralelismo, pero no es necesaria. En ambos casos, las características deben ser parte de la sintaxis del lenguaje y no una extensión como una biblioteca (bibliotecas como la biblioteca posix-thread implementan un modelo de ejecución paralela pero carecen de la sintaxis y gramática requeridas para ser un lenguaje de programación).
Las siguientes categorías tienen como objetivo capturar la característica principal y definitoria de los lenguajes contenidos, pero no son necesariamente ortogonales.
Idiomas de coordinación
Programación de flujo de datos
Computación distribuída
Descripción de hardware y basada en eventos
- Esterel (también sincrónico)
- SystemC
- SystemVerilog
- Verilog
- Verilog-AMS : modelado matemático de sistemas de tiempo continuo
- VHDL
Programación funcional
Programación lógica
Basado en monitor
Multiproceso
Programación orientada a objetos
- Ada
- C*
- C#
- JS
- C ++ AMP
- Encanto ++
- Cind
- Lenguaje de programación D
- Eiffel SCOOP (Programación simple y concurrente orientada a objetos)
- Esmeralda
- Java
- Join Java : un lenguaje basado en Java con características del cálculo de combinaciones .
- Parasail
- Charla
Espacio de direcciones global particionado (PGAS)
- Capilla
- Coarray Fortran
- Fortaleza
- Fortran de alto rendimiento
- Titanio
- Paralelo unificado C
- X10
- ZPL
Paso de mensajes
- Ateji PX : una extensión de Java con primitivas paralelas inspiradas en pi-calculus .
- Óxido [3]
- Smalltalk [4] : p.17 Parte IV, consulte la tabla siguiente a la fig. 11-29
Modelo de actor
- Axum : un lenguaje específico de dominio desarrollado por Microsoft.
- Dardo : uso de aislamientos
- Elixir (se ejecuta en BEAM , la máquina virtual de Erlang)
- Erlang
- Pony (lenguaje de programación)
- Janus
- rojo
- SALSA
- Scala / Akka (kit de herramientas)
- Charla
- Akka.NET
- LabVIEW - Labview Actor Framework
Basado en CSP
- Alef
- Cristal [5]
- Facilidad
- FortranM
- Ir
- JCSP
- JoCaml
- Joyce
- Limbo (también distribuido)
- Newsqueak
- Occam
- Occam-π : un derivado de Occam que integra características del cálculo pi
- PyCSP
- SuperPascal
- XC : un lenguaje basado en C, que integra funciones de Occam , desarrollado por XMOS
API / frameworks
Estas interfaces de programación de aplicaciones admiten el paralelismo en los lenguajes host.
- Apache Hadoop
- Apache Spark
- Apache Flink
- Apache Beam
- CUDA
- OpenCL
- OpenHMPP
- OpenMP para C, C ++ y Fortran (memoria compartida y GPU adjuntas)
- Interfaz de paso de mensajes para C, C ++ y Fortran (computación distribuida)
Ver también
- Computación concurrente
- Lista de lenguajes de programación concurrentes
- Modelo de programación paralela
Referencias
- ^ Thom Frühwirth (9 de julio de 2009). Reglas de manejo de restricciones . Prensa de la Universidad de Cambridge. ISBN 978-0-521-87776-3.
- ^ "Hilos - El lenguaje de programación Rust" . doc.rust-lang.org . Consultado el 15 de septiembre de 2017 .
- ^ "Mensaje que pasa - El lenguaje de programación de Rust" . doc.rust-lang.org . Consultado el 15 de septiembre de 2017 .
- ^ Alan Kay La historia temprana de Smalltalk
- ^ "Lenguaje de programación Crystal - Concurrencia" . Consultado el 10 de agosto de 2018 .