🇧🇷

Mind the Gap: Refactorings and Code Smells in Elixir, Lucas Vegi (UFV) #EsquentaSE4FP

O podcast da comunidade brasileira de Elixir

Mind the Gap: Refactorings and Code Smells in Elixir, Lucas Vegi (UFV) #EsquentaSE4FP

Lucas Vegi - SE4FP + IFP

Participantes

ADOLFO GUSTAVO SERRA SECA NETO, Alfonso Matsuoka, Ana Paula Micheleto, André Andrade Santos, ANGEMYDELSON SAINT BERT, Bruno Aguiar, BRUNO CESAR COELHO DA SILVA, Carlos Eduardo, Ciro Guilherme Nass, Eduardo da Silva, Fabricio da Silva Barroso, Felipe Naves, Filipe Leitzke, Flavio Gustavo Rocha, GERALDO DEMARIO, Gregório Miranda, Gregório Ribeiro de Miranda, JOAO PEDRO GUEZ DE OLIVEIRA, Jonathan Muller, Leonardo Salgado, LUCAS HENRIQUE PEREIRA FLORES, Lucas Orlikoski, Lucas Paixão, Marcelo Oliveira, Mateus Gabardo, MATEUS HENRIQUE KURITZA, NILTON CESAR BARBOSA ALEIXO, Pablo Magoga, PEDRO FORESTI LEAO, Prof. Lucas Vegi, Saulo Centenaro, Sergio Andrew Farias, Thalia Teng, Vinicius Ikeda, Vinicius Prattes, Wagner

Transcrição

ADOLFO GUSTAVO SERRA SECA NETO: Olá pessoal, boa tarde.

ADOLFO GUSTAVO SERRA SECA NETO: Então, estamos chegando ao final do Esquenta SFP 2026. O S forf vai acontecer agora no dia 8 de setembro em São Paulo, que é o workshop de engenharia de software para programação funcional.

ADOLFO GUSTAVO SERRA SECA NETO: Estamos aqui hoje com o Lucas Vege, professor lá da Universidade Federal de Gente, esqueci Viçosa,

Prof. Lucas Vegi: Viçosa.

ADOLFO GUSTAVO SERRA SECA NETO: que tá vindo na minha cabeça, Valença, pô.

ADOLFO GUSTAVO SERRA SECA NETO: Viçosa, claro, e famosa do do Globo Rural.

ADOLFO GUSTAVO SERRA SECA NETO: que aparecer realmente muita matéria assim, um campus bonito lá.

ADOLFO GUSTAVO SERRA SECA NETO: Muito obrigado, Lucas.

ADOLFO GUSTAVO SERRA SECA NETO: Você vai falar sobre Mind the Gap, Linking Factorings and Code Smells in Elixir.

ADOLFO GUSTAVO SERRA SECA NETO: Eu acho que vale a pena falar, né, além do do lembrar o pessoal que a gente tem dois patrocinadores esse ano no SCFP, é Celsio Seguros e a Pragmatic Bookshelf.

ADOLFO GUSTAVO SERRA SECA NETO: E se vocês entrarem lá no site da do SI4FP, que é SI4FPS4fp.github.ioioioio/2026, né?

ADOLFO GUSTAVO SERRA SECA NETO: S for FP 2026, vocês vão ver que tem lá cupom, né, para Pragmat Programmers, vai ter também uns sorteios de livro lá no durante o evento.

ADOLFO GUSTAVO SERRA SECA NETO: Enfim, mas obrigado, Lucas.

ADOLFO GUSTAVO SERRA SECA NETO: por mim você já já pode começar e fazer a sua apresentação.

ADOLFO GUSTAVO SERRA SECA NETO: No.

Prof. Lucas Vegi: Bom, beleza.

Prof. Lucas Vegi: Pessoal, boa tarde para vocês.

Prof. Lucas Vegi: Eh, é um prazer tá tá de novo aqui conversando no no Fronteiras, né?

Prof. Lucas Vegi: O aproveitando o gancho, o Adolfo falou da Universidade Federal de Viçosa, conhecida aí eh pelo pelo meio agrário e tal, também pelo doce de leite, né?

Prof. Lucas Vegi: Uma curiosidade, a universidade completou 100 anos na na semana passada e dentre as festividades, a a UFB promoveu no domingo, sábado ou domingo, agora me foge a memória, a quebra de recorde da maior lata de doce de leite do mundo.

Prof. Lucas Vegi: Eh, uma lata com 3,4 toneladas de doce de leite que foi posteriormente distribuído para pra comunidade universitária.

Prof. Lucas Vegi: Enfim, foi uma uma uma curiosidade interessante, né, que é aqui a terra do doce de leite também.

Prof. Lucas Vegi: Mas enfim, a gente não veio falar sobre doce de leite, né?

Prof. Lucas Vegi: A gente veio falar sobre refatorações e coldsmels para elixe.

Prof. Lucas Vegi: Eh, basicamente o que eu vou fazer com vocês hoje é apresentar um pequeno spoiler da do da apresentação que eu vou fazer no ISBZ desse ano lá na trilha Journal First.

Prof. Lucas Vegi: Esse é a apresentação de um artigo que a gente publicou esse ano no Journal of Software Evolution and Process, eh, intitulado Mind the Gap, Link Ring Factories and Codes Mels Elix, né?

Prof. Lucas Vegi: Então, vamos ver do que que se trata.

Prof. Lucas Vegi: Contextualizando um pouquinho aqui sobre qualidade de software, codes, Mels e refatorações.

Prof. Lucas Vegi: Eh, a discussões sobre qualidade de software são, enfim, ão, são longe de ser uma novidade, né?

Prof. Lucas Vegi: Essas discussões elas começaram lá em meados do dos anos 70, principalmente pelo livro do Brooks, né, Demical MMO, onde o Brooks começou a promover algumas discussões sobre complexidades de desenvolvimento, organizações das equipes, eh formas de comunicação entre elas,

Prof. Lucas Vegi: arquitetura, integridade conceitual, gerenciamento de projetos, enfim, dentro desse dessa dessa linha, né, de raciocínio, um outro marco importante aí nessa linha do tempo é exatamente em 1980,

00:05:00

Prof. Lucas Vegi: no proceedings of eh eh e procedings da I3, né, o o Leman, né, publicou as leis de evolução de software, né, que a gente basicamente segue até hoje, né,

Prof. Lucas Vegi: a a ideia de que manutenção e evolução são partes inevitáveis do processo e que o software, portanto, não é um produto estático, surgiram a partir daquele momento, né?

Prof. Lucas Vegi: né?

Prof. Lucas Vegi: E enfim, evoluindo nessas discussões, no finalzinho da década de 90, o Fuller publicou o conhecido livro de Refactings, que foi a base aqui do do nosso trabalho inicial para paraa Elix, onde o Ferhor, né,

Prof. Lucas Vegi: um catálogo com 25 colds ms e 72 refatorações, que serviu de start para uma série de pesquisas derivadas sobre qualidade Не.

Prof. Lucas Vegi: software é aplicada especificamente a código.

Prof. Lucas Vegi: Só que aí a gente tem exatamente o início do problema aqui do contexto que que a gente busca investigar.

Prof. Lucas Vegi: Boa parte dessas pesquisas que vieram depois da do livro do Fule, elas tinham como um foco específico programação orientada objeto.

Prof. Lucas Vegi: São as linguagens do paradigma mainstream da indústria.

Prof. Lucas Vegi: No início do do meu doutorado com o professor Marco Túlio lá na lá na UFMG, a gente percebeu que isso era um um um gargalo, digamos assim, da literatura e resolvemos, porque não investigar se existiam codes mels e refatorações para programação funcional.

Prof. Lucas Vegi: Então, lá em 2023 a gente publicou um paper que talvez alguns de vocês já conheçam, né, o Understanding Codes Melsal Language na na Impical Soft Engineer.

Prof. Lucas Vegi: Posteriormente a gente publicou um segundo trabalho, né, com com um catálogo sobre refatorações para elixir também lá na Empirical Soft Engineer, mas a gente teve um problema e a gente tinha um gap até então nesse trabalho, né?

Prof. Lucas Vegi: Basicamente o esses estudos anteriores nossos publicados na Empirical, eles eles eh estavam desconectados, né?

Prof. Lucas Vegi: Basicamente a gente tinha um catálogo com 35 coldsmels para Elix, um catálogo com 82 refatorações para essa mesma linguagem, mas esses catálogos não conversavam, igual acontece, por exemplo, no livro do Fler, né?

Prof. Lucas Vegi: O livro do Fulo, ele não apenas propõe os catálogos de smels e refatorações, como ele também mapeia, por exemplo, qual refatoração pode ser usada para remover qual SMEL, qual SMMEL pode ser removido por qual sequência de refatoração.

Prof. Lucas Vegi: Isso daí foi a motivação, eh, a falta disso, na verdade, né, foi a motivação pro trabalho que eu tô apresentando aqui hoje para vocês, né?

Prof. Lucas Vegi: O o nosso objetivo, portanto, foi criar um guia sistemático, né, para remoção de codes em Elixe e isso originou exatamente o nosso paper Mind the Gap Link Refactors in Codes Mells Elix a gente publicou no JSEP esse ano,

Prof. Lucas Vegi: tá?

Prof. Lucas Vegi: E a partir de agora eu pretendo descrever um pouquinho para vocês da metodologia que a gente usou nesse trabalho, os principais resultados, enfim, trabalhos futuros e deixarem aberto para pra gente promover alguma discussão em cima disso.

Prof. Lucas Vegi: Bom, para quem não conhece o background do dos nossos trabalhos anteriores, né, de CODs mels e refatorações para Elixe, pode ainda estar se perguntando por Elix, né?

Prof. Lucas Vegi: Afinal de contas, o a gente tinha identificado que não existia nada para, basicamente não existiam discussões de qualidade software para programação funcional, mas existem várias linguagens funcionais.

Prof. Lucas Vegi: Por que que o nosso foco foi atacar o Elixe?

Prof. Lucas Vegi: Existem alguns motivos, né?

Prof. Lucas Vegi: Eu já comentei sobre isso em alguns outros episódios do Fronteira, né, Adolfo, mas o Elixe ele é uma linguagem funcional desenvolvida por um brasileiro, o José Valim.

Prof. Lucas Vegi: Ele foi criado lá em 2012. Então isso por si só chama um pouco a atenção da comunidade Bras brasileira, né, por investigar essa linguagem.

Prof. Lucas Vegi: Mas assim, dentre as linguagens funcionais, o Elix é uma das que tem maior adoção industrial, né?

Prof. Lucas Vegi: A gente tem mais de 300 empresas conhecidas aí que já estão usando Elix em produção.

Prof. Lucas Vegi: Aqui eu destaco algumas como Pinterest, Adobe, Discord, Heroco, Motorola.

Prof. Lucas Vegi: E entre os desenvolvedores, né, que trabalham com a linguagem, ela também é bastante admirada.

Prof. Lucas Vegi: Aqui eu eu apresento alguns dados do das três últimas edições do Steck Overflow Survey, né?

Prof. Lucas Vegi: E basicamente na desde a edição de 2023 o Elix ele fica sempre no top três entre as linguagens mais admiradas pelos desenvolvedores, né?

Prof. Lucas Vegi: Para ser mais preciso, em 2023 e 24 ele ficou em segundo lugar atrás apenas do Rust e agora em 2025 ele ficou em terceiro lugar atrás do Rust e do Gleen.

Prof. Lucas Vegi: Mas o é interessante comentar sobre o Glle, porque o Glenn é uma linguagem do ecossistema do Erlang, né, do ecossistema onde o Elixir tá inserido, né, o Phoenix, que é o principal framework para para desenvolvimento web dessa linguagem,

00:10:00

Prof. Lucas Vegi: ele é tido lá no no Steck Overfold Survey como uma das principais tecnologias para desenvolvimento web da atualidade.

Prof. Lucas Vegi: E na no ponto de vista salarial, né, o Elix ele fica ali no top dois, né, nessas últimas edições entre as linguagens que pagam melhor no mercado.

Prof. Lucas Vegi: Curiosamente atrás apenas do Erlang, que é do mesmo ecossistema.

Prof. Lucas Vegi: Então assim, de uma maneira geral, eu gostaria de deixar claro nesse slide que o Elix é uma linguagem funcional relevante e a nossa pesquisa tinha como objetivo fazer algo aplicado, né, ao mercado.

Prof. Lucas Vegi: A gente trabalha com engenharia de software aplicado, então era importante ter uma linguagem com essas características.

Prof. Lucas Vegi: Pois bem, mas considerando então que a gente tinha um catálogo de cods para essa linguagem e um catálogo de refatorações, qual foi a metodologia que a gente aplicou nesse trabalho para tentar correlacionar esses catálogos?

Prof. Lucas Vegi: Nosso trabalho ele foi dividido basicamente em quatro passos principais metodológicos, onde no primeiro deles a gente criou um um banco de dados relacional para mapear as relações entre os melsus e e refatorações da linguagem,

Prof. Lucas Vegi: porque a gente sabia de antemão que essa relação seria de N para M, como acontece no livro do Faulo, né?

Prof. Lucas Vegi: Geralmente para um mesmo esmelo, a gente tem múltiplas refatorações que podem ser usadas na sua remoção.

Prof. Lucas Vegi: E uma estratégia de refatoração às vezes pode ser utilizada na remoção de vários esmels diferentes.

Prof. Lucas Vegi: Então a gente promoveu a criação desse data, desse dataset num formato relacional.

Prof. Lucas Vegi: Depois eu falo mais à frente da importância desse banco, mas eh basicamente ele vai dar suporte paraa criação de algumas ferramentas que a gente já tá trabalhando.

Prof. Lucas Vegi: E num primeiro momento, a gente buscou, então, de forma manual, empírica, comparar cada uma das 35 refatora da das 35 smelts com as 85 estratégias de refatorações que a gente tinha catalogado.

Prof. Lucas Vegi: Então, basicamente, a gente via um SMEL causava e o tipo de melhoria de qualidade promovida por determinada refatoração.

Prof. Lucas Vegi: Se a gente encontrava um tipo de melhoria que ajudava no tipo de problema, uma relação entre um Smell e uma refatoração era mapeada, né?

Prof. Lucas Vegi: Nesse primeiro momento, né, a gente conseguiu eh mapear todos os 35 smells em pelo menos uma estratégia de refatoração.

Prof. Lucas Vegi: Mas lembrando que a gente tinha eh a gente tinha 82 estratégias de refatoração, correto?

Prof. Lucas Vegi: Nesse primeiro eh nesse segundo passo metodológico, 23 dessas refatorações, a gente não conseguiu encontrar eh contribuições delas para a remoção de smelts.

Prof. Lucas Vegi: Então a gente veio pro nosso terceiro passo metodológico, onde a gente pegou essas 23 refatorações órfãos, digamos assim, que não estavam úteis até o momento para refaturação de smels.

Prof. Lucas Vegi: E fizemos um uma segunda triagem, né, comparando cada uma dessas 23 refatorações com os smells.

Prof. Lucas Vegi: Agora, o foco era na refatoração, não no smell.

Prof. Lucas Vegi: E nesse segundo rastreio, a gente conseguiu mapear mais 11 refatorações em sequências de remoções de smell.

Prof. Lucas Vegi: sobrando, portanto, apenas 12 delas das 82, né, não contribuindo paraa remoção de nenhum smel.

Prof. Lucas Vegi: Guardem esse número 12 refatorações não contribuindo para remoções de smels, que eu vou voltar a falar disso mais à frente.

Prof. Lucas Vegi: Nesse processo, a gente tem aqui embaixo, acho que vocês não estão vendo o meu cursor, né?

Prof. Lucas Vegi: a gente tem o passo quatro, onde a gente também de forma periférica, conseguiu identificar algumas refaturações compostas nesse processo.

Prof. Lucas Vegi: Que vem a ser isso, tá?

Prof. Lucas Vegi: Quando a gente identificava sequências de refatorações aplicadas para remoção de de um smell, mas não apenas de forma atômica, um para um, uma refatoração removendo um smell,

Prof. Lucas Vegi: a gente chamava isso de refatorações compostas candidatas.

Prof. Lucas Vegi: A gente encontrou 26 delas.

Prof. Lucas Vegi: Agora, quando a gente encontrava sequências que se repetiam na remoção de smells diferentes, a gente resolveu nomear essas sequências e a gente encontrou cinco delas, que são refaturações compostas, que também são contribuições desse trabalho.

Prof. Lucas Vegi: volta a falar delas mais à frente.

Prof. Lucas Vegi: Perfeito.

00:15:00

Prof. Lucas Vegi: Bom, caminhando pros resultados gerais aqui, né, da do nosso trabalho, a gente encontrou nesse processo todo 176 relações entre os 35 colds mels e as 70 refatorações.

Prof. Lucas Vegi: Então, o nosso primeiro finding, né, é que não teve smell em elixir descoberto por refatorações na sua remoção.

Prof. Lucas Vegi: para cada um dos 35 es smels do nosso catálogo, a gente tinha pelo menos uma refatoração que poderia ajudar na sua remoção.

Prof. Lucas Vegi: E o interessante, né, que quem conhece o nosso trabalho mais a fundo sabe que o nosso catálogo de refatorações ele é dividido em quatro categorias.

Prof. Lucas Vegi: A gente tem refatorações tradicionais, a gente tem refatorações a nível de paradigma funcional, a gente tem refatorações específicas para Elix e refatorações para Erlang, né?

Prof. Lucas Vegi: As refatorações tradicionais são aquelas que já existiam lá no livro do Fuller entre aquelas 72 refatorações, mas que também fazem sentido no elixir.

Prof. Lucas Vegi: E curiosamente, dentre essas 176 relações, em 51% dos casos, a gente tinha refatorações tradicionais presentes nessas eh nesses mapeamentos.

Prof. Lucas Vegi: Então isso a gente conseguiu observar que o catálogo do Fuller ele de uma certa forma ele transcende o paradigma de orientação objeto.

Prof. Lucas Vegi: É uma pesquisa que mesmo de praticamente 30 anos atrás ainda faz sentido numa linguagem moderna e de outro paradigma como é o caso do Elix hoje em dia.

Prof. Lucas Vegi: Então isso foi um achado bastante interessante.

Prof. Lucas Vegi: E esse exemplo, essa amostra que eu tô colocando aqui pro Smell Complex El Clausinho WIF, é basicamente a uma amostra de quatro das 176 relações que a gente encontrou para cada um dos 35 smells,

Prof. Lucas Vegi: a gente tinha uma sequência de refatorações que quando seguida sistematicamente removia o mesmo, tá?

Prof. Lucas Vegi: No caso desses mel em questão, complex clusing wif, a gente tinha extractida de remove de code e opcionalmente usando remove redundante less clusing wif e moving with clause doubt pattern matching, né?

Prof. Lucas Vegi: Mas se vocês tiverem a curiosidade de ler o nosso trabalho depois, vocês vão ver que a gente criou um guia de fato onde você consegue ir para cada smell e ver quais são as refatorações para retirá-los.

Prof. Lucas Vegi: Naturalmente eu não vou apresentar a 176 aqui porque não seria viável no tempo, seria até bastante cansativo, mas o produto final do nosso trabalho é algo mais ou menos nessa estrutura.

Prof. Lucas Vegi: Um outro finding que que eu posso destacar aqui para vocês, já tinha até adiantado lá na metodologia, é que a gente encontrou cinco refatorações compostas recorrentes pro ecossistema Elix.

Prof. Lucas Vegi: E os nomes dados foram struct, que basicamente é uma sequência de um struct, né?

Prof. Lucas Vegi: Essa essa refatoração composta, por exemplo, ela pode ser usada na eliminação de feature feiture envy, une annecessary macros e outros e outras refatorações que a gente tem lá no nosso catálogo, né?

Prof. Lucas Vegi: Modul decomposition, né?

Prof. Lucas Vegi: Basicamente é uma sequência de split ining a large module e rename a identifier que a gente também mapeou pra remoção de large class, divergent change, dentre outros smelts, né?

Prof. Lucas Vegi: e as outras três eh refaturações compostas que eu tô listando aqui para vocês, que basicamente são sequências, né, de refatorações atômicas que se repetem na remoção de smells distintos.

Prof. Lucas Vegi: Ou seja, aqui se eu tenho extractive function seguido de move definition, no processo de retirada de feature envy e unary macros, a gente teve essa mesma sequência se repetindo.

Prof. Lucas Vegi: Por isso que a gente resolveu dar um nome.

Prof. Lucas Vegi: Se algo se repete, é porque aquilo tem um tem uma característica de um padrão, né?

Prof. Lucas Vegi: Então é melhor dar um nome que melhora a comunicação entre as equipes.

Prof. Lucas Vegi: E a gente teve esses smells novos aí.

Prof. Lucas Vegi: Lembrando que a literatura de composit refactories ela é vasta, né?

Prof. Lucas Vegi: Mas até onde a gente tinha conhecimento, não existiam refatorações compostas documentados nesse ecossistema, nesse paradigma.

Prof. Lucas Vegi: Um exemplo prático, tá, de remoção de de um smell, usando uma dessas refatorações compostas, eu vou apresentar aqui para vocês agora.

Prof. Lucas Vegi: O smell em questão é o large code generation by macros, tá?

Prof. Lucas Vegi: Esse smell é um dos nossos 35. Basicamente ele ocorre quando você tem uma um macro.

Prof. Lucas Vegi: O macro é um recurso de metaprogramação do elixir, onde você pode usar elixir para estender o elixir, digamos assim, né?

Prof. Lucas Vegi: E basicamente uma macro, ela é executada em tempo de compilação.

Prof. Lucas Vegi: Qual que é o problema disso?

Prof. Lucas Vegi: Se você tem uma macro que é muito grande, você e e ela é usada, né, em múltiplos pontos do seu código, você pode eventualmente ter a expansão dessa macro centena de vezes, né,

00:20:00

Prof. Lucas Vegi: no seu sistema durante esse processo de compilação e tornar a compilação lenta, não é?

Prof. Lucas Vegi: Você você tem um uso desnecessário de recursos computacionais.

Prof. Lucas Vegi: Então, uma das formas de remover esses mel que o nosso estudo encontrou é usar a refatoração compostact.

Prof. Lucas Vegi: A gente encontrou esse tipo de situação minerando o código do Phoenix.

Prof. Lucas Vegi: Então, por exemplo, aqui a gente tem a Macret, que ela tem eh basicamente 20 linhas de código.

Prof. Lucas Vegi: Em linhas gerais, essas 20 linhas, elas vão ser compiladnecessariamente, tá?

Prof. Lucas Vegi: Então, o que que a gente faz para evitar isso?

Prof. Lucas Vegi: Primeira coisa que o Straight to outside faz é extrair uma função, não é isso?

Prof. Lucas Vegi: Então, o que que foi feito aqui, ó?

Prof. Lucas Vegi: Aquela macro, basicamente, eu extraí de dentro dela tudo que ela fazia, porque não tinha tinha necessidade de acontecer dentro da macro tudo aquilo.

Prof. Lucas Vegi: Isso veio para uma função chamada define.

Prof. Lucas Vegi: Dentro da macro agora a gente só tá chamando a função.

Prof. Lucas Vegi: Logo, em tempo de compilação, esse bloco de código aqui não vai ser compilado n vezes.

Prof. Lucas Vegi: Essa aqui é a ideia, né?

Prof. Lucas Vegi: O próximo passo do strike to outside é pegar algo que foi extraído e mover para outro módulo para aumentar a coesão, que é o que a gente faz nesse segundo passo aqui.

Prof. Lucas Vegi: Aquela função define que a gente tinha definido lá no módulo de rotas, agora ela foi movida pro módulo utilitário de rotas, porque lá teoricamente ela poderia ter mais coesão com o resto do módulo que eu não tô mostrando aqui.

Prof. Lucas Vegi: E naturalmente a chamada daquela função depois que ela moveu foi atualizada.

Prof. Lucas Vegi: Então isso eu tenho, por mais que seja uma refatoração simples, aplicando até técnicas que vinham lá do Fler, mas nesse contexto a gente enxugou uma macro e resolveu o problema do smell, que era aquela expansão desnecessária múltiplas vezes.

Prof. Lucas Vegi: E a gente conseguiu separar as responsabilidades colocando cada código no seu devido lugar, mantendo a coesão do código.

Prof. Lucas Vegi: Então, enfim, é algo que já existia, mas não tava documentado, né?

Prof. Lucas Vegi: você não tinha eh se você não tá documentado, você não tem reuso dessa desse conhecimento, né?

Prof. Lucas Vegi: Bom, então em linhas gerais, a base do nosso estudo foi mais ou menos por aí.

Prof. Lucas Vegi: A gente pegou um catálogo, comparou com outro, viu que era recorrente, definiu e refatoração composta, demos nomes para isso e mapeamos o que, removia o que.

Prof. Lucas Vegi: Mas a gente precisava validar esse estudo, né?

Prof. Lucas Vegi: Porque isso aqui não é a gente que acha que funciona.

Prof. Lucas Vegi: A gente precisava que desenvolvedores que trabalham com Elix concordassem com isso.

Prof. Lucas Vegi: Então a gente resolveu promover um survey com desenvolvedores especialistas e basicamente esse survey apresentava pros desenvolvedores um smell e a sua sequência de refatorações para removê-lo.

Prof. Lucas Vegi: E a gente pedia para esse desenvolvedor falar se ele concordava que aquela sequência de refatorações removia aqueles mel ou não, né?

Prof. Lucas Vegi: Lógico que seria completamente cansativo e fadonho a gente pedir que cada desenvolvedor validasse cada uma daquelas 176 relações.

Prof. Lucas Vegi: Seria um negócio completamente impensável.

Prof. Lucas Vegi: Então o que que foi feito, né, para uma estrutura antifadiga aqui do nosso trabalho?

Prof. Lucas Vegi: A gente pegou e criou 10 versões diferentes do nosso questionário.

Prof. Lucas Vegi: Cada uma delas buscava a validação da remoção de sete mels diferentes.

Prof. Lucas Vegi: Perfeito.

Prof. Lucas Vegi: E cada uma dessas versões precisava de ser avaliada por pelo menos dois desenvolvedores diferentes, duas avaliações independentes por SMELs.

Prof. Lucas Vegi: Yeah.

Prof. Lucas Vegi: Perfeito.

Prof. Lucas Vegi: E a avaliação ela se dava numa escala de cinco pontos.

Prof. Lucas Vegi: Se o desenvolvedor respondesse um para um smell, basicamente ele ia falar: “Olha, essa essa sequência de refatorações que vocês colocaram aqui não é o suficiente, não ajuda para remover esse smell. Se ele respondesse cinco,

Prof. Lucas Vegi: que era o máximo da escala, ficaria claro que aquela sequência de refatorações removia o smell por completo.” Beleza?

Prof. Lucas Vegi: Então, a gente recrutou 10 desenvolvedores experientes de quatro países diferentes, Brasil, Alemanha, Itália e Polônia.

Prof. Lucas Vegi: E, enfim, todos eles tinham mais de 3 anos de experiência com a linguagem, trabalhando em múltiplos projetos.

Prof. Lucas Vegi: E como resultado desse processo de avaliação, a gente viu que praticamente 83%, né, das respostas que a gente recebeu, elas estavam, né, no nível quatro ou cinco, né,

Prof. Lucas Vegi: que são os níveis mais altos de capacidade de remoção de uma sequência de refatorações para um determinado smell.

00:25:00

Prof. Lucas Vegi: Então, sim, a gente viu que esse mapeamento ele funciona muito bem, né?

Prof. Lucas Vegi: ele remove praticamente todos os mels na sua completude.

Prof. Lucas Vegi: Basicamente trazendo eh essa resposta para uma fatia um pouquinho diferente, dando nome para cada um dos smells, esse gráfico aqui que deve tá pequenininho, enfim, depois vocês podem ver no artigo com mais detalhe,

Prof. Lucas Vegi: mas basicamente cada coluna que vocês estão vendo aqui é um dos nossos 35 smelts.

Prof. Lucas Vegi: E a escala que vocês estão vendo aqui, ela vai de 1 a c.

Prof. Lucas Vegi: Então essa coluna representa o valor médio, né, da resposta dada pelos desenvolvedores que avaliaram a remoção de cada um dos smells.

Prof. Lucas Vegi: Então, praticamente metade dos nossos smells aqui, ó, recebeu média cinco, ou seja, as refatorações para eles promoviam, na visão de todos os avaliadores, eh, remoção completa.

Prof. Lucas Vegi: a gente tem um número ainda muito alto aqui, né, de de smells em nível 4 e 5, né?

Prof. Lucas Vegi: Essa barrinha em azul que vocês estão vendo é a divergência de resposta entre o os dois revisores.

Prof. Lucas Vegi: Então, por exemplo, aqui o complexo branching, né, que é o primeiro smell.

Prof. Lucas Vegi: Vocês não estão vendo o meu cursor, mas é o primeiro smell que tá aqui com com 4,5, né?

Prof. Lucas Vegi: Por que que ele é 4,5?

Prof. Lucas Vegi: Porque um revisou, avaliou como quatro, o outro avaliou como cinco, então a média foi 4,5, né?

Prof. Lucas Vegi: Então o desvio padrão dessas respostas também foi baixo, salvo algumas exceções.

Prof. Lucas Vegi: A gente tem alguns casos aqui mais profundo onde a gente teve extremos, onde um revisor avaliou como um, o outro avaliou como cinco, aí ficou com média três, né?

Prof. Lucas Vegi: Então são respostas que não ajudam tanto.

Prof. Lucas Vegi: E o único smell que a gente pode entender que é insatisfatório a sequência de refatorações que a gente deu para ele é esse último, o inapropriate.

Prof. Lucas Vegi: eh intimes, né?

Prof. Lucas Vegi: Eh, e eh ou a intimidade inapropriada, que é um um smell tradicional lá do Fler, que a gente conseguiu uma média 1,5, né, de remoção para ele, ou seja, a nossa sequência de refaturações não funcionou bem para esses mel.

Prof. Lucas Vegi: A gente precisa de estudos futuros, né, eh, compreender formas mais eficazes de removê-lo, porque os desenvolvedores não concordaram.

Prof. Lucas Vegi: Bom, lembra daquelas 12 refatorações que a gente não tinha conseguido mapear na remoção de nenhum smell lá naquele processo comparativo dos catálogos?

Prof. Lucas Vegi: Isso levantou uma curiosidade na gente também, né?

Prof. Lucas Vegi: Por que que será que aquelas 12 refatorações elas não serviam para remover smell?

Prof. Lucas Vegi: Será que eventualmente o nosso catálogo de SMEL ele podia ele tá incompleto, né?

Prof. Lucas Vegi: Será que existe algum smel que essas refatorações retiram, mas eu não documentei eles?

Prof. Lucas Vegi: Então, por isso eu não consegui mapear.

Prof. Lucas Vegi: Enfim, quais são os motivos, né, dessas refatorações não terem removido smelts?

Prof. Lucas Vegi: Então, para responder essa pergunta, a gente se baseou na taxonomia de do ABT, né, de publicada em 2020, onde basicamente eles definem motivos para os quais eh desenvolvedores refatoram o código.

Prof. Lucas Vegi: Isso.

Prof. Lucas Vegi: E e uma refatoração, ela não é obrigatoriamente apenas para remover SMEL.

Prof. Lucas Vegi: você tem melhoria de desempenho, você tem, enfim, eh, questões de qualidade interna, você pode ter questões idiomáticas, tem outros motivos, né?

Prof. Lucas Vegi: No nosso caso, após essa análise, a gente viu que 11 dessas 12 refatorações, de fato, não tinham relação direta com qualidade interna a nível de smel.

Prof. Lucas Vegi: Quando era de qualidade interna, eh, sem ser mel, por exemplo, a gente teve seis casos idiomáticos.

Prof. Lucas Vegi: São granularidades muito pequenininhas, são questões de, sei lá, eu vou usar, por exemplo, um uma recursão com multuse function, com elixir ou ou uma recursão no estilo mais tradicional em outras linguagens.

Prof. Lucas Vegi: Isso é um aspecto idiomático, né?

Prof. Lucas Vegi: Eu vou usar pipe operator ou eu vou usar, por exemplo, composição de funções naquele estilo que você usa, por exemplo, em em orientação objeto, que você vai fazendo chamada dentro de chamada dentro de chamada.

Prof. Lucas Vegi: Mudanças como essa não são smelts, mas um caso nos chamou atenção, né?

Prof. Lucas Vegi: A nossa refatoração replacing recursion with a higher a higher level construct foi uma refatoração que a gente percebeu que ela é focada para substituir funções recursivas por

Prof. Lucas Vegi: chamadas de funções de ordem superior, que é uma característica de linguagens funcionais.

Prof. Lucas Vegi: e usar, por exemplo, uma recursão explícita no elixir, quando você pode usar um MAP, quando você pode usar um reduce, quando você pode usar um filter, pode ser sim considerado um cod.

00:30:00

Prof. Lucas Vegi: Então isso gerou a documentação de um novo codel nesse trabalho que é o necessary splicity recursion que tá lá descrito melhor no nosso artigo, depois vocês podem ver com calma, mas esse trabalho então gerou um 36º smell.

Prof. Lucas Vegi: Aqui dando um exemplo dele, né?

Prof. Lucas Vegi: O lado esquerdo vocês têm a versão eh com mau cheiro, né, desse código.

Prof. Lucas Vegi: Observe que a gente tem duas funções recursivas, uma para calcular eh fatorial e uma segunda que recebe uma lista como parâmetro e retorna a o somatório dos valores dessa lista, tá?

Prof. Lucas Vegi: Aqui eu tô usando recursão explícita em ambos os casos, mas na versão à direita refatorada eu posso tranquilamente substituir essa refatoração explícita por versões em funções de ordem superior, que nesse caso aqui foi o reduce, mas em outros casos poderia ser MAP,

Prof. Lucas Vegi: poderia ser filter.

Prof. Lucas Vegi: Isso daqui você tem um código com menos linhas que exige menos complexidade cognitiva para você entender e ele tem exatamente o mesmo comportamento depois de refatorado.

Prof. Lucas Vegi: Então foi um smell que a gente identificou que faltava lá no catálogo inicial.

Prof. Lucas Vegi: Enfim, como trabalhos futuros dessa nossa pesquisa, eh a gente pretende eh construir algumas ferramentas para automatizar esse processo.

Prof. Lucas Vegi: Algumas delas estão inclusive em desenvolvimento, né?

Prof. Lucas Vegi: A gente já tem o Refactor X que o o Gabriel apresentou ano passado no SE forp, já tem uma adesão na comunidade Elix.

Prof. Lucas Vegi: Basicamente é um plugin pro VS Code que aplica 29 das 82 refatorações que a gente catalogou, só que a gente ainda não tinha, por exemplo, ainda não tem nenhuma ferramenta de detecção de codes ms na linguagem.

Prof. Lucas Vegi: Mas se a gente cria uma ferramenta para detectar cods nessa linguagem, a gente já tem uma ferramenta para refatorar e a gente já tem um mapeamento entre smells e refatorações, a gente pode perfeitamente ter um um ecossistema onde a sua ferramenta

Prof. Lucas Vegi: detecta o smell, te recomenda uma refatoração e faz a refatoração automaticamente para você.

Prof. Lucas Vegi: Isso é um trabalho futuro, a gente vem trabalhando nisso e já dando algum spoiler, a gente tem coisas em andamento que serão apresentadas no SI por FP nesse sentido, né, que é um progresso aqui desse desse nosso trabalho.

Prof. Lucas Vegi: Esse mapeamento que a gente promoveu foi o primeiro mapeamento validado empiricamente para SMELS e refatorações no paradigma funcional, até onde a gente tem conhecimento e não existiam trabalhos eh com essas características nesse contexto e a gente crê que ele pode ser generalizado.

Prof. Lucas Vegi: Da mesma forma que o nosso trabalho foi preixe, como é que será que funciona em closure?

Prof. Lucas Vegi: Oh. Como é que será que funciona em has?

Prof. Lucas Vegi: Como é que será que funciona em Farp?

Prof. Lucas Vegi: Será que a gente não tem como encontrar algo a nível e de paradigma igual o Fler fez?

Prof. Lucas Vegi: O trabalho do Flen não é para Java.

Prof. Lucas Vegi: O trabalho do Flen para Python.

Prof. Lucas Vegi: Enfim, o trabalho dele é para orientação objeto.

Prof. Lucas Vegi: Por um acaso ele aplica em algumas linguagens.

Prof. Lucas Vegi: Então a gente entende que o futuro dessa pesquisa é a generalização dela a nível de paradigma funcional, mas para isso outras linguagens têm que ser investigadas, tá?

Prof. Lucas Vegi: alguns trabalhos futuros para caminhar aqui para paraa finalização da minha fala.

Prof. Lucas Vegi: a gente pretende investigar, né, mais a fundo a prevalência do do desse Coldmel novo que a gente identificou nesse trabalho que eu apresentei, porque afinal de contas, né, o a descoberta desse 36º Smell foi algo periférico.

Prof. Lucas Vegi: Então, quando a gente validou o nosso catálogo de smells lá naquele estudo da Empirical, que a gente validou prevalência e e e relevância, como esses mel, a gente não conseguiu mensurar.

Prof. Lucas Vegi: Então, em algum momento a gente entende que é importante entender o impacto real desses mel na na na percepção de desenvolvedores.

Prof. Lucas Vegi: Já o codmel que a gente percebeu que a maneira de removê-lo não é satisfatória, que é a a intimidade inapropriada, a gente precisa sim de estudar novas formas, novas sequências de refatoração para para sua remoção, né?

Prof. Lucas Vegi: Bom, eh, eu faço um agradecimento especial a ao Valim, né, o Zé Valim, que é o criador do Elix.

Prof. Lucas Vegi: Ele desde o início do nosso trabalho, ele fez o ele ele abraçou a causa, enfim, ele acreditou na pesquisa, buscou parceiros para que a gente viabilizasse financeiramente esse trabalho.

Prof. Lucas Vegi: Então, a Desgit, que é até a a a empresa que que ele fundou, foi um dos patrocinadores da pesquisa junto com a RBA.

Prof. Lucas Vegi: E a gente teve também órgãos de fomento como FAPEMIG, CAPS dando suporte ao longo do dessa nossa jornada.

00:35:00

Prof. Lucas Vegi: Então, enfim, sem isso, nada disso teria sido possível.

Prof. Lucas Vegi: Enfim, agradeço a atenção de vocês, me coloco à disposição para para responder dúvidas, enfim, bater papo sobre alguns insightes.

Prof. Lucas Vegi: Se vocês quiserem conversar a respeito aí desse nosso trabalho, vamos aproveitar o tempo.

Prof. Lucas Vegi: Esses códigos QR que eu deixei aí para vocês são,

Vinicius Ikeda: M.

Prof. Lucas Vegi: respectivamente, para acessar nossos catálogos de SMEL e refatorações.

Prof. Lucas Vegi: Quem não conhece os trabalhos anteriores, eh, convido-os a a exploraros com mais calma, tá bom?

Prof. Lucas Vegi: Obrigado, pessoal.

ADOLFO GUSTAVO SERRA SECA NETO: Obrigado,

Vinicius Ikeda: Угу.

ADOLFO GUSTAVO SERRA SECA NETO: Lucas.

Vinicius Ikeda: Yeah.

ADOLFO GUSTAVO SERRA SECA NETO: Temos algumas perguntas aqui.

ADOLFO GUSTAVO SERRA SECA NETO: Eh, eu vou supor que se escreveu aqui no chat não quer aparecer, então se não quer, mas se quiser aparecer pode levantar a mão e aí eu dou até prioridade.

ADOLFO GUSTAVO SERRA SECA NETO: Então, Vinícius, você quer falar?

Vinicius Ikeda: pergunta.

Vinicius Ikeda: Esses novos smells que você identificou.

Vinicius Ikeda: você como o quão provável seria poder encontrá-los ou aplicar soluções dadas a eles em linguagens que não são eh primariamente relativamente funcionais, mas que estão mas que passaram a receber conceitos de programação funcional com o próprio Java

Vinicius Ikeda: C#ARP ou que são ou que tá ou tá sendo feito adaptações para que seja possível programar em mais próximo ao funcional.

Prof. Lucas Vegi: Entendi,

Vinicius Ikeda: Угу.

Prof. Lucas Vegi: cara.

Prof. Lucas Vegi: A pergunta super interessante.

Prof. Lucas Vegi: Pelo que eu entendi, a a sua ideia é será que o seu trabalho para Elix, que é uma linguagem funcional, faz sentido para linguagens multiparadigma, como por exemplo Cotlin, Swift, né?

Vinicius Ikeda: Isso.

Prof. Lucas Vegi: O próprio Python tem muito elemento de de programação funcional,

Vinicius Ikeda: No.

Prof. Lucas Vegi: JavaScript, enfim.

Prof. Lucas Vegi: Eh, aqui eu vou fazer uma especulação, até porque isso não foi investigado ainda por nós.

Prof. Lucas Vegi: Eu acredito que sim, pode fazer sentido, só que seria eh muito preliminar da minha parte, enfim, eu afirmar que faria sentido, porque a gente tem que investigar para ter certeza, né?

Prof. Lucas Vegi: Da mesma forma que eu não consigo te afirmar hoje que esses smells e essas refatorações fariam sentido para eh Haskel, por exemplo, ou para Farp, que que são outras linguagens funcionais?

Prof. Lucas Vegi: Eu não poderia te afirmar que poderiam fazer sentido para linguagens eh multiparadigma.

Prof. Lucas Vegi: O caminho natural que eu entendo seria a gente evoluir na generalização a nível de paradigma para eu entender se isso faz sentido ou o que faz sentido a nível de linguagens funcionais, né?

Prof. Lucas Vegi: Isso tá em andamento.

Prof. Lucas Vegi: A gente tem trabalho aqui, por exemplo, em Farp que tá que tá em início.

Prof. Lucas Vegi: Já adiantando, no S for FP desse ano, o pessoal lá da Federal de Campina Grande vai apresentar um um trabalho de smels para Closure, que inclusive teve financiamento do Nubank, enfim.

Prof. Lucas Vegi: Eh, então a gente tá nesse processo de generalização e uma vez que ele for concluído, eu acredito que seria sim um passo interessante investigar o impacto disso em linguagens multiplataforma.

Prof. Lucas Vegi: Eu acredito que sim.

Prof. Lucas Vegi: Mas é um sentimento, não uma afirmação.

Vinicius Ikeda: Obrigado.

ADOLFO GUSTAVO SERRA SECA NETO: Já mais alguma?

Vinicius Ikeda: No.

ADOLFO GUSTAVO SERRA SECA NETO: Obrigado.

ADOLFO GUSTAVO SERRA SECA NETO: Então vou ler aqui a do Geraldo Demário.

ADOLFO GUSTAVO SERRA SECA NETO: Ele falou dentre as 176, né?

ADOLFO GUSTAVO SERRA SECA NETO: Você tinha um slide lá com 176, eh teria algumas que são as mais recomendadas para aplicar em concorrência.

ADOLFO GUSTAVO SERRA SECA NETO: e eficiência geral.

Prof. Lucas Vegi: Entendi, cara.

Prof. Lucas Vegi: Ah, eh, como são 176 mapeamentos, dificilmente eu vou lembrar todos de cabeça nesse momento, mas o que eu já te adianto é que a gente tem alguns folds ms que são relacionados, por exemplo, a problemas eh Pr. acessos no Elixe.

Prof. Lucas Vegi: A gente tem, por exemplo, G Server Envy, a gente tem o Agent Obsession, né?

Prof. Lucas Vegi: A gente tem eh eh códigos eh que são organizados via processos desnecessariamente.

Prof. Lucas Vegi: Existem alguns SMELS entre aqueles 35 que são relacionados a aspectos de concorrência, tá?

Prof. Lucas Vegi: não me lembro quantos de cabeça para te falar agora, mas para o caso deles, naturalmente as remoções também são relacionadas a esses aspectos.

Prof. Lucas Vegi: Então, a partir do conhecimento dos dois catálogos, eh, basicamente essa pergunta se responde com sim, né?

Prof. Lucas Vegi: a gente tem, eu só não vou lembrar de cabeça para te falar quantos dos 176 são relacionados a esses smells que são a nível de processo no elixir, tá certo?

Prof. Lucas Vegi: Vou te dever um número, mas eles estão lá,

ADOLFO GUSTAVO SERRA SECA NETO: Mas isso tá tudo aberto no repositório.

ADOLFO GUSTAVO SERRA SECA NETO: Ja.

00:40:00

Prof. Lucas Vegi: tá tudo aberto no repositório.

ADOLFO GUSTAVO SERRA SECA NETO: Ja.

Prof. Lucas Vegi: E inclusive eh esse nosso trabalho, o último, esse do JCEP, ele é Open Science.

Prof. Lucas Vegi: Então qualquer um pode acessar, ler esse artigo sem nenhum paywall, enfim, os trabalhos da Empirical, infelizmente, né, eh, por questões que a gente não tem o controle, eles estão lá na Springer e tal, então tem o paywall, mas o trabalho que eu apresentei hoje,

Prof. Lucas Vegi: ele é aberto, qualquer um pode abrir, ler daqui a pouco.

Prof. Lucas Vegi: E tem os links repositórios, tá tudo lá bem destrinchado.

Prof. Lucas Vegi: Tem kits de replicação, inclusive muito detalhados, que permitem, inclusive, eventualmente pegar esse trabalho e replicar numa outra linguagem de

ADOLFO GUSTAVO SERRA SECA NETO: Joia.

ADOLFO GUSTAVO SERRA SECA NETO: Aí tem outra pergunta aqui,

Prof. Lucas Vegi: programação.

ADOLFO GUSTAVO SERRA SECA NETO: deixa eu ver.

ADOLFO GUSTAVO SERRA SECA NETO: do Fabrício da Silva Barroso.

ADOLFO GUSTAVO SERRA SECA NETO: No survey, todas as soluções eram possíveis ou tinha algumas refatorações dame para validar a resposta?

Prof. Lucas Vegi: Nada era dano.

Prof. Lucas Vegi: Todas as 176, eh, todos os 176 mapeamentos que a gente fez eram referentes a refatorações usadas para auxiliar na remoção de smell.

Prof. Lucas Vegi: Eu não sei se se eu interpretei bem a a a ideia de Dami, mas assim, existem alguns smells que eles não que que a sequência propostas para eles não tinha a intenção de 100% de remoção,

Prof. Lucas Vegi: mas sim numa ideia de de repente amenizar o problema que aquele SMMEL possuía.

Prof. Lucas Vegi: Tanto que o próprio Surve evidenciou isso, né?

Prof. Lucas Vegi: Eh, nem todos os SMELS tiveram média cinco de remoção com na validação, mas ao mesmo tempo a gente viu que mais da metade teve.

Prof. Lucas Vegi: Então sim, a gente entende que, embora nem todos os 35 sejam removidos 100% pelo que a gente propôs.

Prof. Lucas Vegi: Todos eles são pelo menos atenuados com as sequências que a gente propôs.

ADOLFO GUSTAVO SERRA SECA NETO: Aí tem a pergunta, opa, tá lá em aqui do Gregório Miranda.

Prof. Lucas Vegi: Olha,

ADOLFO GUSTAVO SERRA SECA NETO: Para quem está aprendendo elixir, paradigma funcional, faz sentido estudar sobre os codes mels desde já para cultivar boas práticas ou seria melhor acumular um pouco mais de quilometragem na linguagem primeiro?

ADOLFO GUSTAVO SERRA SECA NETO: M.

Prof. Lucas Vegi: interessante a pergunta.

Prof. Lucas Vegi: Eu acho que isso acaba e eh formas de aprendizado sempre podem variar de uma pessoa para outra, né?

Prof. Lucas Vegi: Nós como professores, né, Adulfo, a gente sabe que dificilmente uma mesma metodologia vai funcionar com com a mesma intensidade para todo mundo.

Prof. Lucas Vegi: Mas compartilhando a minha opinião para não ficar em cima do muro, eu acho que é uma boa ideia sim começar a estudar os smells juntamente com o estudo da linguagem.

Prof. Lucas Vegi: Tanto que os SMELS em especial eles fazem parte atualmente da documentação oficial do Elix, né?

Prof. Lucas Vegi: Parte do nosso catálogo.

Prof. Lucas Vegi: Hoje estão lá na na documentação da linguagem.

Prof. Lucas Vegi: Exatamente.

Prof. Lucas Vegi: Porque o cortinho da linguagem entendeu que é uma boa forma de aprender a linguagem e estudar os smels, até porque você já vai aprender de uma maneira correta, né?

Prof. Lucas Vegi: Você já vai aprender sem gerar vícios que você vai ter que eliminar depois.

Prof. Lucas Vegi: Mas enfim, é uma questão de preferência, né?

ADOLFO GUSTAVO SERRA SECA NETO: Pronto.

ADOLFO GUSTAVO SERRA SECA NETO: Agora deixa eu ver a próxima é do Fabrício da Silva Barroso.

Prof. Lucas Vegi: Olha,

ADOLFO GUSTAVO SERRA SECA NETO: Lucas, você entende que existe a possibilidade de estender este método, entre aspas, para o paradigma de programação imperativa estruturada?

ADOLFO GUSTAVO SERRA SECA NETO: Yeah.

Prof. Lucas Vegi: eh, qualquer tipo de pergunta que for relacionado a a a paradigmas diferentes, né?

Prof. Lucas Vegi: Vamos colocar essa essa pergunta de uma forma inversa, tá?

Prof. Lucas Vegi: Vamos pegar paradigma o que é mainstream.

Prof. Lucas Vegi: Vamos supor que a pergunta dele fosse essa, né?

Prof. Lucas Vegi: Lucas, você acha que se eu pegar o seu catálogo de elix e tentar aplicar ele lá para Java, né?

Prof. Lucas Vegi: Tentar aplicar ele lá para para C#ARP, será que vai fazer sentido?

Prof. Lucas Vegi: Algumas coisas sim, outras não, porque vai depender muito dos recursos envolvidos nos problemas gerados.

Prof. Lucas Vegi: Por exemplo, se você for for smell que a causa dele tá relacionada ao uso excessivo de casamento de padrões, possivelmente você não vai aplicar pro paradigma que não tem isso.

Prof. Lucas Vegi: Da mesma forma que os smells do Fler que envolviam herança não fazem sentido pra gente aqui em elix.

Prof. Lucas Vegi: Então a resposta é muito nesse nessa direção, sabe?

Prof. Lucas Vegi: Vai depender de qual tipo de problema aquelesmel tá documentando para saber se ele vai fazer sentido em outro paradigma ou não.

ADOLFO GUSTAVO SERRA SECA NETO: E aqui tem mais uma.

ADOLFO GUSTAVO SERRA SECA NETO: Ah, eu só ia complementar sobre isso que assim Enfim, a gente sabe que existe muita pesquisa sobre ensino em em computação, em adequação para eu não sei você, mas eu não consigo ler tudo que o pessoal publica, né?

00:45:00

Prof. Lucas Vegi: Ah, sem dúvida.

ADOLFO GUSTAVO SERRA SECA NETO: Né?

Prof. Lucas Vegi: Não dá.

ADOLFO GUSTAVO SERRA SECA NETO: Então, talvez fosse bom ter um podcast Fronteiras da Educação em Computação para pra gente poder se atualizar sobre as coisas sem precisar assistir, ler todos os artigos.

ADOLFO GUSTAVO SERRA SECA NETO: A pergunta do Sérgio Andrew Farias é: se você tivesse que escolher três smells desse catálogo para ensinar para quem tá começando a elixir, quais seriam, por exemplo,

Prof. Lucas Vegi: Interessante.

Prof. Lucas Vegi: Posso abrir o catálogo?

Prof. Lucas Vegi: Vou abrir o catálogo aqui,

ADOLFO GUSTAVO SERRA SECA NETO: pode claro.

Prof. Lucas Vegi: tá?

ADOLFO GUSTAVO SERRA SECA NETO: Oh.

Prof. Lucas Vegi: Ó, vou vou tirar compartilhamento de tela.

Prof. Lucas Vegi: Vou abrir meu catálogo aqui de smells que vai ser mais fácil até eu ilustrando lá, mostrando eles.

Prof. Lucas Vegi: Prontinho.

Prof. Lucas Vegi: Vou compartilhar com vocês aqui novamente.

Prof. Lucas Vegi: Deixa eu tentar dar um zoom nisso.

Prof. Lucas Vegi: Vocês estão vendo o catálogo de Codes Mels aí?

Prof. Lucas Vegi: Não tão?

ADOLFO GUSTAVO SERRA SECA NETO: Sim. M.

Prof. Lucas Vegi: Esse aqui é o nosso repositório lá no no GitHub, tá?

Prof. Lucas Vegi: Ele tem exemplos de código e tudo mais.

Prof. Lucas Vegi: Então o o catálogo ele é dividido em três categorias, né?

Prof. Lucas Vegi: Você tem os design related smells, os low level concerns e os traditional.

Prof. Lucas Vegi: Basicamente os o os traditional são os smells lá do Fler que fazem sentido aqui também.

Prof. Lucas Vegi: Quando a gente tá falando de design related, a gente tá falando daqueles smells de uma granularidade maior, ou seja, a gente tá falando de problemas de qualidade interna de código que às vezes são espalhados por mais de um módulo diferente,

Prof. Lucas Vegi: né?

Prof. Lucas Vegi: Envolvem treixos de códigos maiores, são smells mais a nível de design, arquitetura.

Prof. Lucas Vegi: Quando a gente fala do low level concern, a gente tá falando de smelt de granularidade pequenininha, né?

Prof. Lucas Vegi: São problemas que às vezes estão ocorrendo dentro de uma função específica de um módulo.

Prof. Lucas Vegi: Então assim, é muito difícil dentro desse universo de 35 eu rapidamente assim cravar quais que seriam o o os três melhores.

Prof. Lucas Vegi: Mas eu poderia dar essa resposta de forma quantitativa e inclusive recomendando a leitura do nosso artigo lá.

Prof. Lucas Vegi: Que que acontece?

Prof. Lucas Vegi: Yeah.

Prof. Lucas Vegi: Lá no nosso artigo de SMS que foi publicado na Empirical, a gente perguntou para um grupo de 181 ou 182 desenvolvedores, se eu não me engano, foi um um survey bem robusto, eh, para cada um desses smells, qual que é o nível de prevalência e qual que é o nível de relevância deles?

Prof. Lucas Vegi: Quanto maior o nível de prevalência, significa que, na visão dos desenvolvedores, mais comum é eu encontrar aqueles mel em produção.

Prof. Lucas Vegi: Quanto maior a relevância, significa que na percepção dos desenvolvedores, piores são os danos criados pel aquele smell quando ele tá presente na sua colde.

Prof. Lucas Vegi: Então, eu diria que pra gente escolher três, a gente teria que olhar essas métricas, tá?

Prof. Lucas Vegi: Eu diria que se você quer eh se você tá eh preocupado em aprender rapidamente os smells que possivelmente você vai encontrar com mais frequência fazendo code review, né, eu estudaria os três smells que t maior nível de prevalência,

Prof. Lucas Vegi: porque aí rapidamente você ia poder, quando revisar os seus códigos, encontrar e melhorar aquela questão.

Prof. Lucas Vegi: Já que eles são tão comuns, possivelmente você vai achar mais facilmente fazendo um cover.

Prof. Lucas Vegi: Concorda comigo, Lucas?

Prof. Lucas Vegi: Quais são os três smells que têm o os maiores níveis de prevalência?

Prof. Lucas Vegi: Desculpa, pessoal, não lembro de cabeça.

Prof. Lucas Vegi: Lá no artigo tem, né?

Prof. Lucas Vegi: Agora, se a sua preocupação não é exatamente em code review, mas assim, eu não quero ter no meu código os smells que causam os piores problemas, que causam as piores dores, estudam os trê, estudem os três smells que têm os maiores níveis de relevância.

Prof. Lucas Vegi: Lá no nosso paper, a gente inclusive quantificou quais são os smells que t as maiores médias de prevalência e relevância e responde exatamente essa pergunta dos 35, quais eu deveria estudar primeiro, considerando essas métricas aí?

Prof. Lucas Vegi: A gente tem isso respondido no paper.

Prof. Lucas Vegi: Infelizmente, como não é nesse da JCEP, é da Empirical e já se foram aí 2, 3 anos, fugiu da minha cabeça, mas tá lá no trabalho.

00:50:00

ADOLFO GUSTAVO SERRA SECA NETO: Aí tem a o Geraldo escreveu aqui pattern matching e bin ou outro setup.

ADOLFO GUSTAVO SERRA SECA NETO: Não entendi, Geraldo, mas se quiser explicar aí.

ADOLFO GUSTAVO SERRA SECA NETO: Eu tenho perguntas aqui.

ADOLFO GUSTAVO SERRA SECA NETO: Eh, ah, primeiro lugar lembrar, né?

ADOLFO GUSTAVO SERRA SECA NETO: Né Lucas foi assim, você e o Marco Túlio estiveram no Alestra em Foco, depois você esteve no Fronteiras de Engenheira de Software e aí o Gabriel esteve, deixa eu fechar a porta aqui, começou a chover bastante aqui em Curitiba.

ADOLFO GUSTAVO SERRA SECA NETO: O Gabriel esteve no Elxir em Foco falando sobre o Refactor, né,

Prof. Lucas Vegi: Exato.

ADOLFO GUSTAVO SERRA SECA NETO: que foi apresentado no S4F.

ADOLFO GUSTAVO SERRA SECA NETO: Então tem três episódios aí pro pessoal da turma aí.

Prof. Lucas Vegi: Ah.

ADOLFO GUSTAVO SERRA SECA NETO: assistir, escutar.

ADOLFO GUSTAVO SERRA SECA NETO: tão disponíveis tanto no YouTube quanto no Spotify.

ADOLFO GUSTAVO SERRA SECA NETO: E que que eu ia falar?

ADOLFO GUSTAVO SERRA SECA NETO: Ah, assim, o Gabriel ainda tá trabalhando na ingresse.

ADOLFO GUSTAVO SERRA SECA NETO: Sabe

Prof. Lucas Vegi: Eu acho que tá assim, Adolfo.

ADOLFO GUSTAVO SERRA SECA NETO: dizer?

Prof. Lucas Vegi: Tem eh não vou te afirmar com 100% de certeza, mas eu acho que tá.

Prof. Lucas Vegi: O Gabriel ele é ele é ele não é muito adepto às redes sociais, então a gente não fica tão ciente de algumas eh de algumas atualizações de carreira dele.

Prof. Lucas Vegi: Mas a última informação que eu tive é que ele tava na na Ingresse como como Tech.

ADOLFO GUSTAVO SERRA SECA NETO: é que a a Grécia é tidida aí como a maior tiqueteira do Brasil.

ADOLFO GUSTAVO SERRA SECA NETO: Não sei se ainda é, provavelmente ainda é, né?

ADOLFO GUSTAVO SERRA SECA NETO: vende ingresso para show, para um monte de coisa e e usava a lixia em produção.

ADOLFO GUSTAVO SERRA SECA NETO: Ele falou na no episódio que usava lix produção.

ADOLFO GUSTAVO SERRA SECA NETO: Inclusive, eu acho que a gente até ficou de marcar um episódio só sobre para ele falar só sobre isso aí, mas acabou não marcando ainda.

ADOLFO GUSTAVO SERRA SECA NETO: Depois a gente marca.

ADOLFO GUSTAVO SERRA SECA NETO: Eh, aí eu fiquei curioso também, assim, é uma bobagem, mas é uma curiosidade, porque você publicou dois artigos na Empirical Soft Engineering e aí depois esse terceiro aí foi no JP.

ADOLFO GUSTAVO SERRA SECA NETO: Por quê?

ADOLFO GUSTAVO SERRA SECA NETO: se é que tem alguma razão assim ou se foi só vamos assim

Prof. Lucas Vegi: Tem, tem, não tem.

Prof. Lucas Vegi: E e eu vou ser bem pragmático assim, é relacionado à metodologia.

Prof. Lucas Vegi: Que que acontece?

Prof. Lucas Vegi: O, os surveys que a gente conseguiu realizar pro catálogo de smells e pro catálogo de refatorações, eles foram muito mais robustos a nível de adesão, né?

Prof. Lucas Vegi: o o vai me fugir os números exatos, mas o desmedores avaliando eh de algumas dezenas de países diferentes, né?

Prof. Lucas Vegi: E e se eu não me engano o de refatorações teve na casa de 150 140 eh desenvolvedores, acho que de mais de 40 países diferentes, assim, é uma amostra muito diversificada.

Prof. Lucas Vegi: Só que a validação desse mapeamento que a gente fez, ela era muito mais custosa, né?

Prof. Lucas Vegi: Muito mais demorada, porque envolvia muito mais coisa, né?

Prof. Lucas Vegi: Uma coisa é você validar 35 smells, outra coisa é você validar 82 refatorações, já era mais difícil, e outra você é você validar 176 relacionamentos.

Prof. Lucas Vegi: Então, a gente não conseguiu uma quantidade tão grande de revisores assim, né, de avaliadores.

Prof. Lucas Vegi: Então, a gente ficou com receio de que na Empirical eh isso não fosse visto com bons óleos.

Prof. Lucas Vegi: Então, a gente optou por uma revista que tem inclusive um qualis um pouco menor, mas é uma ótima revista, né?

ADOLFO GUSTAVO SERRA SECA NETO: Ainda tá lá em A1, A4,

Prof. Lucas Vegi: Exatamente.

Prof. Lucas Vegi: É porque quando a gente fala de empirical software engineering,

ADOLFO GUSTAVO SERRA SECA NETO: né?

Prof. Lucas Vegi: a gente tá falando de top três engenharia de software, né?

Prof. Lucas Vegi: o Jep não tá exatamente no mesmo patamar, embora seja uma um um ótimo eh um um ótimo periódico, mas foi muito por esse sentido,

ADOLFO GUSTAVO SERRA SECA NETO: Ja.

Prof. Lucas Vegi: é um pouco de receio de que a metodologia não fosse suficiente para a aprovação no

ADOLFO GUSTAVO SERRA SECA NETO: É, e aí fica assim pro pessoal que que é aluno regular o especial do

Prof. Lucas Vegi: empírico.

ADOLFO GUSTAVO SERRA SECA NETO: mestrado ou que quer virar aluno regular especial do mestrado, né?

ADOLFO GUSTAVO SERRA SECA NETO: Se vocês conseguirem no final do mestrado de vocês publicar num empirical, num JEP, tá tá de ótimo tamanho, né?

ADOLFO GUSTAVO SERRA SECA NETO: Não,

Prof. Lucas Vegi: Sim.

ADOLFO GUSTAVO SERRA SECA NETO: e foi foi uma curiosidade, mas são dois ótimas.

Prof. Lucas Vegi: É isso.

Prof. Lucas Vegi: E e na verdade é até legal, já que você tá falando pros alunos de pós, a gente pode compartilhar algumas decisões estratégicas que às vezes a gente tem que tomar na pós-graduação.

Prof. Lucas Vegi: Por exemplo, quando você submete um paper para um periódico, seja ele qual for, o processo nunca é rápido, né?

Prof. Lucas Vegi: Às vezes um paper vai demorar mais de um ano, né, para passar por todo o processo de revisão até a sua publicação entre a submissão e e a aplicação.

Prof. Lucas Vegi: Imagina que esse processo que dure um ano, que seja, no final, ele tem um resultado negativo.

Prof. Lucas Vegi: É bem complicado quando você tem o compromisso de entregar um paper publicado num intervalo de tempo menor.

00:55:00

Prof. Lucas Vegi: Então, às vezes, você tem que optar por arriscar menos, né, que foi mais ou menos o que a gente fez para esse paper aí.

Prof. Lucas Vegi: Embora na minha opinião eles ele seja dentro desse dessa trilogia aí, ele seja tão importante quanto os dois anteriores.

ADOLFO GUSTAVO SERRA SECA NETO: Maravilha.

ADOLFO GUSTAVO SERRA SECA NETO: E eu tenho uma pergunta aqui mais filosófica que especulativa.

ADOLFO GUSTAVO SERRA SECA NETO: Talvez filosófica não seja o melhor termo, especulativa, porque assim, a gente tá escutando muito essa coisa aí de iá iá.

ADOLFO GUSTAVO SERRA SECA NETO: E assim, algumas pessoas falam tranquila, com tranquilidade que não leem mais o código, né?

ADOLFO GUSTAVO SERRA SECA NETO: E eu sinto que todo esse seu trabalho tá baseado em alguém lendo o código, né?

ADOLFO GUSTAVO SERRA SECA NETO: Em alguém.

ADOLFO GUSTAVO SERRA SECA NETO: Então, como é que como é que seria qual seria o impacto dos seus resultados no mundo em que pode acontecer as pessoas não leiam mais, nem entendam o código gerado por um Oiar?

Prof. Lucas Vegi: Sua pergunta é muito legal, Adolfo.

Prof. Lucas Vegi: É, é engraçado que quando a gente conduziu a pesquisa, que talvez e talvez a parte do público não saibam, mas esses trabalhos eles ocorreram no contexto de um doutorado, né?

Prof. Lucas Vegi: A a tese, inclusive, ela foi premiada no ano passado no no CBST e mas em nenhum momento na tese a gente tocou em IA.

Prof. Lucas Vegi: E não é porque a gente é contra IA ou coisa nesse sentido, é porque a nossa metodologia não pediu IA, né?

Prof. Lucas Vegi: Mas é interessante que mesmo sem a gente ter a menor preocupação com o IA ao longo do processo metodológico, eu entendo que ela é mais importante hoje no contexto de a do que ela era quando ela começou, que as LLMs não eram tão mainstream como hoje.

Prof. Lucas Vegi: A pesquisa começou em 2021, né?

Prof. Lucas Vegi: O Bom das LLMs foi 2022 paraa frente, basicamente.

Prof. Lucas Vegi: Por que que eu falo isso?

Prof. Lucas Vegi: Vamos supor que você tá trabal, que você tá programando com agentes, né?

Prof. Lucas Vegi: você tá num numa pipeline automatizada de desenvolvimento ou e colocar código em produção.

Prof. Lucas Vegi: Poxa, eu entendo que por mais que você não esteja construindo o seu código, você gostaria que aquele código tivesse qualidade, porque eventualmente você não tá criando, mas em algum momento na hora de manutenir você vai ter que trabalhar.

Prof. Lucas Vegi: Não tem a figura do desenvolvedor, ela tá longe de ser abolida do processo de desenvolvimento de software.

Prof. Lucas Vegi: O engenheiro de software hoje ele é cada vez mais importante.

Prof. Lucas Vegi: Então, se a gente pega, por exemplo, o conceito de hag, né, que para quem tá familiarizado com ll, hag, basicamente é quando você dá o seu próprio eh vocês estão me ouvindo?

ADOLFO GUSTAVO SERRA SECA NETO: Sim, sim.

ADOLFO GUSTAVO SERRA SECA NETO: Eu só tirei a sua sua tela aqui para para ajudar.

Prof. Lucas Vegi: Ah, beleza.

Prof. Lucas Vegi: Tá.

Prof. Lucas Vegi: Não, beleza.

Prof. Lucas Vegi: Eh, quando eu me perdi aqui no meu raciocínio.

Prof. Lucas Vegi: Ah, tá.

Prof. Lucas Vegi: Tava falando de hag, né?

Prof. Lucas Vegi: Quando você tá falando de hag, basicamente quando você tá usando um LLM e você coloca eh contexto maior específico seu para direcionar a resposta da LLM, né, pro pro seu molde ali, pro seu ecossistema, você tá trabalhando com Hag,

Prof. Lucas Vegi: né, dando uma explicação muito superficial do que que é Rag no seu especialista, tá?

Prof. Lucas Vegi: Mas vamos lá.

Prof. Lucas Vegi: Você quer construir um código sem smells, você pode pegar eventualmente esse markd aqui do nosso GitHub, por exemplo, passar para Llm e falar: “Olha, eu não quero que os meus códigos tenha esses smells aqui, construa algo sem isso”.

Prof. Lucas Vegi: Então assim, essa esse aspecto intelectual que depende de humano, que foi criado por nós, hoje pode direcionar o trabalho de um LLM na geração de código.

Prof. Lucas Vegi: Inclusive a gente tem trabalhos aqui em andamento nesse sentido na UFV, né?

Prof. Lucas Vegi: Mas eu entendo que que é super

ADOLFO GUSTAVO SERRA SECA NETO: É,

Prof. Lucas Vegi: importante.

ADOLFO GUSTAVO SERRA SECA NETO: aproveitando, já que você falou do trabalho de andamento, você teve três artigos, não foi isso?

ADOLFO GUSTAVO SERRA SECA NETO: No junto com os colaboradores aí da UFV, da UFCG, no S for FP.

ADOLFO GUSTAVO SERRA SECA NETO: Você quer falar um pouco sobre eles?

Prof. Lucas Vegi: Na verdade, cinco.

ADOLFO GUSTAVO SERRA SECA NETO: Sim. Não. A Mas três no S for FP ou cinco no S?

Prof. Lucas Vegi: Sim, cinco no S for FP.

ADOLFO GUSTAVO SERRA SECA NETO: Ah, que teve também não vem, né?

ADOLFO GUSTAVO SERRA SECA NETO: Ou não?

Prof. Lucas Vegi: Não, não vem não.

Prof. Lucas Vegi: Não, não vem.

ADOLFO GUSTAVO SERRA SECA NETO: Ah,

Prof. Lucas Vegi: eu nem podia submeter por conta de de ser picer,

ADOLFO GUSTAVO SERRA SECA NETO: ah, vem.

Prof. Lucas Vegi: enfim,

ADOLFO GUSTAVO SERRA SECA NETO: Certo?

Prof. Lucas Vegi: eh eu não poderia, mas eu eu posso adiantar algumas coisas, tá?

Prof. Lucas Vegi: A gente teve dois trabalhos na trilha de indústria lá do SFP, um do Mateus, o outro do Ricardo.

Prof. Lucas Vegi: Basicamente a gente tem uma empresa parceira eh que é do Parque Tecnológico aqui da Universidade Federal de Viçosa.

Prof. Lucas Vegi: Eles têm como sistema chave um sistema que produto principal, um sistema que se chama Carry S. né, que é um um uma ferramenta para suporte a home care.

Prof. Lucas Vegi: Que que é home care, né?

Prof. Lucas Vegi: Imagina que você tem uma pessoa doente, acamada, com cuidados especiais em casa, precisa de uma equipe multidisciplinar, né?

01:00:00

Prof. Lucas Vegi: Enfermeiro, médico, fisioterapeuta.

Prof. Lucas Vegi: Esse sistema ele serve para gerir esse tipo de equipe, tá?

Prof. Lucas Vegi: Esse sistema deles hoje ele tem tanto o front web quanto o front mobile e ele é todo map e ele é todo baseado numa stack JavaScript, né?

Prof. Lucas Vegi: A parte web deles, né?

Prof. Lucas Vegi: O front end é em viewjs, o back end é em node e o aplicativo mobile deles eh é desenvolvido em React Native, que é baseado em JavaScript também, tá?

Prof. Lucas Vegi: Então, no trabalho do Ricardo, basicamente a gente pegou a parte web do carry e fizemos um um estudo quantitativo para apoio à tomada de decisão a eventual migração tecnológica.

Prof. Lucas Vegi: Então, hoje o carry ele é em JavaScript.

Prof. Lucas Vegi: Se a Medias quiser migrar para Elixer, vale a pena.

Prof. Lucas Vegi: Essa é a pergunta que a gente queria responder.

Prof. Lucas Vegi: Então, basicamente a gente reimplementou parte do sistema deles em Elix e Phoenix.

Prof. Lucas Vegi: Realizamos uma série de testes benchmarks que depois a gente explica melhor lá no evento.

Prof. Lucas Vegi: E a gente teve dados quantitativos que dão apoio a essa tomada de decisão.

Prof. Lucas Vegi: Já adianto que a resposta é positiva.

Prof. Lucas Vegi: Sim. Se a MEDS quiser migrar lá pro Elix, só em em AWS, ela poderia economizar em em dinheiro algo na casa de 70% do que eles gastam atualmente.

Prof. Lucas Vegi: Já no caso do mobile, né, a gente teve alguns tradeoffs, tá?

Prof. Lucas Vegi: Em alguns aspectos, o aplicativo híbrido ele saiu melhor.

Prof. Lucas Vegi: Em outros aspectos, o aplicativo, os aplicativos nativos reimplementados em Cotlin e Swift, né, que são tem uma influência funcional muito grande, eram melhores também e que, enfim, poderiam justificar eh essa migração.

Prof. Lucas Vegi: Então, dois trabalhos eram nessa linha da da trilha da indústria, tá, de apoio à à tomada de decisão.

Prof. Lucas Vegi: Outros dois trabalhos que estão na trilha de pesquisa são relacionados a formas de detecção de Cold Melse.

Prof. Lucas Vegi: Um desses trabalhos é do outro Mateus, aluno de IC meu aqui da UFV, que é baseado no uso de LLM.

Prof. Lucas Vegi: Então a gente fez o um estudo de uso de de LLMs open weight para detectar automaticamente os smells que que a gente documentou.

Prof. Lucas Vegi: catalogou.

Prof. Lucas Vegi: Inclusive, para treinar essas IAS, a gente usou o nosso catálogo, usou HAG, fez o que eu tava explicando aqui.

Prof. Lucas Vegi: Uma das partes do processo foi essa.

Prof. Lucas Vegi: Já o trabalho do Eric, que é que é aluno de mestrado do Marco Túlio lá na UFMG, eu cooriento ele, ele é meu exaluno aqui da UFV, também é para detecção de CODS Melsém o uso de LLM, o trabalho dele é é baseado Ja.

Prof. Lucas Vegi: em análise estática de código, métricas, predicados, porque a gente acredita, na verdade, que a gente vai caminhar para uma abordagem de detecção automática híbrida em algum momento.

Prof. Lucas Vegi: A gente deve misturar LM com métrica, enfim, a gente tá caminhando para isso.

Prof. Lucas Vegi: E o nosso quinto trabalho é em parceria com o João Brunet lá da Federal de Campina Grande, que é o catálogo de Colds Mels para Closure, né?

Prof. Lucas Vegi: Basicamente o o a criação desse catálogo, ela replicou a metodologia que a gente usou para criação do catálogo de Elixe e a gente teve alguma participação lá muito nesse sentido.

Prof. Lucas Vegi: Então, enfim, eh, a gente tem a satisfação de de ter o grupo de pesquisa participando com força lá no evento esse ano e a gente acredita que a tendência é que aumente, porque o grupo tá só aumentando.

ADOLFO GUSTAVO SERRA SECA NETO: E eu já falei aqui pros alunos, seria muito interessante que eu que eles estivessem no ano que vem lá apresentando trabalhos, né?

ADOLFO GUSTAVO SERRA SECA NETO: Eh, o eu parei de compartilhar, mas deixa eu compartilhar novamente, né?

ADOLFO GUSTAVO SERRA SECA NETO: Que o cadê aqui o Fernando Areias foi aluno aqui da disciplina de Introduction to Functional Programming.

ADOLFO GUSTAVO SERRA SECA NETO: Então ele tá com dois artigos aqui.

ADOLFO GUSTAVO SERRA SECA NETO: Cadê o segundo dele?

ADOLFO GUSTAVO SERRA SECA NETO: Mapeando a BIM.

ADOLFO GUSTAVO SERRA SECA NETO: tá fazendo mestrado agora com a gente, já já fez qualificação, tá tá nos finalmente aí e esse aqui foi em coautoria com a pessoa de outra instituição.

ADOLFO GUSTAVO SERRA SECA NETO: Então foi bem legal.

ADOLFO GUSTAVO SERRA SECA NETO: Eh, é isso.

ADOLFO GUSTAVO SERRA SECA NETO: Acho que muito bom, Lucas, se quiser fazer um Ah, o Geraldo quer quer falar alguma coisa.

GERALDO DEMARIO: Olá,

ADOLFO GUSTAVO SERRA SECA NETO: Se levar.

ADOLFO GUSTAVO SERRA SECA NETO: Ah.

GERALDO DEMARIO: professor Luca.

Prof. Lucas Vegi: Tudo bem,

GERALDO DEMARIO: Complementar a pergunta, eu citei ali a além da da linguagem eleir, o padrão funcional, né, permett, a máquina virtual be, eh, as bibliotecas.

01:05:00

GERALDO DEMARIO: Você teria algum setup para construção até o deploy, um pipeline, além de usar o fênix, que já foi comentado, eh, cowboy, alguma outra ferramenta, nerv, um pytline completo.

Prof. Lucas Vegi: Eh,

GERALDO DEMARIO: Oh.

Prof. Lucas Vegi: Geraldo, não sei se eu entendi exatamente a a sua pergunta.

Prof. Lucas Vegi: Esse pipeline completo envolvendo o ecossistema Elix, ele seria para qual finalidade?

Prof. Lucas Vegi: Para desenvolvimento que você diz?

GERALDO DEMARIO: Sim, sim.

GERALDO DEMARIO: para construção e deploy de um de um software.

GERALDO DEMARIO: Oh.

Prof. Lucas Vegi: Entendi.

Prof. Lucas Vegi: Olha, isso vai depender muito do objetivo do seu software.

Prof. Lucas Vegi: Por exemplo, você tá desenvolvendo um sistema web, né?

Prof. Lucas Vegi: Esse pipeline fatalmente vai usar o Phoenix ou o Ash, que são os dois principais frameworks para elixe hoje em dia.

Prof. Lucas Vegi: dentro do Phoenix, por exemplo, você tem o ecto que você citou, que que é basicamente o que faz a camada de persistência no desenvolvimento para elix, né?

Prof. Lucas Vegi: Quando a gente fala de orientação objeto, a gente usa o termo ORM, né?

Prof. Lucas Vegi: Mapeamento objeto relacional.

Prof. Lucas Vegi: E tem algumas tecnologias eh que fazem isso, né?

Prof. Lucas Vegi: Tipo Spring para Java, dentre outras coisas.

Prof. Lucas Vegi: O ecto, como a gente tá falando de uma linguagem que não é orientada a objeto, a gente não vai fazer o RM, mas é o mais próximo disso que você pode imaginar.

Prof. Lucas Vegi: Octeia no SGBD e as camadas que ficam dali para cima, não precisa se preocupar com qual SGBD você tá trabalhando.

Prof. Lucas Vegi: Se você quiser mudar o SGBD depois, o resto do seu código tá funcionando.

Prof. Lucas Vegi: E o Phoenix, ele tem o Live View para você fazer front end.

Prof. Lucas Vegi: Você consegue desenvolver um sistema full stack web usando apenas o Phoenix, tá?

Prof. Lucas Vegi: Front end, back end.

Prof. Lucas Vegi: Se você pode desenvolver, por exemplo, software embarcado, o Elixir tem no ecossistema o Nerves, por exemplo, né, que que são outras bibliotecas para para esse sentido e tal, vale a pena dar uma pesquisada.

Prof. Lucas Vegi: Se você quiser desenvolver aplicativo móvel hoje em dia usando Elix, tem tecnologia para isso, para desenvolvimento híbrido.

Prof. Lucas Vegi: Da mesma forma que a gente tem Flutter, da mesma forma que você tem React Native, se você quiser desenvolver em Elix, você tem o o Live View Native, que foi descontinuado, mas ainda pode ser usado, e o Mob,

Prof. Lucas Vegi: que é uma biblioteca muito promissora, que inclusive tem um aluno meu que tá começando uma pesquisa com o MOB nessa semana, tá?

Prof. Lucas Vegi: a gente tá avaliando a capacidade dele para pôr o sistema em produção hoje em dia com um certo nível de maturidade.

Prof. Lucas Vegi: E você tem o Enex lá do Paulo Valente, né, Adolfo, que que é mais para quem tá lidando com machine learning.

Prof. Lucas Vegi: O ecossistema do Elix ele é muito robusto, então dificilmente eu vou conseguir te falar um único pipeline aqui.

Prof. Lucas Vegi: Vai depender do foco da aplicação que você tá desenvolvendo, mas se quiser desenvolver usando Elix, o que não falta é tecnologia.

Prof. Lucas Vegi: comunidade é muito ativa.

GERALDO DEMARIO: Sim, claro.

GERALDO DEMARIO: Tranquilo.

Prof. Lucas Vegi: respondido.

ADOLFO GUSTAVO SERRA SECA NETO: Joia.

ADOLFO GUSTAVO SERRA SECA NETO: Então, muito obrigado, Lucas.

ADOLFO GUSTAVO SERRA SECA NETO: Eu acho que para finalizar, só compartilhar aqui com o pessoal tiver assistindo ou vendo a gravação.

ADOLFO GUSTAVO SERRA SECA NETO: Talvez quem tiver vendo a gravação já seja tarde demais, mas nós estaremos aqui no dia 8 de setembro aqui.

ADOLFO GUSTAVO SERRA SECA NETO: Essa aqui é a famosa ponte estaiada, né, da da de São Paulo.

Prof. Lucas Vegi: Isso

ADOLFO GUSTAVO SERRA SECA NETO: O o essa aqui é a Praça do Relógio na USP mesmo.

ADOLFO GUSTAVO SERRA SECA NETO: E aqui, esse aqui eu não sei, olhando de cima, eu não sei se isso aqui é o IM USP.

Prof. Lucas Vegi: é o M. É o M.

ADOLFO GUSTAVO SERRA SECA NETO: É,

Prof. Lucas Vegi: Esse aí é o I.

ADOLFO GUSTAVO SERRA SECA NETO: então o esse aqui do lado, qual que é?

ADOLFO GUSTAVO SERRA SECA NETO: Eu não lembro.

Prof. Lucas Vegi: Aí você me apertou.

Prof. Lucas Vegi: Será que é a FAL?

Prof. Lucas Vegi: Aí eu não

ADOLFO GUSTAVO SERRA SECA NETO: É que a F é do lado esquerdo,

Prof. Lucas Vegi: sei,

ADOLFO GUSTAVO SERRA SECA NETO: mas eu não sei se a falta é de frente ou de trás.

ADOLFO GUSTAVO SERRA SECA NETO: E é, eu tô perdido aqui,

Prof. Lucas Vegi: mas esse central aí,

ADOLFO GUSTAVO SERRA SECA NETO: talvez.

Prof. Lucas Vegi: sem dúvida, é o do lado que eu não tenho certeza se é a FAL.

Prof. Lucas Vegi: It’s Se for, é aí que vai ser o credenciamento do

ADOLFO GUSTAVO SERRA SECA NETO: É,

Prof. Lucas Vegi: CBSoft.

ADOLFO GUSTAVO SERRA SECA NETO: mas eu tô vendo que tá por trás aqui.

ADOLFO GUSTAVO SERRA SECA NETO: Eu normalmente entrava aqui pela frente, então não sei.

ADOLFO GUSTAVO SERRA SECA NETO: Mas enfim, eh, quem quiser se inscrever, tem aqui o link, ó, tem aqui o link de Ué, tava.

ADOLFO GUSTAVO SERRA SECA NETO: Ah, acho que tá na primeira imagem, né?

Prof. Lucas Vegi: Isso.

ADOLFO GUSTAVO SERRA SECA NETO: Registration.

ADOLFO GUSTAVO SERRA SECA NETO: Aí ele vai pro pra página do CBST.

ADOLFO GUSTAVO SERRA SECA NETO: Inscrições, tem aqui os valores.

ADOLFO GUSTAVO SERRA SECA NETO: Estudante, por exemplo, já que a gente tem aqui estudante de pós-graduação associado a SBC, pagava 270 até dia 21 de agosto, agora é 340. É um preço bem bem razoável.

ADOLFO GUSTAVO SERRA SECA NETO: Tem os combos, né, de associação SBC, tem os preços para profissionais, enfim.

ADOLFO GUSTAVO SERRA SECA NETO: Então, nos vemos lá, Lucas.

ADOLFO GUSTAVO SERRA SECA NETO: Quem quem mais estiver lá, a gente se vê por lá.

Prof. Lucas Vegi: Eu que agradeço a oportunidade,

ADOLFO GUSTAVO SERRA SECA NETO: E é isso.

ADOLFO GUSTAVO SERRA SECA NETO: Obrigado, Lucas.

Prof. Lucas Vegi: Adolfo.

Prof. Lucas Vegi: Foi um prazer conversar com vocês e espero encontrá-los lá pelos corredores da do IM no nosso workshop.

01:10:00

Prof. Lucas Vegi: Um

ADOLFO GUSTAVO SERRA SECA NETO: Abraço.

ADOLFO GUSTAVO SERRA SECA NETO: É isso, pessoal.

Prof. Lucas Vegi: abraço.

ADOLFO GUSTAVO SERRA SECA NETO: Vou terminar a transmissão aqui no YouTube.

ADOLFO GUSTAVO SERRA SECA NETO: Tchau, pessoal do YouTube.

ADOLFO GUSTAVO SERRA SECA NETO: e vou terminar a gravação.