Nome do Projeto
O triplo-e da programação concorrente e paralela: expressividade, eficácia e eficiência
Ênfase
Pesquisa
Data inicial - Data final
01/04/2024 - 31/03/2027
Unidade de Origem
Coordenador Atual
Área CNPq
Ciências Exatas e da Terra
Resumo
Expressividade, eficácia e eficiência são propriedades de linguagens e ferramentas de programação que refletem a forma como os programas são escritos, executados e mantidos. A medida em que novas tecnologias para exploração de concorrência e paralelismo são disponibilizadas por novas arquiteturas, tanto de processadores como de dispositivos aceleradores, recursos de programação são incorporados às linguagens de programação para que estes possam ser explorados. A questão que se coloca é o quão efetivamente estes recursos estão sendo utilizados, considerando um determinada aplicação ao qual o programador se responsabilizou, em relação às três propriedades elencadas.
Neste projeto, o objetivo a ser alcançado é categorizar os recursos para programação concorrente e paralela de diferentes ferramentas de programação em termos de suas propriedades no atendimento a diferentes classes de problemas. Estes resultados serão concretizados pela pontuação, segundo os critérios de caracterização a serem definidos e validados, os diferentes recursos para exposição da concorrência da aplicação, exploração do paralelismo do hardware e sincronização e comunicação entre as atividades do programa.
A aplicabilidade imediata dos resultados obtidos deverão promover um método seguro para seleção de ferramentas de programação, e mesmo de recursos de programação destas, para implementação de uma determinada aplicação. Também é esperado que o método elaborado para realizar a comparação entre as ferramentas de programação concorrente e paralela desenvolvido possa vir a ser empregado em outros contextos. Outras contribuições são também esperadas, tais como desenvolvimento de recursos humanos, produção de material didático, além de oferecer um portfólio de estudos de caso com as ferramentas consideradas do desenvolvimento das atividades.
O ponto de partida deverá ser a identificação das aplicações que efetivamente fazem uso de programação concorrente e dos níveis de paralelismo de hardware que deverão ser considerados. Serão buscadas, na literatura, estudos de caso que documentem implementações de software concorrente e/ou paralelo. Esta busca será expandida com buscas na Web para ampliar o espaço amostral, uma vez que não deve ser ignorada a hipótese de que registros válidos de estudos de caso realizados na indústria não façam parte da literatura científica e acadêmica. Como complemento a este levantamento serão realizadas buscas de implementações disponibilizadas em repositórios públicos de software, como no GitHub, assim como o levantamento de discussões em fóruns de desenvolvedores, como o Stack Overflow.
A metodologia de trabalho também envolverá, além dos próprios orientandos do proponente, estudantes de graduação, mestrado e doutorado dos cursos da área de Computação da UFPel. Tendo o objeto de estudo proposto neste projeto plena aderência às disciplinas ministradas pelo proponente, atividades pontuais virão a compor parte dos processos de formação, seja pelo fomento do debate em sala de aula, seja pela execução de trabalhos avaliativos.
Objetivo Geral
O principal objetivo a ser atingido, ao final dos 36 meses de execução do projeto, será materializado em método para categorização da usabilidade de ferramentas para programação concorrente e paralela. Este método consistirá em um mecanismo de pontuação sobre os recursos de programação oferecidos pelas ferramentas de programação caracterizando suas respectivas expressividade, eficácia e eficiência na descrição de determinados problemas. Tendo como estas três propriedades, expressividade, eficácia e eficiência como eixos de um gráfico tri-dimensional e considerando a origem deste gráfico as características de um determinado campo de aplicação, o posicionamento de uma determinada linguagem de programação neste gráfico informará sua potencialidade para descrever a aplicação em questão de acordo com as exigências de projeto elencadas.
Como objetivos secundários, é dado destaque a dois. O primeiro, no contexto científico, diz respeito à produção de um registro da evolução das ferramentas para programação concorrente e paralela e, eventualmente, considerada a proposição de uma nova taxonomia para a identificação dos modelos de paralelismo. No registro da evolução estará refletido como, nas diferentes ferramentas de programação, os diferentes recurso previstos para desenvolvimento de software concorrente ou paralelo foram/são efetivamente implementados e explorados nos estudos de caso. O segundo objetivo secundário alvo deste projeto, este no contexto de formação de recursos humanos, é o de qualificar a formação de novos profissionais habilitados ao uso efetivo das arquiteturas paralelas na produção de software.
Como objetivos secundários, é dado destaque a dois. O primeiro, no contexto científico, diz respeito à produção de um registro da evolução das ferramentas para programação concorrente e paralela e, eventualmente, considerada a proposição de uma nova taxonomia para a identificação dos modelos de paralelismo. No registro da evolução estará refletido como, nas diferentes ferramentas de programação, os diferentes recurso previstos para desenvolvimento de software concorrente ou paralelo foram/são efetivamente implementados e explorados nos estudos de caso. O segundo objetivo secundário alvo deste projeto, este no contexto de formação de recursos humanos, é o de qualificar a formação de novos profissionais habilitados ao uso efetivo das arquiteturas paralelas na produção de software.