Zähle die Häufigkeit der Buchstaben in Texten mithilfe paralleler Berechnung.
Bei Parallelität geht es darum, Dinge parallel zu erledigen, die man auch nacheinander erledigen kann. Ein häufiges Beispiel ist das Zählen der Buchstabenhäufigkeit. Nutze die Parallelität, um die Gesamthäufigkeit jedes Buchstabens in einer Liste von Texten zu berechnen.
Laut dieser Terminologie solltest du ein paralleles und deterministisches Programm schreiben und (nur zu!) Scala den Aspekt der Nebenläufigkeit überlassen. Sonst wird dein Code schnell unübersichtlich und fehleranfällig, mit allerlei üblen Nebenläufigkeitsfehlern. Insbesondere könnte dein Programm nichtdeterministisch werden, was in der Praxis bedeutet: sehr (sogar SEHR) schwer zu debuggen, zu testen und zu durchdenken.
Davon abgesehen ist es vielleicht eine gute Idee, zuerst eine sequenzielle Lösung zu schreiben (und sie mit der Testsuite zu überprüfen). Erst danach solltest du versuchen, sie zu parallelisieren, und dabei die sequenziellen und parallelen Teile deines Codes so getrennt wie möglich halten.
Eine erste Iteration könnte Scalas Parallel Collections nutzen. Vielleicht stellst du fest, dass das fast zu einfach ist (besonders wenn du unserem Rat gefolgt bist und schon eine sequenzielle Lösung hast).
Für die zweite Iteration empfehlen wir dir, eine Lösung mit scala.concurrent.Future auszuprobieren.
Bei diesem Tutorial und seiner Fortsetzung findest du Hilfe.
Achte darauf, dass du
scala.concurrent.Future wird in vielen Bibliotheken verwendet und ist beim Thema paralleles und asynchrones Programmieren in Scala das, was der Arzt verschreibt.
Es ist also unerlässlich, um die Sprache zu meistern, und sollte Teil deines Scala-Werkzeugkastens werden.
Melde dich bei Exercism an, um Scala mit 95 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.
Wir schauen uns die Unterschiede zwischen Nebenläufigkeit und Parallelität an und betrachten verschiedene Ansätze, die Sprachen wie JavaScript, Go, Elixir und Rust wählen.