Um representador é um programa que recebe a solução de um estudante e devolve uma representação normalizada dessa solução. Usamos depois estas representações para agilizar o feedback automático e a classificação.
Um exemplo ajuda a explicar melhor os representadores. Imaginemos que dois estudantes submetem duas soluções ao exercício hello-world em Ruby:
# Student 1's submission
def self.hello(name = 'World')
"Hello, #{name}!"
end
# Student 2's submission
def self.hello(nom = 'World')
"Hello, #{nom}!"
end
Embora o código destas soluções seja diferente (indentação, nomes de variáveis e sintaxe de strings diferentes), são essencialmente iguais. Assim, ao criar uma representação normalizada de ambas, podemos tratá-las como iguais para efeitos de feedback. Isto reduz drasticamente a quantidade de mentoria duplicada que é necessária.
Cada percurso mantém o seu próprio representador, específico para essa linguagem. Não existe uma saída normalizada; só exigimos que um percurso seja internamente consistente.
Se estiveres interessado em construir um representador, consulta a documentação sobre representadores para mais informações.