Skip navigation
Use este identificador para citar ou linkar para este item: https://repositorio.ufpe.br/handle/123456789/46446

Compartilhe esta página

Registro completo de metadados
Campo DCValorIdioma
dc.contributor.advisorLIMA FILHO, Fernando José Castor de-
dc.contributor.authorALVES, Fernando Henrique de Albuquerque-
dc.date.accessioned2022-09-15T15:57:17Z-
dc.date.available2022-09-15T15:57:17Z-
dc.date.issued2022-07-08-
dc.identifier.citationALVES, Fernando Henrique de Albuquerque. On the usage of functional programming concepts in JavaScript programs. 2022. Dissertação (Mestrado em Ciência da Computação) - Universidade Federal de Pernambuco, Recife, 2022.pt_BR
dc.identifier.urihttps://repositorio.ufpe.br/handle/123456789/46446-
dc.description.abstractLanguage constructs inspired by functional programming have made their way into most mainstream programming languages. Many researchers and developers consider that these constructs lead to programs that are more concise, reusable, and easier to under- stand. Notwithstanding, few studies investigate the prevalence of these structures and the implications of using them in mainstream programming languages. This paper quanti- fies the prevalence of four concepts typically associated with functional programming in JavaScript: recursion, immutability, lazy evaluation, and functions as values. We divide the latter into two groups, higher-order functions and callbacks & promises. We focus on JavaScript programs due to the availability of some of these concepts in the language since its inception, its inspiration from functional programming languages, and its pop- ularity. We mine 91 GitHub repositories (more than 22 million LOC) written mostly in JavaScript (over 50% of the code), measuring the usage of these concepts from both static and temporal perspectives. We also measure the likelihood of bug-fixing commits remov- ing uses of these concepts (which would hint at bug-proneness) and their association with the presence of code comments (which would hint at code that is hard to understand). We find that these concepts are in widespread use (478,605 occurrences, 1 for every 46.65 lines of code, 43.59% of LOC). In addition, the usage of higher-order functions, immutabil- ity, and lazy evaluation-related structures has been growing throughout the years for the analyzed projects, while the usage of recursion and callbacks & promises has decreased. We also find statistical evidence that removing these structures, with the exception of the ones associated to immutability, is less common in bug-fixing commits than in other commits. In addition, their presence is not correlated with comment size. Our findings suggest that functional programming concepts are important for developers using a multi- paradigm language such as JavaScript, and their usage does not make programs harder to understand.pt_BR
dc.language.isoengpt_BR
dc.publisherUniversidade Federal de Pernambucopt_BR
dc.rightsopenAccesspt_BR
dc.rights.urihttp://creativecommons.org/licenses/by-nc-nd/3.0/br/*
dc.subjectEngenharia de softwarept_BR
dc.subjectProgramação funcionalpt_BR
dc.subjectJavascriptpt_BR
dc.titleOn the usage of functional programming concepts in JavaScript programspt_BR
dc.typemasterThesispt_BR
dc.contributor.advisor-coDELFIM, Fernanda Madeiral-
dc.contributor.authorLatteshttp://lattes.cnpq.br/1250398679855381pt_BR
dc.publisher.initialsUFPEpt_BR
dc.publisher.countryBrasilpt_BR
dc.degree.levelmestradopt_BR
dc.contributor.advisorLatteshttp://lattes.cnpq.br/7310046838140771pt_BR
dc.publisher.programPrograma de Pos Graduacao em Ciencia da Computacaopt_BR
dc.description.abstractxConstructos de linguagem de programação inspirados pelo paradigma funcional che- garam à maioria das linguagens convencionais. Muitos pesquisadores e desenvolvedores consideram que esses constructos tornam 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 tipicamente associados à programação funci- onal em JavaScript: recursão, imutabilidade, avaliação preguiçosa e funções como valores. Dividimos o último em dois grupos, funções de alta ordem e callbacks & promises. Fo- camos 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) escritos principalmente em JavaScript (mais de 50% do código), me- dindo 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 mais longos (o que sugeriria um código difícil de entender). Descobrimos que esses con- ceitos são de uso generalizado (478.605 ocorrências, 1 para cada 46,65 linhas de código, 43,59% de linhas de código). Além disso, o uso de funções de alta ordem, 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. Tam- bé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, a presença dessas estruturas 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 lingua- gem multiparadigma, como JavaScript, e seu uso não torna os programas mais difíceis de entender.pt_BR
dc.contributor.advisor-coLatteshttp://lattes.cnpq.br/8246690925340020pt_BR
Aparece nas coleções:Dissertações de Mestrado - Ciência da Computação

Arquivos associados a este item:
Arquivo Descrição TamanhoFormato 
DISSERTAÇÃO Fernando Henrique de Albuquerque Alves.pdf818,06 kBAdobe PDFThumbnail
Visualizar/Abrir


Este arquivo é protegido por direitos autorais



Este item está licenciada sob uma Licença Creative Commons Creative Commons