Trilhas
/
Go
Go
/
Exercícios
/
Frequência de Letras em Paralelo
Frequência de Letras em Paralelo

Frequência de Letras em Paralelo

Médio

Instruções

Conte a frequência das letras em textos usando computação paralela.

O paralelismo consiste em fazer em paralelo coisas que também podem ser feitas de forma sequencial. Um exemplo comum é contar a frequência das letras. Use o paralelismo para calcular a frequência total de cada letra em uma lista de textos.

Concorrência vs Paralelismo

Go dá suporte à concorrência por meio de "goroutines", que são iniciadas com a palavra-chave go. É uma forma simples, leve e elegante de oferecer suporte à concorrência e é um dos maiores pontos fortes da linguagem.

Você pode notar que, embora este exercício se chame frequência de letras em paralelo, o termo "Parallel" não é usado com muita frequência em Go. Os Gophers preferem usar o termo Concurrent para descrever o gerenciamento de várias goroutines independentes ("processos" ou "threads" em outros contextos de linguagem). Embora esses termos sejam muitas vezes usados de forma intercambiável, os Gophers gostam de ser tecnicamente precisos e usam "concurrent" quando falam das execuções aparentemente simultâneas de goroutines.

Podemos até planejar que nossos programas rodem em paralelo, e às vezes eles podem até parecer rodar em paralelo, mas sem um conhecimento preciso do contexto de execução do nosso código a única coisa que podemos garantir é que os processos vão rodar de forma concorrente. Em outras palavras, eles podem estar executando sequencialmente rápido demais para conseguirmos distinguir, mas não estritamente ao mesmo tempo.

Para saber mais, dê uma olhada no post do The Go Blog: Concurrency is not parallelism.

Recursos sobre concorrência

Se você é novo nos recursos de concorrência do Go, aqui estão alguns materiais para começar. Recomendamos dar uma olhada neles antes de começar este exercício:

Para um mergulho bem mais profundo, você pode experimentar o livro Concurrency in Go, de @kat-co.

Testes

Neste exercício, os testes de unidade não conseguem determinar se você escreveu uma boa solução concorrente. Em vez disso, o melhor é resolver este exercício localmente e executar os benchmarks com go test -bench .. Em uma boa solução, você deve ver que a versão concorrente apresenta um número menor de nanossegundos por operação (ns/op) do que a versão sequencial.

Editar via GitHub O link abre em uma nova janela ou aba
Go Exercism

Tudo pronto para começar Frequência de Letras em Paralelo?

Crie sua conta no Exercism para aprender e dominar Go com 34 conceitos165 exercícios e mentoria humana de verdade, tudo de graça.

Mergulho profundo em Frequência de Letras em Paralelo!

Exploramos as diferenças entre concorrência e paralelismo, vendo as diferentes abordagens adotadas por linguagens como JavaScript, Go, Elixir e Rust.