Scala को स्विट्ज़रलैंड के École Polytechnique Fédérale de Lausanne (EPFL) में प्रोफेसर और एक जर्मन कंप्यूटर वैज्ञानिक Martin Odersky ने डिज़ाइन किया था। मार्टिन ने 2001 में Scala पर काम शुरू किया, और इसे पहली बार 2004 में जारी किया गया।
Scala का अर्थ है Scalable Language। यह एक जनरल-पर्पज़, ऑब्जेक्ट-ओरिएंटेड भाषा है, जिसकी कुछ समानताएँ Java प्रोग्रामिंग भाषा से हैं। यह फंक्शनल प्रोग्रामिंग का भी समर्थन करती है। Scala के कई डिज़ाइन निर्णय Java प्रोग्रामिंग भाषा की कमियों को दूर करने के उद्देश्य से लिए गए थे।
Scala द्वारा प्रदान की जाने वाली कुछ विशेषताएँ:
Scala का सोर्स कोड Java बाइटकोड में कम्पाइल किया जा सकता है और इसलिए Java Virtual Machine (JVM) पर चलाया जा सकता है।
यह Java के साथ भाषा इंटरऑपरेबिलिटी प्रदान करती है ताकि किसी भी भाषा में लिखी गई लाइब्रेरीज़ को Scala या Java कोडबेस में संदर्भित किया जा सके।
Java की तरह, Scala भी कर्ली-ब्रेस सिंटैक्स का उपयोग करती है।
इसमें Scheme, Standard Machine Learning और Haskell जैसी फंक्शनल प्रोग्रामिंग भाषाओं की कई विशेषताएँ हैं, जिनमें currying, type inference, immutability, lazy evaluation और pattern matching शामिल हैं।
JavaScript का उपयोग करके वेब अनुप्रयोगों के लिए समर्थन।
Java के विपरीत, Scala ऑपरेटर ओवरलोडिंग, वैकल्पिक पैरामीटर्स, नामित पैरामीटर्स और रॉ स्ट्रिंग्स का भी समर्थन करती है।
Scala के बारे में एक रोचक तथ्य यह है कि अपनी स्केलेबिलिटी और बैकएंड संचालन में उपयोग किए जाने की क्षमता के कारण यह Apple, Twitter, Walmart और Google जैसी कंपनियों में व्यापक रूप से उपयोग होती है।
Jupyter Notebook में Scala सेट करना
Jupyter notebook कंप्यूटर विज्ञान, खासकर डेटा साइंस डोमेन में सबसे व्यापक रूप से उपयोग होने वाले टूल्स में से एक है। इसमें spylon-kernel की मदद से Scala डेवलपमेंट का भी समर्थन है।
नोट: जो लोग jupyter notebook के लिए नए हैं, वे कृपया इस विस्तृत ट्यूटोरियल को देख सकते हैं।
jupyter notebook में Scala वातावरण सेट करना कोई मुश्किल काम नहीं है। तो आइए, इसे कुछ आसान चरणों में जल्दी से सेट करते हैं।
जैसा कि आप देख सकते हैं, यह बहुत सरल है, बस एक print कमांड जिसके बाद इनपुट आर्ग्युमेंट के रूप में दिया जाता है।
अब, Scala में सिंटैक्स से संबंधित कुछ विवरण देखते हैं:
Scala केस-सेंसिटिव है, जिसका मतलब है कि आइडेंटिफ़ायर DataCamp और dataCamp Scala में अलग-अलग अर्थ रखते हैं।
Scala में सभी क्लास नामों के पहले अक्षर Upper Case में होने चाहिए। यदि कई शब्द मिलकर क्लास का नाम बनाते हैं, तो प्रत्येक अलग शब्द का पहला अक्षर Upper Case में होना चाहिए। उदाहरण के लिए, class MyScalaDataCampTutorial।
Scala में मेथड नाम, class names से अलग दिखाने के लिए थोड़े अलग तरीके से काम करते हैं। मेथड नामों की शुरुआत लोअर केस अक्षर से होनी चाहिए (स्रोत)। यदि कई शब्द मिलकर मेथड का नाम बनाते हैं, तो प्रत्येक आंतरिक शब्द का पहला अक्षर Upper Case में होना चाहिए। उदाहरण के लिए, def firstDatacampScalaTutorial()
Scala में, प्रोग्राम फ़ाइल का नाम ठीक उसी ऑब्जेक्ट नाम से मिलना चाहिए। फ़ाइल को सेव करते समय, आपको इसे ऑब्जेक्ट नाम से सेव करना होगा और नाम के अंत में .scala जोड़ना होगा। उदाहरण के लिए, मान लीजिए ऑब्जेक्ट का नाम ScalaTutorial है। तब फ़ाइल को ScalaTutorial.scala के रूप में सेव किया जाना चाहिए।
नोट: यदि फ़ाइल नाम और ऑब्जेक्ट नाम मेल नहीं खाते, तो आपका प्रोग्राम कम्पाइल भी नहीं होगा।
अंत में, अधिकांश प्रोग्रामिंग भाषाओं की तरह, Scala प्रोग्राम प्रोसेसिंग भी main() मेथड से शुरू होती है, जो हर Scala प्रोग्राम का अहम हिस्सा है।
नीचे दिया गया चित्र Scala के आरक्षित शब्द दिखाता है जिन्हें कॉन्स्टेंट्स या वेरिएबल्स या किसी अन्य आइडेंटिफ़ायर के रूप में उपयोग नहीं किया जा सकता।
Scala से संबंधित बहुत-सी जानकारी, जैसे if/else, for loops, Scala में विभिन्न ऑपरेटर्स आदि, अभी खुलनी बाकी है, जिन्हें भविष्य के ट्यूटोरियल्स में कवर किया जाएगा, तो जुड़े रहें!
परिचय
Scala को स्विट्ज़रलैंड के École Polytechnique Fédérale de Lausanne (EPFL) में प्रोफेसर और एक जर्मन कंप्यूटर वैज्ञानिक Martin Odersky ने डिज़ाइन किया था। मार्टिन ने 2001 में Scala पर काम शुरू किया, और इसे पहली बार 2004 में जारी किया गया।
Scala का अर्थ है
Scalable Language। यह एक जनरल-पर्पज़, ऑब्जेक्ट-ओरिएंटेड भाषा है, जिसकी कुछ समानताएँ Java प्रोग्रामिंग भाषा से हैं। यह फंक्शनल प्रोग्रामिंग का भी समर्थन करती है। Scala के कई डिज़ाइन निर्णय Java प्रोग्रामिंग भाषा की कमियों को दूर करने के उद्देश्य से लिए गए थे।Scala द्वारा प्रदान की जाने वाली कुछ विशेषताएँ:
Scala का सोर्स कोड Java बाइटकोड में कम्पाइल किया जा सकता है और इसलिए Java Virtual Machine (JVM) पर चलाया जा सकता है।
यह Java के साथ भाषा इंटरऑपरेबिलिटी प्रदान करती है ताकि किसी भी भाषा में लिखी गई लाइब्रेरीज़ को Scala या Java कोडबेस में संदर्भित किया जा सके।
Java की तरह, Scala भी कर्ली-ब्रेस सिंटैक्स का उपयोग करती है।
इसमें Scheme, Standard Machine Learning और Haskell जैसी फंक्शनल प्रोग्रामिंग भाषाओं की कई विशेषताएँ हैं, जिनमें currying, type inference, immutability, lazy evaluation और pattern matching शामिल हैं।
JavaScript का उपयोग करके वेब अनुप्रयोगों के लिए समर्थन।
Java के विपरीत, Scala ऑपरेटर ओवरलोडिंग, वैकल्पिक पैरामीटर्स, नामित पैरामीटर्स और रॉ स्ट्रिंग्स का भी समर्थन करती है।
Scala के बारे में एक रोचक तथ्य यह है कि अपनी स्केलेबिलिटी और बैकएंड संचालन में उपयोग किए जाने की क्षमता के कारण यह Apple, Twitter, Walmart और Google जैसी कंपनियों में व्यापक रूप से उपयोग होती है।
Jupyter Notebook में Scala सेट करना
Jupyter notebook कंप्यूटर विज्ञान, खासकर डेटा साइंस डोमेन में सबसे व्यापक रूप से उपयोग होने वाले टूल्स में से एक है। इसमें
spylon-kernelकी मदद से Scala डेवलपमेंट का भी समर्थन है।नोट: जो लोग jupyter notebook के लिए नए हैं, वे कृपया इस विस्तृत ट्यूटोरियल को देख सकते हैं।
jupyter notebook में Scala वातावरण सेट करना कोई मुश्किल काम नहीं है। तो आइए, इसे कुछ आसान चरणों में जल्दी से सेट करते हैं।
सबसे पहले, आप
spylon-kernelइंस्टॉल करेंगे।pip install spylon-kernel(Python 2)pip3 install spylon-kernel(Python 3)अगले चरण में, आप एक kernel specification बनाएँगे जो आपको jupyter notebook में
scala-kernelचुनने की अनुमति देगा।python -m spylon_kernel install(Python 2)python3 -m spylon_kernel install(Python 3)फिर, एक महत्वपूर्ण चरण के रूप में, आप
pysparkऔरfindsparkइंस्टॉल करेंगे क्योंकिspylon-kernelकुछsparkकॉम्पोनेंट्स भी इंस्टॉल करता है।pip install pyspark findspark(Python 2)pip3 install pyspark findspark(Python 3)अंत में, अपना jupyter notebook शुरू करें और kernel के रूप में
spylon-kernelचुनें, बस! आप तैयार हैं।बहुत बढ़िया! ऊपर दिए गए आउटपुट से आप देख सकते हैं कि आपने jupyter notebook में Scala वातावरण को सफलतापूर्वक कॉन्फ़िगर कर लिया है।
मूल सिंटैक्स
आइए Scala में
Hello, World!प्रिंट करके शुरू करते हैं।जैसा कि आप देख सकते हैं, यह बहुत सरल है, बस एक
printकमांड जिसके बाद इनपुट आर्ग्युमेंट के रूप में दिया जाता है।अब, Scala में सिंटैक्स से संबंधित कुछ विवरण देखते हैं:
Scala केस-सेंसिटिव है, जिसका मतलब है कि आइडेंटिफ़ायर
DataCampऔरdataCampScala में अलग-अलग अर्थ रखते हैं।Scala में सभी क्लास नामों के पहले अक्षर
Upper Caseमें होने चाहिए। यदि कई शब्द मिलकर क्लास का नाम बनाते हैं, तो प्रत्येक अलग शब्द का पहला अक्षर Upper Case में होना चाहिए। उदाहरण के लिए,class MyScalaDataCampTutorial।Scala में मेथड नाम,
class namesसे अलग दिखाने के लिए थोड़े अलग तरीके से काम करते हैं। मेथड नामों की शुरुआत लोअर केस अक्षर से होनी चाहिए (स्रोत)। यदि कई शब्द मिलकर मेथड का नाम बनाते हैं, तो प्रत्येक आंतरिक शब्द का पहला अक्षर Upper Case में होना चाहिए। उदाहरण के लिए,def firstDatacampScalaTutorial()Scala में, प्रोग्राम फ़ाइल का नाम ठीक उसी ऑब्जेक्ट नाम से मिलना चाहिए। फ़ाइल को सेव करते समय, आपको इसे ऑब्जेक्ट नाम से सेव करना होगा और नाम के अंत में
.scalaजोड़ना होगा। उदाहरण के लिए, मान लीजिए ऑब्जेक्ट का नामScalaTutorialहै। तब फ़ाइल कोScalaTutorial.scalaके रूप में सेव किया जाना चाहिए।नोट: यदि फ़ाइल नाम और ऑब्जेक्ट नाम मेल नहीं खाते, तो आपका प्रोग्राम कम्पाइल भी नहीं होगा।
अंत में, अधिकांश प्रोग्रामिंग भाषाओं की तरह, Scala प्रोग्राम प्रोसेसिंग भी
main()मेथड से शुरू होती है, जो हर Scala प्रोग्राम का अहम हिस्सा है।नीचे दिया गया चित्र Scala के आरक्षित शब्द दिखाता है जिन्हें कॉन्स्टेंट्स या वेरिएबल्स या किसी अन्य आइडेंटिफ़ायर के रूप में उपयोग नहीं किया जा सकता।
डेटा प्रकार
Scala में डेटा प्रकार C, C++, Java, Python आदि जैसी कई अन्य प्रोग्रामिंग भाषाओं से लगभग समान होते हैं, समान मेमोरी फ़ुटप्रिंट और प्रिसीज़न के साथ।
अंत में, आइए Scala में मौजूद कुछ डेटा प्रकारों पर नज़र डालते हैं:
Int: 32-बिट साइन किया हुआ मान (जो धनात्मक और ऋणात्मक दोनों मान ले सकता है) जिसकी रेंज $2^{-31}$ से $2^{31} - 1$ तक होती है
Byte: 8-बिट साइन किया हुआ मान जिसकी रेंज $2^{-7}$ से $2^{7} - 1$ तक होती है
Short: 16-बिट साइन किया हुआ मान जिसकी रेंज $2^{-15}$ से $2^{15} - 1$ तक होती है
Long: 64-बिट साइन किया हुआ मान जिसकी रेंज $2^{-63}$ से $2^{63} - 1$ तक होती है
Float: 32-बिट (सिंगल-प्रिसीज़न फ़्लोट) और 64-बिट (डबल-प्रिसीज़न फ़्लोट) दोनों
Char: 16-बिट अनसाइन किया हुआ (केवल धनात्मक मान ले सकता है) यूनिकोड कैरेक्टर।
अन्य कुछ डेटा प्रकार हैं String, Boolean, Null।
निष्कर्ष
इस ट्यूटोरियल को पूरा करने पर बधाई।
यह Scala सीखने में रुचि रखने वाले शुरुआती लोगों के लिए एक अच्छा शुरुआती बिंदु है।
और सीखने के लिए, DataCamp के Scala ट्यूटोरियल देखें:
Scala में फ़ंक्शंस और मेथड्स की बुनियादी बातें
Scala में IF ELSE
Scala में ऑपरेटर्स
Scala में लिस्ट्स
Scala से संबंधित बहुत-सी जानकारी, जैसे if/else, for loops, Scala में विभिन्न ऑपरेटर्स आदि, अभी खुलनी बाकी है, जिन्हें भविष्य के ट्यूटोरियल्स में कवर किया जाएगा, तो जुड़े रहें!
संदर्भ:
Scala (प्रोग्रामिंग भाषा)
Scala ट्यूटोरियल
कृपया नीचे टिप्पणी अनुभाग में इस ट्यूटोरियल से संबंधित कोई भी प्रश्न बेझिझक पूछें।