Comparação das linguagens Rust, Go e OpenMP na Implementação de Algoritmos Concorrentes e Paralelos
Resumo
Este artigo apresenta um projeto que realiza um estudo comparativo entre Rust, Go e OpenMP no contexto de programação paralela e concorrente. A pesquisa analisa a expressividade e o esforço de programação na implementação de algoritmos clássicos de concorrência. Utiliza-se a metodologia GQM (Goal Question Metric), que orienta a avaliação com base em objetivos, questões e métricas. Resultados preliminares indicam que Rust oferece segurança e controle, Go se destaca pela simplicidade e OpenMP pela facilidade na paralelização incremental. Essas conclusões podem auxiliar na escolha da linguagem conforme requisitos de desempenho, segurança e implementação.
Palavras-chave:
Algoritmos Paralelos e Distribuídos, Aplicações de Computação de Alto Desempenho em Ciências e Engenharias, Linguagens, Compiladores e Ferramentas para Alto Desempenho, Sistemas Operacionais
Referências
Basili, V. R., Caldiera, G., and Rombach, D. H. (1994). The Goal Question Metric Approach, volume I. John Wiley & Sons.
Dagum, L. and Menon, R. (1998). Openmp: An industry-standard api for shared-memory programming. IEEE Computational Science & Engineering, 5(1):46–55.
Lee, K., Song, H., Kim, J., and Ryu, S. (2020). Understanding real-world concurrency bugs in go. Proceedings of the ACM on Programming Languages, 4(OOPSLA):1–30.
Matsakis, N. D. and Klock, F. S. (2014). The Rust language. In Proc. of the 2014 ACM SIGAda An. Conf. on High Integrity Language Technology, pages 103–104.
Pankratius, V., Adl-Tabatabai, A.-R., and Garzaran, M. J. (2009). Software engineering for multicore systems: An experience report. IEEE Software, 26(6):20–29.
Togashi, N. and Klyuev, V. (2014). Concurrency in go and java: Performance analysis. In 2014 4th IEEE Inter. Conf. on Information Science and Technology.
Trobec, R., Slivnik, B., Bulic, P., and Robić, B. (2018). Programming multi-core and shared memory multiprocessors using openmp. In Introduction to Parallel Computing, Undergraduate Topics in Computer Science, pages 75–108. Springer, Cham.
Dagum, L. and Menon, R. (1998). Openmp: An industry-standard api for shared-memory programming. IEEE Computational Science & Engineering, 5(1):46–55.
Lee, K., Song, H., Kim, J., and Ryu, S. (2020). Understanding real-world concurrency bugs in go. Proceedings of the ACM on Programming Languages, 4(OOPSLA):1–30.
Matsakis, N. D. and Klock, F. S. (2014). The Rust language. In Proc. of the 2014 ACM SIGAda An. Conf. on High Integrity Language Technology, pages 103–104.
Pankratius, V., Adl-Tabatabai, A.-R., and Garzaran, M. J. (2009). Software engineering for multicore systems: An experience report. IEEE Software, 26(6):20–29.
Togashi, N. and Klyuev, V. (2014). Concurrency in go and java: Performance analysis. In 2014 4th IEEE Inter. Conf. on Information Science and Technology.
Trobec, R., Slivnik, B., Bulic, P., and Robić, B. (2018). Programming multi-core and shared memory multiprocessors using openmp. In Introduction to Parallel Computing, Undergraduate Topics in Computer Science, pages 75–108. Springer, Cham.
Publicado
23/04/2025
Como Citar
ARAUJO, Lucas Braatz; DU BOIS, André Rauber; CAVALHEIRO, Gerson Geraldo H..
Comparação das linguagens Rust, Go e OpenMP na Implementação de Algoritmos Concorrentes e Paralelos. In: ESCOLA REGIONAL DE ALTO DESEMPENHO DA REGIÃO SUL (ERAD-RS), 25. , 2025, Foz do Iguaçu/PR.
Anais [...].
Porto Alegre: Sociedade Brasileira de Computação,
2025
.
p. 117-120.
ISSN 2595-4164.
DOI: https://doi.org/10.5753/eradrs.2025.6798.
