Percursos
/
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

Conta a frequência das letras em textos recorrendo a computação paralela.

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

Concorrência vs. Paralelismo

O Go suporta concorrência através de «goroutines», que são iniciadas com a palavra-chave go. É uma forma simples, leve e elegante de suportar concorrência e é um dos maiores pontos fortes da linguagem.

Podes reparar que, embora este exercício se chame Parallel letter frequency, não vês o termo «Parallel» usado com muita frequência em Go. Os Gophers preferem usar o termo Concurrent para descrever a gestão de várias goroutines independentes («processos» ou «threads» noutras linguagens). Embora estes termos sejam muitas vezes usados indistintamente, os Gophers gostam de ser tecnicamente corretos e usam «concurrent» quando falam das execuções aparentemente simultâneas de goroutines.

Podemos planear que os nossos programas corram em paralelo e, por vezes, podem até parecer correr em paralelo, mas, sem um conhecimento rigoroso do contexto de execução do nosso código, a única coisa que podemos garantir é que os processos correm de forma concorrente. Por outras palavras, podem estar a executar-se sequencialmente mais depressa do que conseguimos distinguir, mas não estritamente em simultâneo.

Para saberes mais, dá uma vista de olhos ao artigo do The Go Blog: Concurrency is not parallelism.

Recursos sobre concorrência

Se és novo nas funcionalidades de concorrência do Go, aqui tens alguns recursos para começares. Recomendamos que lhes dês uma vista de olhos antes de começares este exercício:

Para um mergulho mesmo profundo, podes experimentar o livro Concurrency in Go, de @kat-co.

Testes

Neste exercício, os testes unitários não conseguem determinar se escreveste uma boa solução concorrente. Em vez disso, o melhor é resolveres este exercício localmente e executares os benchmarks com go test -bench .. Numa boa solução, deves ver que a versão concorrente apresenta um número mais baixo de nanossegundos por operação (ns/op) do que a versão sequencial.

Editar via GitHub A ligação abre numa nova janela ou separador
Go Exercism

Estás pronto para começar Frequência de letras em paralelo?

Inscreve-te no Exercism para aprenderes e dominares Go com 34 conceitos165 exercícios, e mentoria humana real, tudo grátis.

Mergulha a fundo em Frequência de letras em paralelo!

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