Representadores


Um dos problemas enfrentados pela comunidade do Exercism é como oferecer feedback significativo a muitas pessoas que apresentam muitas soluções para muitos exercícios diferentes. Para ajudar a reduzir o escopo dessa tarefa potencialmente enorme, as soluções são normalizadas em "representações". Por exemplo, das 500 submissões mais recentes ao exercício TwoFer na trilha Ruby, cerca de 380 seriam consideradas únicas (se você normalizar coisas triviais como formatação de código e comentários). Se você normalizá-las ainda mais (normalizando coisas como nomes de funções ou variáveis), esse número fica ainda menor, então pode haver apenas 250 abordagens únicas. Se a comunidade do Exercism conseguir oferecer algum feedback sobre essas 250 abordagens, a esperança é que tenhamos um feedback válido preparado para cerca de 99% de todas as submissões futuras do TwoFer. Com os exercícios de conceito, o espaço de soluções será ainda menor, porque os exercícios de conceito são projetados deliberadamente para serem resolvidos de uma forma específica.

Um Representer é um trecho de código que tem a única responsabilidade de receber uma solução e retornar uma representação normalizada dela.

Uma representação é a extração da essência de uma solução, com nomes, comentários, espaçamento etc. normalizados, mas que ainda identifica de forma única a abordagem adotada. Duas formas diferentes de resolver o mesmo exercício não podem ter a mesma representação.

O Representer mais simples é aquele que apenas retorna o código-fonte da solução. No entanto, como nosso objetivo é ter a mesma representação para soluções que diferem apenas em detalhes não essenciais, o Representer deve aplicar uma ou mais normalizações.

Depois que tivermos uma representação normalizada para uma solução, uma equipe de mentores de confiança vai analisar a solução e comentá-la (se necessário). Esses comentários serão então submetidos automaticamente para cada nova solução com a mesma representação. Uma notificação será enviada para soluções antigas com uma representação correspondente.

Como contribuir com os Representers

Cada linguagem tem o seu próprio representer, escrito nessa linguagem. O site atua como o orquestrador entre o representer e as submissões dos estudantes.

Cada representer fica na organização do Exercism no GitHub, em um repositório chamado <track_slug>-representer (por exemplo, exercism/ruby-representer). Você pode conferir os representers existentes aqui.

Se você quiser se envolver e ajudar com um Representer que já existe, abra uma issue no repositório dele perguntando se há algum lugar em que você possa ajudar. Se você quiser criar um Representer para uma linguagem que ainda não tem um, siga as instruções de criar um Representer.

Você pode usar os documentos a seguir para saber mais sobre como criar um representer: