Tracks
/
Go
Go
/
Ejercicios
/
Frecuencia de letras en paralelo
Frecuencia de letras en paralelo

Frecuencia de letras en paralelo

Intermedia

Instrucciones

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.

Concurrencia frente a paralelismo

Go admite la concurrencia mediante «goroutines», que se inician con la palabra clave go. Es una forma simple, liviana y elegante de dar soporte a la concurrencia, y una de las mayores fortalezas del lenguaje.

Notarás que, aunque este ejercicio se llama Frecuencia de letras en paralelo, no verás el término «Parallel» muy seguido en Go. Los Gophers prefieren usar el término Concurrent para describir la gestión de múltiples goroutines independientes (los «processes» o «threads» en el contexto de otros lenguajes). Aunque estos términos se usan a menudo como sinónimos, a los Gophers les gusta ser técnicamente correctos y usan «concurrent» cuando hablan de las ejecuciones aparentemente simultáneas de las goroutines.

Aunque podemos planear que nuestros programas se ejecuten en paralelo, y a veces puede parecer que lo hacen, si no conocemos con exactitud el contexto de ejecución de nuestro código lo único que podemos garantizar es que los procesos se ejecutarán de forma concurrente. En otras palabras, puede que se ejecuten de forma secuencial más rápido de lo que somos capaces de distinguir, pero no estrictamente de forma simultánea.

Para saber más, echa un vistazo a la entrada del blog de Go: Concurrency is not parallelism.

Recursos sobre concurrencia

Si eres nuevo en las funcionalidades de concurrencia de Go, aquí tienes algunos recursos para empezar. Te recomendamos revisarlos antes de comenzar este ejercicio:

Si quieres profundizar de verdad, puedes probar el libro Concurrency in Go de @kat-co.

Pruebas

En este ejercicio, las pruebas unitarias no pueden determinar si escribiste una buena solución concurrente. En su lugar, lo mejor es resolver este ejercicio de forma local y ejecutar los benchmarks con go test -bench .. Si la solución es buena, verás que la versión concurrente muestra un número menor de nanosegundos por operación (ns/op) que la versión secuencial.

Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
Go Exercism

¿Todo listo para empezar Frecuencia de letras en paralelo?

Regístrate en Exercism para aprender y dominar Go con 34 conceptos165 ejercicios y mentoría humana real, todo gratis.

¡Profundiza en Frecuencia de letras en paralelo!

Exploramos las diferencias entre concurrencia y paralelismo, viendo los distintos enfoques que adoptan lenguajes como JavaScript, Go, Elixir y Rust.