Pony (también conocido como ponylang) es un lenguaje de programación orientado a objetos que implementa el modelo de actores, es seguro en cuanto a capacidades y ofrece un alto rendimiento. Una de las características más destacadas de Pony es que sus capacidades de referencia permiten que incluso los datos mutables sean pasados por referencia entre actores de manera segura.

Historia y Origen
El lenguaje fue creado por Sylvan Clebsch mientras era estudiante de doctorado en el Imperial College de Londres. Bajo la tutela de la profesora Sophia Drossopoulou, Clebsch desarrolló Pony impulsado por la frustración de no encontrar un lenguaje de alto rendimiento que pudiera ejecutar código concurrente de forma segura, sencilla y sin riesgos de seguridad.
Diseño del Lenguaje
En su núcleo, Pony es un lenguaje de sistemas diseñado específicamente para priorizar la seguridad y el rendimiento.
Seguridad
- Seguridad de Tipos: Pony es un lenguaje estrictamente seguro en tipos.
- Seguridad de Memoria: No existen punteros colgantes ni desbordamientos de búfer. El lenguaje no utiliza el valor null; en su lugar, los tipos opcionales se representan mediante uniones con el tipo None.
- Seguridad de Excepciones: No hay excepciones en tiempo de ejecución. Todas las excepciones tienen semánticas definidas y siempre son capturadas.
- Seguridad de Concurrencia: El sistema de tipos emplea capacidades de referencia para garantizar, en tiempo de compilación, que no existan carreras de datos (data races) ni bloqueos mutuos (deadlocks).
Rendimiento
- Sin Bloqueos (Lock-free): Por diseño, Pony evita la necesidad de mecanismos de bloqueo tradicionales, eliminando así la sobrecarga y la contención asociada a los cerrojos.
- Código Nativo: Pony es un lenguaje compilado anticipadamente (ahead-of-time), lo que significa que no requiere de un intérprete ni de una máquina virtual.
- Recolección de Basura Concurrente: El montón (heap) de cada actor se recolecta de forma separada y concurrente, evitando la necesidad de detener la ejecución global del programa (el fenómeno conocido como stop the world).
Ejemplos y Estructura
A diferencia de otros lenguajes, en Pony no existe una función main tradicional, sino un actor principal. La creación de este actor sirve como punto de entrada al programa. Además, Pony no permite variables globales, lo que obliga a que todo esté contenido dentro de una instancia de una clase o un actor, pasando incluso el entorno de salida estándar como un parámetro.
