Cuenta la frecuencia de las letras en textos usando computación paralela.
El paralelismo consiste en hacer en paralelo cosas que también se pueden hacer de forma secuencial. Un ejemplo común es contar la frecuencia de las letras. Usa el paralelismo para calcular la frecuencia total de cada letra en una lista de textos.
De acuerdo con esta terminología, deberías escribir un programa paralelo y determinista y (¡cómo no!) dejar que Scala se encargue del aspecto de la concurrencia. De lo contrario, tu código podría volverse rápidamente desordenado y propenso a errores, con todo tipo de bugs de concurrencia desagradables. En particular, tu programa podría volverse no determinista, lo que en la práctica significa: muy (de hecho, MUY) difícil de depurar, de probar y de razonar sobre él.
Dicho esto, podría ser buena idea escribir primero una solución secuencial (y usar la suite de pruebas para verificarla). Solo entonces deberías intentar paralelizarla, manteniendo las partes secuencial y paralela de tu código lo más separadas posible.
Una primera iteración podría ser usar las colecciones paralelas de Scala. Quizá te parezca que esto es casi demasiado simple (sobre todo si seguiste nuestro consejo y ya tienes una solución secuencial).
Para la segunda iteración, te recomendamos probar una solución con scala.concurrent.Future.
Puedes consultar este tutorial y su secuela para que te ayuden un poco.
Asegúrate de que
scala.concurrent.Future se usa en muchas bibliotecas y es la recomendación del doctor para la programación paralela y asíncrona en Scala.
Por eso es esencial para dominar el lenguaje y debería formar parte de tu arsenal de Scala.
Regístrate en Exercism para aprender y dominar Scala con 95 ejercicios y mentoría humana real, todo gratis.
Exploramos las diferencias entre concurrencia y paralelismo, viendo los distintos enfoques que adoptan lenguajes como JavaScript, Go, Elixir y Rust.