Pony (también conocido como ponylang ) es un lenguaje de programación de alto rendimiento, orientado a objetos , con modelo de actores y capacidades seguras . [ 6 ] [ 7 ] Las capacidades de referencia de Pony permiten que incluso los datos mutables se pasen de forma segura por referencia entre actores. La recolección de basura se realiza concurrentemente , por actor, lo que elimina la necesidad de pausar la ejecución del programa o "detener el mundo" . [ 8 ] [ 9 ] [ 10 ] Sylvan Clebsch es el creador original del lenguaje. [ 11 ] [ 12 ] Actualmente es mantenido y desarrollado por miembros del equipo Pony. [ 13 ] Es software libre y de código abierto con una licencia BSD de 2 cláusulas .
Historia
El lenguaje fue creado por Sylvan Clebsch mientras cursaba su doctorado en el Imperial College de Londres . Su profesora en aquel entonces era Sophia Drossopoulou , también reconocida por sus contribuciones a la programación informática y por su labor docente. Según desarrolladores que han hablado con Sylvan, este se sentía frustrado por no contar con un lenguaje de alto rendimiento que pudiera ejecutar código concurrente de forma segura, confiable y sencilla. [ 14 ]
Diseño de lenguaje
En esencia, Pony es un lenguaje de sistemas diseñado en torno a la seguridad y el rendimiento.
Seguridad
- Seguridad de tipos : Pony es un lenguaje con seguridad de tipos. [ 15 ]
- Seguridad de memoria : No hay punteros colgantes ni desbordamientos de búfer. No hay valores nulos, pero los tipos opcionales se pueden representar de forma segura mediante uniones con el tipo None. [ 6 ] [ 16 ]
- Seguridad ante excepciones : no hay excepciones en tiempo de ejecución. Todas las excepciones tienen una semántica definida y siempre se capturan. [ 17 ]
- Seguridad de concurrencia: el sistema de tipos emplea capacidades de referencia para garantizar (en tiempo de compilación) que no haya condiciones de carrera ni interbloqueos . [ 18 ] [ 19 ] [ 20 ] [ 21 ]
Actuación
- Sin cerradura: por diseño, Pony evita la necesidad de mecanismos de cierre tradicionales, lo que elimina los gastos generales y la contienda asociados con las cerraduras. [ 14 ]
- Código nativo: Pony es un lenguaje compilado anticipadamente . No hay intérprete ni máquina virtual [ 18 ] [ 16 ].
- Recolección de basura concurrente: el montón de cada actor se recolecta por separado y concurrentemente, evitando la necesidad de "detener el mundo" para la recolección global. [ 11 ] [ 12 ] [ 21 ]
Ejemplos
Hola Mundo
En Pony, en lugar de una función principal, existe un actor principal . La creación de este actor sirve como punto de entrada a un programa Pony, como en este programa "¡Hola, mundo!" . [ 6 ] [ 17 ]
actor Main nuevo crear ( env : Env ) => env . out . print ( "Hola, mundo!" )En Pony no existen variables globales, lo que significa que todo debe estar contenido dentro de una instancia de una clase o un actor. [ 14 ] Por lo tanto, incluso el entorno que permite imprimir en la salida estándar se pasa como parámetro. [ 14 ] [ 6 ]
Referencias
- ^ "Sylvan Clebsch" . ACM .
- ^ "Primera versión pública" . GitHub . 28 de abril de 2015.
- ^ "Ponyc/LICENSE en main: ponylang/Ponyc" . GitHub .
- ^ Daniele BonettaLuca; Suiza italiana; Stefan Marr; Walter Binder (2 de noviembre de 2016). "GEMS: Programación paralela de memoria compartida para Node.js" . oracle . Consultado el 10 de marzo de 2025.
Pony se inspira en el diseño del modelo de programación de E.
- ^ Liam Tung. "Microsoft abre el lenguaje de programación Project Verona, inspirado en Rust, en GitHub" . ZDNet .
Project Verona, que también toma prestados conceptos de Cyclone, un "dialecto seguro de C", y Pony, que cuenta con importantes colaboradores de Microsoft Research.
- ^ a b c d Allen 2024 .
- ^ "Introducción al modelo actor" . adabeat . 8 de agosto de 2024. Consultado el 8 de marzo de 2025 .
- ^ Sylvan Clebsch; Juliana Franco; Sophia Drossopoulou (12 de octubre de 2017). "Recolección de basura basada en la propiedad y el conteo de referencias en el mundo de los actores" . Proc. ACM Program. Lang . 1 (OOPSLA): 72:1–72:28. doi : 10.1145/3133896 . Recuperado el 24 de diciembre de 2024 .
- ^ "Introducción al lenguaje de programación Pony" . LinkedIn . Society 5 Solutions. 15 de octubre de 2024. Consultado el 28 de diciembre de 2024 .
- ^ Daniel Caccamo (2018). "GoA: Actores con memoria gestionada localmente para Go" . UWSpace . Recuperado el 28 de diciembre de 2024 .
- ^ a b Charles Humble (14 de marzo de 2016). "Uso del modelo de actor Pony para FinTec" . InfoQ . Recuperado el 24 de diciembre de 2024 .
- ^ a b Sophia Drossopoulou (14 de septiembre de 2020). "Pony, actores, causalidad, tipos y recolección de basura" . InfoQ . Recuperado el 24 de diciembre de 2024 .
- ^ "Team Pony" . GitHub . Consultado el 28 de diciembre de 2024 .
- ^ a b c d Kristoffer Grönlund (22 de enero de 2018). ¡Todos reciben un poni! . archivo . Linux Conference Australia 2018 (LCA2018) . Recuperado el 28 de diciembre de 2024 .
- ^ John Mumm (19 de marzo de 2019). "Compartir datos de forma segura: capacidades de referencia en Pony" . codemotion . Consultado el 28 de diciembre de 2024 .
- ^ a b Ankush Thakur (21 de diciembre de 2024). 12 nuevos lenguajes de programación que deberías conocer . geekflare . Consultado el 3 de enero de 2025 .
- ^ a b MCStone 2023 .
- ^ a b Mölle 2017 .
- ^ Sean T Allen (30 de mayo de 2018). "Introducción al lenguaje de programación Pony" . opensource . Consultado el 28 de diciembre de 2024 .
- ^ Sylvan Clebsch; Sophia Drossopoulou; Sebastian Blessing (octubre de 2015). «Denegar capacidades para actores seguros y rápidos». En Elisa Gonzalez Boix, Philipp Haller, Alessandro Ricci, Carlos Varela (eds.). AGERE! 2015: Actas del 5.º Taller Internacional sobre Programación Basada en Actores, Agentes y Control Descentralizado . Pittsburgh, PA, EE. UU.: Association for Computing Machinery. págs. 1-12 . doi : 10.1145/2824815.2824816 . ISBN 9781450339018.
{{cite conference}}: CS1 mantenimiento: varios nombres: lista de editores ( enlace ) - ^ Juliana Franco ; Sylvain Clebsch; Sofía Drossopoulou; Jan Vitek; Tobias Wrigstad (9 de marzo de 2018). "Solidez de un coleccionista concurrente para actores" (PDF) . imperial . Consultado el 8 de marzo de 2025 .
Lecturas adicionales
- Mölle, Andreas (dic. 2017). "Desarrollo de programas concurrentes con Pony". Linux Magazine (205). ISSN 1536-4674 .
- MCStone, Maverick (dic. 2023). Pony Playbook: Dominando los fundamentos de la programación concurrente . Publicado de forma independiente. ISBN 979-8870768175.
- Allen, Corby (julio de 2024). Programación Pony: La guía completa para crear aplicaciones de alto rendimiento, concurrentes y seguras con Pony . Publicado de forma independiente. ISBN 979-8332662072.
Enlaces externos
- Sitio web oficial
- Tutorial de Ponylang
- Pony: Facilitando la escritura de programas eficientes, concurrentes y sin condiciones de carrera en Curry On 2015 , en colaboración con ECOOP 2015.
- Lenguajes de programación
- Lenguajes de programación concurrentes
- Lenguajes de programación multiparadigma
- Software que utiliza la licencia BSD.
- Software multiplataforma
- Software libre multiplataforma
- Compiladores libres y de código abierto
