programar (hackNY / Flickr)
Da Redação
Publicado em 5 de fevereiro de 2015 às 17h32.
Com tempo e prática, programadores tendem a desenvolver suas próprias manias e particularidades. Mas o jeito como eles programam é ainda mais único do que pode parecer. Segundo uma pesquisa elaborada por especialistas das Universidades Drexel, de Maryland, de Goettingen e Princeton, a forma com que códigos são escritos é praticamente uma impressão digital que pode inclusive ser usada para identificar quem é o responsável pelo arquivo.
Os pesquisadores por trás do estudo conseguiram criar uma espécie de estilômetro de programação, nas palavras do site IT World. Em testes, o sistema foi capaz de determinar, com grau de precisão de 95%, os autores de diferentes códigos-fonte, aprendendo com base nos padrões usados por programadores e apelando até para processamento de linguagem natural.
A avaliação foi feita com base em dados públicos das edições de 2008 a 2014 do Code Jam, uma competição de programação organizada anualmente pelo Google. Foram analisados arquivos de código em C++ produzidos por mais de 100 mil participantes, que precisaram desenvolver soluções para diferentes problemas apresentados durante os eventos.
Os especialistas primeiro estudaram amostras referentes a um problema. Então, com base no que aprenderam nessa análise de big data, partiram para identificar partes de código relacionadas a outras soluções. O sistema obteve a impressionante taxa de sucesso de 92% quando precisou classificar mais de 170 autores mesmo com apenas cinco arquivos por pessoa, de acordo com o estudo e foi ainda melhor, batendo os 95%, quando mais documentos do tipo (oito), referentes a mais autores (250), foram analisados.
Para chegar a esse grau de exatidão, o estilômetro analisa pontos óbvios, como o formato do código e os elementos preferidos pelos programadores. Mas não só eles. Os pesquisadores também apelam para um conceito novo que desenvolveram: as árvores abstratas de sintaxe, ou abstract syntax trees no termo original. Elas identificam as construções de linguagem mais usadas por diferentes autores, como o costume de usar funções incomumente longas ou sequências compridas de atribuições, entre outras particularidades.
A metodologia, no entanto, não é perfeita, e não só pelos 5% faltantes na taxa de sucesso. Segundo a pesquisa, o sistema ainda se confunde com linhas extras adicionadas a um código-fonte o que até pode ser considerado trivial, visto que não é difícil detectá-las manualmente. Mas, além disso, o método também não é capaz de identificar farsas como um caso em que o arquivo foi escrito por um autor diferente do informado.
Mesmo assim, o avanço não deixa de ter sua utilidade. O próprio estudo afirma que uma ferramenta que encontra os autores dos códigos-fonte pode ser útil na hora de encontrar o criador de um malware, por exemplo. Ela também pode ter sua utilidade na investigação de um caso de plágio, entre outras possibilidades mas, por ora, apenas envolvendo C++. Se tiver interesse, o estudo completo (em inglês e PDF) está disponível aqui.