Треки
/
Scala
Scala
/
Вправи
/
Паралельний підрахунок частоти літер
Паралельний підрахунок частоти літер

Паралельний підрахунок частоти літер

Середня

Вказівки

Порахуйте частоту літер у текстах за допомогою паралельних обчислень.

Паралелізм полягає в тому, щоб виконувати паралельно те, що також можна виконати послідовно. Поширений приклад - підрахунок частоти літер. Застосуйте паралелізм, щоб обчислити загальну частоту кожної літери в масиві текстів.

Інструкції, специфічні для треку

Згідно з цією термінологією, нам варто написати паралельну й детерміновану програму, а про конкурентність (і то неодмінно!) хай подбає Scala. Інакше код швидко стане заплутаним і схильним до помилок через усілякі підступні баги конкурентності. Зокрема, програма може стати недетермінованою, а це на практиці означає, що її буде дуже (насправді ДУЖЕ) важко налагоджувати, тестувати й аналізувати.

Утім, можливо, варто спершу написати послідовне рішення (і перевірити його за допомогою набору тестів). І лише потім спробувати розпаралелити його, тримаючи послідовну й паралельну частини коду якнайбільш відокремленими.

Першою ітерацією могло б стати використання паралельних колекцій Scala. Можливо, це видасться майже занадто простим (особливо якщо ми вже дослухалися до нашої поради й маємо послідовне рішення).

Для другої ітерації радимо спробувати рішення з scala.concurrent.Future. По допомогу можна звернутися до цього посібника та його продовження. Переконаймося, що:

  • у нас лише один-єдиний блокуючий виклик, який чекає на результат,
  • він стоїть у самому кінці програми, і
  • у нього є тайм-аут.

scala.concurrent.Future використовують у багатьох бібліотеках, і саме це радять для паралельного й асинхронного програмування в Scala. Тож це важливо для опанування мови, і це має стати частиною нашого арсеналу в Scala.

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Scala Exercism

Час розпочати Паралельний підрахунок частоти літер?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Scala, а також 95 вправ та справжнє наставництво від людей, і все це безкоштовно.

Глибоке занурення у Паралельний підрахунок частоти літер!

Ми дослідимо різницю між конкурентністю і паралелізмом, розглянувши різні підходи, які застосовують такі мови, як JavaScript, Go, Elixir і Rust.