समानांतर गणना की मदद से टेक्स्ट में अक्षरों की आवृत्ति गिनिए।
समानांतरता का मतलब है उन कामों को साथ-साथ करना जिन्हें एक के बाद एक करके भी किया जा सकता है। इसका एक आम उदाहरण अक्षरों की आवृत्ति गिनना है। टेक्स्ट की सूची में हर अक्षर की कुल आवृत्ति निकालने के लिए समानांतरता अपनाइए।
अक्षरों की गिनती कीजिए, केस और गैर-अक्षरों को अनदेखा करते हुए, और ऐसी डिक्शनरी लौटाइए जिसमें हर छोटे अक्षर के सामने उसकी गिनती हो। अक्षरों को Unicode स्केलर वैल्यू मानिए। Unicode नॉर्मलाइज़ेशन ज़रूरी नहीं है।
दिए गए items पर एक प्योर task फंक्शन लगाने के लिए roc-parallel प्लेटफॉर्म के pf.Parallel.map!(items, { workers, task }) का इस्तेमाल कीजिए। यह काम कई थ्रेड पर एक साथ समानांतर रूप से चलता है (थ्रेड की संख्या workers से तय होती है)। जब सभी items पर काम पूरा हो जाता है, तो परिणाम इनपुट के क्रम में लौटाए जाते हैं। आपको सिर्फ ParallelLetterFrequency.roc में बदलाव करना है।
बाकी ज़्यादातर अभ्यासों से अलग, यह अभ्यास इफेक्टफुल फंक्शन इस्तेमाल करता है। टेस्ट roc test के बजाय roc --opt=speed parallel-letter-frequency-test.roc से चलाइए। Roc कोड जो भी एरर लौटाता है, प्लेटफॉर्म उसे आम फॉर्मेट से अलग एक फॉर्मेट में बताता है।
आप bank-account अभ्यास भी देखना चाहेंगे, जो कॉन्करेंसी का एक अलग पहलू दिखाता है: साझा स्थिति पर अपडेट सुरक्षित तरीके से लागू करना।
Exercism पर साइन अप कीजिए और Roc को 139 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।
हम कंकरेंसी और समानांतरता के बीच के अंतर पर नज़र डालते हैं, और देखते हैं कि JavaScript, Go, Elixir तथा Rust जैसी भाषाएँ कौन-कौन से अलग-अलग तरीके अपनाती हैं।