Pony (linguagem de programação)
Pontos principais
- Pony foi criada por Sylvan Clebsch no Imperial College London.
- A linguagem utiliza o modelo de atores e um sistema de capacidades de referência para garantir segurança em concorrência.
- A coleta de lixo ocorre de forma isolada por ator, evitando pausas globais no programa.
Pony (frequentemente referida como ponylang) é uma linguagem de programação orientada a objetos, baseada no modelo de atores, segura quanto a capacidades e projetada para oferecer alto desempenho. Desenvolvida originalmente por Sylvan Clebsch durante seus estudos de doutorado no Imperial College London, a linguagem destaca-se pelo uso de capacidades de referência que permitem o compartilhamento seguro de dados mutáveis entre atores sem a necessidade de bloqueios tradicionais.
História e Desenvolvimento
A linguagem foi criada por Sylvan Clebsch enquanto ele atuava como estudante de doutorado no Imperial College London, tendo Sophia Drossopoulou como sua orientadora. A motivação inicial surgiu da busca por uma linguagem de alto desempenho capaz de executar código concorrente de maneira segura, robusta e simplificada. Atualmente, o projeto é mantido e desenvolvido por membros da comunidade de colaboradores da linguagem sob uma licença livre e de código aberto BSD de 2 cláusulas.
Design da Linguagem
Como uma linguagem voltada para sistemas, o design de Pony prioriza rigidez na segurança e otimização de desempenho sem recorrer a artifícios tradicionais de máquinas virtuais.
Segurança
- Segurança de tipos: Pony é uma linguagem fortemente tipada.
- Segurança de memória: O compilador previne problemas como ponteiros pendurados e estalos de buffer. Não existem ponteiros nulos tradicionais, sendo os tipos opcionais representados por meio de uniões com o tipo
None. - Segurança de exceções: A linguagem não emprega exceções em tempo de execução sem semântica definida; todas as situações excepcionais possuem comportamento previsível e tratado.
- Segurança de concorrência: O sistema de tipos utiliza capacidades de referência para assegurar, ainda em tempo de compilação, a ausência de corridas de dados (data races) e impasses (deadlocks).
Desempenho
- Sem travas (Lock-free): O modelo evita o uso de mecanismos tradicionais de bloqueio, eliminando a contenção associada a threads e mutexes.
- Código nativo: Pony é compilada diretamente de forma antecipada (ahead-of-time), sem fazer uso de interpretadores ou máquinas virtuais.
- Coleta de lixo concorrente: A gestão de memória ocorre de maneira concorrente e separada para o heap de cada ator, eliminando paradas globais de execução conhecidas como "stop the world".
Exemplos
Em Pony, a execução de programas não se apoia em uma função principal tradicional, mas sim na criação de um ator principal (main actor). Como o ambiente não utiliza variáveis globais, dependências como o acesso à saída padrão são repassadas por parâmetros estruturados.
Perguntas frequentes
O que é a linguagem Pony?
Pony é uma linguagem de programação orientada a objetos, baseada no modelo de atores, focada em concorrência segura e alto desempenho.
Quem criou a linguagem Pony?
A linguagem foi criada por Sylvan Clebsch como parte de seus estudos de doutorado no Imperial College London.
Como Pony lida com a coleta de lixo?
A coleta de lixo em Pony é executada de forma concorrente e separada para o heap de cada ator, eliminando a necessidade de pausas globais de execução.