समानांतर गणना की मदद से टेक्स्ट में अक्षरों की आवृत्ति गिनिए।
समानांतरता का मतलब है उन कामों को साथ-साथ करना जिन्हें एक के बाद एक करके भी किया जा सकता है। इसका एक आम उदाहरण अक्षरों की आवृत्ति गिनना है। टेक्स्ट की सूची में हर अक्षर की कुल आवृत्ति निकालने के लिए समानांतरता अपनाइए।
इस शब्दावली के अनुसार आपको एक समानांतर और नियतात्मक प्रोग्राम लिखना चाहिए, और कॉन्करेंसी वाला हिस्सा बेझिझक Scala पर छोड़ देना चाहिए। वरना हर तरह के भयानक कॉन्करेंसी बग के कारण आपका कोड जल्दी ही अस्त-व्यस्त और एरर देने वाला बन सकता है। खास तौर पर, आपका प्रोग्राम अनियतात्मक हो सकता है, जिसका व्यवहार में मतलब यह है: उसे डीबग करना, जाँचना और उस पर सोचना बहुत (वास्तव में, बहुत ही) मुश्किल हो जाता है।
इतना कहने के बाद भी, यह अच्छा विचार होगा कि पहले एक क्रमिक हल लिखा जाए (और उसे जाँचने के लिए टेस्ट सूट इस्तेमाल की जाए)। इसके बाद ही आपको अपने हल को समानांतर बनाने की कोशिश करनी चाहिए। साथ ही यह ध्यान रखिए कि आपके कोड के क्रमिक और समानांतर हिस्से जितने हो सके, अलग-अलग रहें।
पहले इटरेशन में आप Scala के समानांतर कलेक्शन इस्तेमाल कर सकते हैं। हो सकता है कि आपको लगे कि यह लगभग बहुत ही आसान है (खासकर तब, जब आपने हमारी सलाह मानी हो और आपके पास पहले से एक क्रमिक हल हो)।
दूसरे इटरेशन के लिए हमारा सुझाव है कि आप scala.concurrent.Future के साथ हल करके देखें। कुछ मदद के लिए आप इस ट्यूटोरियल और इसके अगले भाग को देख सकते हैं। ध्यान रखिए कि आप
scala.concurrent.Future का उपयोग बहुत सारी लाइब्रेरी में होता है, और Scala में समानांतर तथा अतुल्यकालिक प्रोग्रामिंग के लिए यही डॉक्टर की सलाह है। इसलिए भाषा पर अच्छी पकड़ बनाने के लिए यह ज़रूरी है, और इसे आपके Scala के औज़ारों में शामिल हो जाना चाहिए।
Exercism पर साइन अप कीजिए और Scala को 95 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।
हम कंकरेंसी और समानांतरता के बीच के अंतर पर नज़र डालते हैं, और देखते हैं कि JavaScript, Go, Elixir तथा Rust जैसी भाषाएँ कौन-कौन से अलग-अलग तरीके अपनाती हैं।