Agenda de defesas Agenda de defesas

Voltar

Ciência da Computação promove defesa de dissertação amanhã (8)

O mestrando Fernando Henrique de Albuquerque Alves foi orientado pelo professor Fernando José Castor de Lima Filho

O Programa de Pós-Graduação em Ciência da Computação da UFPE promove, amanhã (8), às 8h, a defesa da dissertação de mestrado do aluno Fernando Henrique de Albuquerque Alves. O mestrando foi orientado pelo professor Fernando José Castor de Lima Filho. A apresentação ocorrerá de forma on-line e, para receber o link de acesso da sala virtual, basta entrar em contato com o estudante através do seu e-mail fhaa@cin.ufpe.br.

O trabalho tem o título “On the usage of functional programming concepts in JavaScript programs”. A defesa conta com a banca examinadora formada pelos docentes Breno Alexandro Ferreira de Miranda (UFPE/Centro de Informática), Rodrigo Bonifacio de Almeida (UnB/Departamento de Ciência da Computação) e Fernando José Castor de Lima Filho (UFPE/Centro de Informática).

Resumo

Constructos de linguagem de programação inspirados no paradigma funcional chegaram à maioria das linguagens convencionais. Muitos pesquisadores e desenvolvedores consideram que esses constructos levam a programas mais concisos, reutilizáveis e mais fáceis de entender. No entanto, poucos estudos investigam a prevalência dessas estruturas e as implicações de usá-las em linguagens de programação convencionais. Este trabalho quantifica a prevalência de quatro conceitos, normalmente associados à programação funcional, em JavaScript: recursão, imutabilidade, avaliação preguiçosa e funções como valores. Dividimos o último em dois grupos, funções de ordem superior e callbacks & promises. Focamos em programas JavaScript devido à disponibilidade de alguns desses conceitos na linguagem desde seu início, sua inspiração em linguagens de programação funcionais e a popularidade da linguagem. Mineramos 91 repositórios GitHub (mais de 22 milhões de linhas de código (LOC)) escritos principalmente em JavaScript (mais de 50% do código), medindo o uso desses conceitos de perspectivas estáticas e temporais. Também medimos a probabilidade de commits de correção de bugs removendo usos desses conceitos (o que sugeriria propensão a bugs) e sua associação com a presença de comentários de código (o que sugeriria um código difícil de entender). Descobrimos que esses conceitos estão em uso generalizado (478.605 ocorrências, 1 para cada 46.65 linhas de código, 43,59% de LOC). Além disso, o uso de funções de ordem superior, imutabilidade e estruturas relacionadas à avaliação preguiçosa vêm crescendo ao longo dos anos para os projetos analisados, enquanto o uso de recursão e callbacks & promises diminuiu. Também encontramos evidências estatísticas de que a remoção dessas estruturas, com exceção das associadas à imutabilidade, é menos comum em commits de correção de bugs do que em outros commits. Além disso, sua presença não está correlacionada com o tamanho do comentário associado. Nossas descobertas sugerem que os conceitos de programação funcional são importantes para desenvolvedores que usam uma linguagem multiparadigma, como JavaScript, e seu uso não torna os programas mais difíceis de entender.

Data da última modificação: 07/07/2022, 14:54