Computação e Tecnologia

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.