Cuenta la frecuencia de las letras en textos mediante computación en paralelo.
El paralelismo consiste en hacer en paralelo cosas que también se pueden hacer de forma secuencial. Un ejemplo habitual es contar la frecuencia de letras. Utiliza el paralelismo para calcular la frecuencia total de cada letra en una lista de textos.
Según 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 enseguida 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, probar y razonar.
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 consistir en usar las colecciones paralelas de Scala. Puede que te parezca casi demasiado sencillo (sobre todo si has seguido 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 continuación para que te sirvan de ayuda.
Asegúrate de que
scala.concurrent.Future se usa en muchas bibliotecas y es lo que el médico receta 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.