Track
/
Go
Go
/
Esercizi
/
Frequenza delle lettere in parallelo
Frequenza delle lettere in parallelo

Frequenza delle lettere in parallelo

Medio

Istruzioni

Conta la frequenza delle lettere nei testi usando il calcolo parallelo.

Il parallelismo consiste nel fare in parallelo cose che si possono fare anche in sequenza. Un esempio comune è contare la frequenza delle lettere. Usa il parallelismo per calcolare la frequenza totale di ogni lettera in un elenco di testi.

Concorrenza vs parallelismo

Go supporta la concorrenza tramite le «goroutine», che si avviano con la parola chiave go. È un modo semplice, leggero ed elegante per fornire supporto alla concorrenza ed è uno dei più grandi punti di forza del linguaggio.

Potresti notare che, anche se questo esercizio si chiama Frequenza delle lettere in parallelo, non vedrai spesso il termine «Parallel» usato in Go. I Gopher preferiscono usare il termine Concurrent per descrivere la gestione di più goroutine indipendenti («processi» o «thread» in altri contesti linguistici). Anche se questi termini sono spesso usati in modo intercambiabile, i Gopher tengono a essere tecnicamente corretti e usano «concurrent» quando parlano delle esecuzioni apparentemente simultanee delle goroutine.

Anche se possiamo pianificare che i nostri programmi vengano eseguiti in parallelo, e a volte possono sembrare in esecuzione parallela, senza una conoscenza rigorosa del contesto di esecuzione del nostro codice, tutto ciò che possiamo garantire è che i processi vengano eseguiti in modo concorrente. In altre parole, potrebbero essere eseguiti in sequenza più velocemente di quanto possiamo distinguere, ma non strettamente simultaneamente.

Per saperne di più, dai un'occhiata al post del Go Blog: Concurrency is not parallelism.

Risorse sulla concorrenza

Se sei alle prime armi con le funzionalità di concorrenza in Go, ecco alcune risorse per iniziare. Ti consigliamo di dare un'occhiata a queste risorse prima di iniziare questo esercizio:

Per un'analisi davvero approfondita, puoi provare il libro Concurrency in Go di @kat-co.

Test

Per questo esercizio, i test unitari non possono determinare se hai scritto una buona soluzione concorrente. Invece, è meglio risolvere questo esercizio in locale ed eseguire i benchmark con go test -bench .. Per una buona soluzione, dovresti vedere che la versione concorrente mostra un numero inferiore di nanosecondi per operazione (ns/op) rispetto alla versione sequenziale.

Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Go Exercism

Vuoi iniziare Frequenza delle lettere in parallelo?

Iscriviti a Exercism per imparare e padroneggiare Go con 34 concetti165 esercizi e il mentoring di persone reali, tutto gratis.

Approfondimento su Frequenza delle lettere in parallelo!

Esploriamo le differenze tra concorrenza e parallelismo, esaminando i diversi approcci adottati da linguaggi come JavaScript, Go, Elixir e Rust.