Roc – Uma linguagem funcional rápida e amigável
Roc é uma nova linguagem de programação rápida e puramente funcional, fortemente inspirada por Elm e pelas linguagens da família ML, que busca combinar tipagem estática forte e efeitos gerenciados com velocidade e desempenho de compilação no estilo Go. Os comentaristas elogiam seu site inusitadamente polido, o REPL embutido e os objetivos de design claros (velocidade, simpatia, simplicidade), enquanto destacam ideias técnicas como contagem de referências em tempo de compilação (Perceus), um sistema de efeitos chamado “abilities” e um modelo de FFI baseado em plataformas. Alguns permanecem cautelosos devido a problemas passados de governança e comunidade em torno de Elm e à incerteza de adotar uma linguagem jovem com um ecossistema pequeno, mas outros veem Roc como uma candidata promissora para tornar a programação funcional pura mais prática e mainstream.
Recepção geral e site
- Muitos respondentes acham Roc interessante e moderna, com forte entusiasmo de fãs de linguagens funcionais.
- O novo site é amplamente elogiado: claro, elegante, com um REPL embutido, um tutorial curto e guiado, e páginas explicativas detalhadas para “fast”, “friendly” e “functional”.
- Vários gostariam que mais linguagens alcançassem essa qualidade de onboarding.
Objetivos e design da linguagem
- Pontos de venda principais destacados:
- Puramente funcional com avaliação estrita.
- Foco em código compilado muito rápido por meio de otimização agressiva e mutação in-place “oportunista”.
- Contagem de referências estática (estilo Perceus) para evitar GC sem perder a simplicidade da semântica.
- Efeitos gerenciados (“Tasks” / abilities), isolando efeitos colaterais e melhorando a testabilidade.
- Abstração de plataforma e imports declarativos são vistos como interessantes, mas ainda não totalmente compreendidos.
- Roc às vezes pode executar código com certos erros de tipo se esses caminhos não forem executados, o que é visto como útil para refatoração.
Sistema de tipos, macros e ergonomia
- Os tipos são totalmente inferidos; anotações são opcionais, mas suportadas. Alguns argumentam que isso pode prejudicar a localidade dos erros e preferem anotar ao menos os limites das funções.
- Roc busca simplicidade em vez de recursos altamente expressivos como tipos de ordem superior.
- O plano é não suportar macros, em grande parte para manter o tooling do editor mais simples; alguns veem isso como uma limitação importante para metaprogramação.
- As reações à sintaxe são mistas: barra invertida para lambdas e interpolação, significância de espaços em branco e camelCase são desaprovados por alguns.
Ferramentas, FFI e implementação
- O compilador é escrito em Rust; a biblioteca padrão em Zig.
- Existe um language server baseado em LSP; um IDE próprio foi preterido em favor de suporte a múltiplos editores.
- Há FFI para C, mas ele é roteado por meio de “platforms” em vez de bindings arbitrários por pacote.
Comparações com outras linguagens
- Frequentemente comparada a Elm, Haskell, OCaml/ML, Koka, Rust, Go, F#, Gleam e várias Lisps.
- Alguns veem Roc como uma linguagem funcional prática, estrita e mais simples, no estilo Haskell, influenciada por Elm e Koka.
- Céticos questionam se ela oferece o suficiente além dos ecossistemas existentes, especialmente dada a juventude do cenário de bibliotecas.
Preocupações com comunidade e história
- Vários comentários revisitam problemas passados de governança e comunidade em torno de Elm, expressando desconfiança e relutância em investir em outra linguagem jovem de círculos relacionados.
- Outros enfatizam pedidos de desculpas, segundas chances e observam que a comunidade atual de Roc parece acolhedora.
- Alguns acham o drama recorrente em si indesejável e preferem focar nos aspectos técnicos.