トラック
/
Scala
Scala
/
演習
/
並列文字頻度
並列文字頻度

並列文字頻度

中級

説明

並列計算を使って、テキストに含まれる文字の出現頻度を数えましょう。

並列処理とは、順番に実行することもできる物事を、並行して行うことです。よくある例が、文字の出現頻度を数えることです。並列処理を活用して、テキストの配列に含まれる各文字の出現頻度の合計を計算しましょう。

トラック固有の説明

この用語集によると、並列で決定的なプログラムを書き、並行処理の部分は(ぜひとも!)Scalaに任せるべきです。そうしないと、厄介な並行処理のバグであっという間にコードがごちゃごちゃになり、エラーを起こしやすくなってしまいます。特に、プログラムが非決定的になる可能性があり、実際のところそれは、デバッグ・テスト・動作の推測が非常に(いや、本当に非常に)難しくなるということを意味します。

とはいえ、まずは逐次的な解答を書き(そしてテストスイートを使ってそれを検証し)、それから、コードの逐次的な部分と並列的な部分をできるだけ分けたまま並列化を試みるのがよいでしょう。

最初の案としては、Scalaの[並列コレクション]を使う方法があります。これはほとんど簡単すぎると感じるかもしれません(特に、このアドバイスに従ってすでに逐次的な解答がある場合は)。

2つ目の案としては、scala.concurrent.Futureを使った解答を試してみることをおすすめします。助けが必要なら、このチュートリアルとその続編を参照してください。次の点を確認してください。

  • 結果を待つブロッキング呼び出しは1つだけにする
  • それはプログラムの一番最後に置く
  • タイムアウトを設定する

scala.concurrent.Futureは多くのライブラリで使われており、Scalaで並列・非同期プログラミングを行う際の定番の選択肢です。そのため、言語をマスターするうえで欠かせず、Scalaを扱ううえでの武器の1つにしておきましょう。

GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Scala Exercism

並列文字頻度を始める準備はできましたか?

Exercismに登録すれば、95個の演習、そして本物の人間によるメンタリングとともに、Scalaを学んでマスターできます。すべて無料です。

並列文字頻度を深く掘り下げよう!

並行性と並列性の違いを探りながら、JavaScript、Go、Elixir、Rustなどの言語が取るさまざまなアプローチを見ていきます。