अन्य भाषाओं की तुलना में स्काला अधिक स्केलेबल क्यों है?


12

स्काला को एक स्केलेबल भाषा के रूप में बिल किया जाता है, एक विशेषता जिसे इसके नाम में भी शामिल किया गया है :

स्काला नाम "स्केलेबल" और "भाषा" का एक चित्र है, जो दर्शाता है कि यह अपने उपयोगकर्ताओं की मांगों के साथ विकसित होने के लिए डिज़ाइन किया गया है।

स्काला के संदर्भ में "स्केलेबल" का क्या अर्थ है? जावा की तुलना में स्काला को और अधिक स्केलेबल बनाने की क्या ज़रूरत है?


5
स्काला आपके विचार में जिस तरह से स्केलेबल नहीं है: आपको वास्तव में स्काला / जावा के बारे में ट्विटर डेवलपर्स के साक्षात्कार को पढ़ना चाहिए ... मूल रूप से हर बार उनके पास (असली) स्केलेबिलिटी के मुद्दे थे, उन्होंने स्काला कोड को हटा दिया और सही ढंग से बहु-थ्रेड में डाल दिया। जावा कोड (जो, जैसा कि यहां बताया गया है, जावा में स्काला की तुलना में करना बहुत आसान है)। स्काला, प्रोटो-टाइपिंग और राइटिंग यूनिट टेस्ट के लिए अच्छा है और ऐसा कुछ भी जिसमें "रियल वर्ल्ड" [TM] डेटा की मात्रा शामिल नहीं है।
ट्रिस्टन सेंट

5
जावा में स्कैला की तुलना में सही तरीके से मल्टी-थ्रेडेड कोड लिखना आसान है? ऐसा कैसे?
एरन नोवस्ट्रुप

@Webinator क्या आपके पास साक्षात्कार के लिए लिंक है?
एरोन नोवस्ट्रुप

स्केलेबिलिटी पर ट्रिस्टन सेंट की सहमति। अर्लंग समवर्ती समय में प्रक्रियाओं को बनाने की क्षमता के कारण समवर्ती प्रोग्रामिंग के मामले में पैक का नेता है। आप बस 10000+ प्लस थ्रेड्स नहीं बना सकते हैं और इसे SCALA में एक दूसरे के साथ आपके विचार के अनुसार बातचीत कर सकते हैं।
Ubermensch

3
@TristanSt। एफयूडी का अच्छा प्रसार, यह बिल्कुल बुनियादी नहीं है जो मुझे उस साक्षात्कार से मिला। - "लेकिन अन्य हिस्सों के लिए हम सिर्फ एक पारंपरिक जावा थ्रेडिंग मॉडल पर वापस चले गए हैं। उस पर काम करने वाले इंजीनियर, जॉन कालकी ने पाया कि यह परीक्षण करने के लिए थोड़ा आसान था, थोड़ा और अधिक अनुमान लगाने योग्य था। अच्छी बात यह थी, यह था।" कोड को स्विच करने में मिनटों का समय लगा जो अभिनेता पर आधारित था, जो कुछ थ्रेड आधारित था। यह खोज और बदले की एक जोड़ी थी। यदि अभिनेता किसी भी कारण से विफल होते हैं तो यह इतना बुरा नहीं है। " अद्भुत अवधारणा - कुछ चीजें अभिनेता मॉडल को सूट करती हैं और कुछ नहीं!
डेरेक लित्ज़

जवाबों:


14

जब मार्टिन ओडस्की एक स्केलेबल भाषा विकल्प के रूप में स्कैला के बारे में बात करते हैं, तो उनका क्या मतलब है कि भाषा स्वयं के लिए उपयुक्त है:

  • स्क्रिप्टिंग सामान
  • आवेदन पत्र लिखना
  • लेखन राक्षस "उद्यम" (एक बेहतर शब्द की इच्छा के लिए) अनुप्रयोगों

वह निश्चित रूप से प्रदर्शन के दृष्टिकोण से स्केलेबिलिटी का जिक्र नहीं कर रहा है!

तथ्य यह है कि वह दावा कर सकता है कि स्केला क्विक'एन्टहाइट स्क्रिप्टिंग के लिए उपयुक्त है क्योंकि यह बड़े पैमाने पर उद्यम परिनियोजन के लिए है लगभग इस प्रकार है:

स्क्रिप्टिंग

स्कैला स्क्रिप्टिंग के लिए बहुत अच्छा है क्योंकि इसके प्रकार के अनुमान और कार्यात्मक शैली दोनों इसे संक्षिप्त करते हैं और स्लाइसिंग और डाइलिंग संग्रह आदि के लिए महान हैं।

अनुप्रयोग

स्काला अनुप्रयोगों को लिखने के लिए महान है क्योंकि यह कार्यात्मक और अनिवार्य शैली दोनों में काम करने के लिए कुछ महान विशेषताओं के साथ एक सांख्यिकीय प्रकार की जाँच की गई भाषा है। स्काला जावा के साथ संगत है और इसलिए आप पुस्तकालयों के विशाल पारिस्थितिकी तंत्र का लाभ उठा सकते हैं।

एंटरप्राइज़ परिनियोजन

स्केला बायटेकोड के लिए संकलित करता है और जावा वर्चुअल मशीन पर चलता है, एक स्थिर प्रणाली जो शानदार प्रदर्शन के साथ होती है, जब (तथाकथित) गतिशील रूप से टाइप की जाती है (यानी अनकैप्ड) भाषाओं की तुलना में। फिर, तथ्य यह है कि यह सांख्यिकीय रूप से टाइप किया गया है, का मतलब है कि बड़े कोडबेस पर रिफैक्टिंग को बहुत आसान बना दिया जाता है।


"स्टेटिकली टाइप्ड" के लिए किसी भी सहायक साक्ष्य का मतलब है कि बड़े कोडबेस पर रिफैक्टिंग को बहुत आसान बना दिया गया है? अधिक लगता है जैसे, "यह निर्भर करता है", स्थिति फिर एक तथ्य। केवल एक चीज जिसे मैंने टाइप की हुई भाषाएं दी हैं, निश्चित रूप से वे संकलित करने वाले लेखकों के लिए आसान हैं।
डेरेक लित्ज़

21

ओडस्की क्या कहते हैं (स्लाइड 11, http://www.slideshare.net/rawwell/scalaliftoff2009pdf ):

"स्काला गहरा है जहाँ अन्य भाषाएँ व्यापक हैं।"

इसका मतलब है, स्केलेबल का अर्थ लचीलापन और अभिव्यंजना के संदर्भ में है। आप अपनी खुद की नियंत्रण संरचना बना सकते हैं। जैसे एक्टर फ्रेमवर्क एक लाइब्रेरी है, लेकिन ऐसा लगता है कि यह भाषा की विशेषताओं का उपयोग करता है।

इसका मतलब यह है कि स्काला को आवश्यक अमूर्त के अनुसार पैमाना होगा, "एक सेकंड में 1.000.000 अनुरोधों का जवाब देने के मामले में जरूरी नहीं" (लेकिन स्काला यहां मजबूत है, भी)।


1
+1 यह वास्तव में "SCAlable LAnguage" के साथ फिट बैठता है। यह एक ऐसी भाषा है जिसे डेवलपर की जरूरतों के साथ विकसित करने के लिए डिज़ाइन किया गया है।
बेन जेम्स

11

व्यवहार में जावा की स्केलेबिलिटी की सीमा जेवीएम नहीं है, यह सही समवर्ती कोड लिखने की कठिनाई है। स्काला अपने कार्यात्मक प्रोग्रामिंग और अभिनेता मॉडल के लिए समर्थन के माध्यम से इसे आसान बनाता है।

जब वेब सर्वर (जैसे प्रत्येक अनुरोध लगभग पूरी तरह से स्वतंत्र है) में संक्षिप्तता आसान है, तो जावा बहुत स्केलेबल हो सकता है। लेकिन जब यह एक लंबे समय से चल रहे कार्य को समानांतर करने की बात आती है, तो यह सही होने के लिए एक वास्तविक संघर्ष हो सकता है।


जबकि जावा में कार्यात्मक प्रोग्रामिंग के लिए समर्थन नहीं है, इसका मतलब यह नहीं है कि आप इसे जावा में उपयोग नहीं कर सकते। ऐसा करने से आपको अधिक परिश्रम मिल सकता है, हालाँकि अधिक प्रयास के लिए। एक पुस्तकालय जो code.google.com/p/lambdaj
पीटर लॉरी

2
स्केलेबिलिटी जिसके पास स्काला है, उसका नाम भाषा का है , कार्यक्रमों का नहीं।
डैनियल सी। सोबरल


6

यह आवश्यक नहीं है कि भाषा स्वयं जावा की तुलना में अधिक स्केलेबल है, जैसा कि आप कहते हैं कि दोनों भाषाएँ एक ही बाईटेकोड का उत्पादन कर सकती हैं।

लेकिन अभिनेता मॉडल और कार्यात्मक प्रोग्रामिंग शैली स्केलेबिलिटी को बढ़ा सकती है (संक्षेप में- सही संगामना प्रोग्रामिंग को सरल बनाने और सिंक्रोनाइज़ेशन आवश्यकताओं को कम करके)।

एक बेहतर अंतर्दृष्टि प्राप्त करने के लिए अभिनेता मॉडल पर एक नज़र डालें और पारंपरिक बहु-थ्रेडेड जावा एप्लिकेशन से इसकी तुलना करें:

तुम भी अका ढांचे का उपयोग कर सकते हैं स्केल में कोडिंग के बिना अत्यधिक स्केलेबल जावा अनुप्रयोग बनाने के लिए:


एक्टर्स लाइब्रेरी इस बात का एक अच्छा उदाहरण है कि स्केला कैसे स्केलेबल है, लेकिन यह उदाहरण संगोष्ठी के साथ नहीं है: अभिनेता एपीआई विशेष ऑपरेटरों (जैसे संदेश-संदेश) के साथ एक देशी सुविधा की तरह दिखता है , फिर भी वास्तव में यह सब बस है! नियमित विधि कॉल।
बेन जेम्स

अभिनेता मॉडल आपको बहुत अधिक दर्द के बिना और बहुत अधिक संगामिति सिरदर्द के बिना स्केलेबल सॉफ्टवेयर लिखने में मदद करता है, है ना? भले ही आप इसे एक्टर्स का उपयोग करते समय नहीं देखते हैं, लेकिन एक्टर मॉडल के साथ कुछ करें। अभिनेता मॉडल का उद्देश्य समवर्ती संगणना को सरल बनाना है, इसलिए इस उदाहरण का संगति से कोई लेना-देना नहीं है ... मुझे आपकी बात यहाँ नहीं आती?
Alois Cochard

मेरी टिप्पणी शानदार ढंग से लिखी नहीं गई, क्षमा करें। llemieng या michael.kebe के उत्तर इसे बेहतर बताते हैं।
बेन जेम्स

कोई दिक्कत नहीं है ! मुझे अब आपकी बात समझ में आ रही है, मैं केवल स्काला लाइब्रेरी स्केलेबिलिटी के बारे में बोल रहा था, न कि भाषा स्केलेबिलिटी / कंसीडरिटी फीचर्स के बारे में । धन्यवाद
Alois Cochard
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.