Pós-Graduação em Ciência da Computação – UFPE
Defesa de Dissertação de Mestrado Nº 2.028

Aluno: Fernando Henrique de Albuquerque Alves
Orientador: Prof. Fernando José Castor de Lima Filho
Co-orientador: Profa. Fernanda Madeiral Delfim (KTH Royal Institute of Technology)
Título: On the usage of functional programming concepts in JavaScript 
programs
Data: 08/07/2022
Hora/Local:  8h – Virtual – Interessados em assistir entrar em contato com o aluno
Banca Examinadora:
Prof. Breno Alexandro Ferreira de Miranda (UFPE / Centro de Informática)
Prof. Rodrigo Bonifacio de Almeida (UnB / Departamento de Ciência da Computação)
Prof. 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.

Palavras-chave: Programação Funcional. JavaScript. Mineração de Dados.

Comentários desativados