Conta a frequência das letras em textos recorrendo a computação paralela.
O paralelismo consiste em fazer em paralelo coisas que também podem ser feitas sequencialmente. Um exemplo comum é contar a frequência de letras. Usa o paralelismo para calcular a frequência total de cada letra numa lista de textos.
De acordo com esta terminologia, deves escrever um programa paralelo e determinístico e (sem dúvida!) deixar o Scala tratar do aspeto da concorrência. Caso contrário, o teu código pode rapidamente tornar-se confuso e propenso a erros com todo o tipo de bugs de concorrência desagradáveis. Em particular, o teu programa pode tornar-se indeterminístico, o que, na prática, significa: muito (na verdade, MUITO) difícil de depurar, testar e raciocinar sobre ele.
Dito isto, pode ser boa ideia escrever primeiro uma solução sequencial (e usar o conjunto de testes para a verificar). Só depois deves tentar paralelizá-la, mantendo as partes sequencial e paralela do teu código o mais separadas possível.
Uma primeira iteração pode ser usar as coleções paralelas do Scala. Podes achar que isto é quase demasiado simples (especialmente se seguiste o nosso conselho e já tens uma solução sequencial).
Para a segunda iteração, recomendamos que experimentes uma solução com scala.concurrent.Future.
Podes consultar este tutorial e a sua continuação para obteres alguma ajuda.
Certifica-te de que
scala.concurrent.Future é usado em muitas bibliotecas e é o conselho do médico para a programação paralela e assíncrona em Scala.
Por isso, é essencial para dominares a linguagem e deve tornar-se parte do teu arsenal Scala.
Inscreve-te no Exercism para aprenderes e dominares Scala com 95 exercícios, e mentoria humana real, tudo grátis.
Exploramos as diferenças entre concorrência e paralelismo, analisando as diferentes abordagens adotadas por linguagens como JavaScript, Go, Elixir e Rust.