Μέτρησε τη συχνότητα των γραμμάτων σε κείμενα χρησιμοποιώντας παράλληλο υπολογισμό.
Ο παραλληλισμός αφορά την εκτέλεση παράλληλα πραγμάτων που μπορούν να γίνουν και σειριακά. Ένα συνηθισμένο παράδειγμα είναι η μέτρηση της συχνότητας των γραμμάτων. Χρησιμοποίησε παραλληλισμό για να υπολογίσεις τη συνολική συχνότητα κάθε γράμματος σε μια λίστα με κείμενα.
Σύμφωνα με αυτή την ορολογία θα πρέπει να γράψεις ένα παράλληλο και ντετερμινιστικό πρόγραμμα και (οπωσδήποτε!) να αφήσεις τη Scala να ασχοληθεί με την πτυχή του ταυτοχρονισμού. Αλλιώς ο κώδικάς σου μπορεί γρήγορα να γίνει ακατάστατος και επιρρεπής σε λάθη, με κάθε λογής άσχημα bugs ταυτοχρονισμού. Ειδικότερα, το πρόγραμμά σου μπορεί να γίνει μη ντετερμινιστικό, που στην πράξη σημαίνει: πολύ (βασικά, ΠΟΛΥ) δύσκολο να κάνεις debug, να το τεστάρεις και να το αναλύσεις.
Παρ' όλα αυτά, μπορεί να είναι καλή ιδέα να γράψεις πρώτα μια σειριακή λύση (και να χρησιμοποιήσεις τη σουίτα δοκιμών για να την επαληθεύσεις). Μόνο τότε θα πρέπει να δοκιμάσεις να την παραλληλοποιήσεις, κρατώντας τα σειριακά και τα παράλληλα τμήματα του κώδικά σου όσο πιο ξεχωριστά γίνεται.
Μια πρώτη επανάληψη θα μπορούσε να χρησιμοποιήσει τις παράλληλες συλλογές της Scala. Μπορεί να διαπιστώσεις ότι αυτό είναι σχεδόν πολύ απλό (ειδικά αν έχεις ακολουθήσει τη συμβουλή μας και έχεις ήδη μια σειριακή λύση).
Για τη δεύτερη επανάληψη, σου προτείνουμε να δοκιμάσεις μια λύση με το scala.concurrent.Future.
Μπορείς να συμβουλευτείς αυτό το σεμινάριο και τη συνέχειά του για λίγη βοήθεια.
Βεβαιώσου ότι
Το scala.concurrent.Future χρησιμοποιείται σε πολλές βιβλιοθήκες και αποτελεί τη συμβουλή του γιατρού για τον παράλληλο και ασύγχρονο προγραμματισμό στη Scala.
Έτσι, είναι απαραίτητο για να κατακτήσεις τη γλώσσα και θα πρέπει να γίνει μέρος του οπλοστασίου σου στη Scala.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Scala με 95 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.
Εξερευνούμε τις διαφορές ανάμεσα στον ταυτοχρονισμό και τον παραλληλισμό, εξετάζοντας διαφορετικές προσεγγίσεις που ακολουθούν γλώσσες όπως η JavaScript, η Go, η Elixir και η Rust.