जावा, C ++ जैसी अन्य भाषाओं के बजाय MongoDB और CouchDB में जावास्क्रिप्ट का उपयोग क्यों किया जाता है?


19

मैंने एसओ से यह सवाल पूछा, लेकिन यहां कोशिश करने का सुझाव दिया गया। तो यहाँ यह जाता है:

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

लेकिन MongoDB और CouchDB के बीच तुलना पढ़ने पर मैंने देखा कि दोनों जावास्क्रिप्ट का उपयोग कर रहे हैं। यह मुझे अन्य पारंपरिक भाषाओं पर जावास्क्रिप्ट की पसंद के पीछे का कारण बनाता है।

मुझे लगता है कि मैं जावास्क्रिप्ट की भूमिका और अन्य भाषाओं पर इसके फायदे को समझने की कोशिश कर रहा हूं।

अद्यतन: मैं दो डेटाबेसों द्वारा समर्थित भाषाओं / ड्राइवरों के बारे में नहीं पूछ रहा हूँ। तुलना कहती है:

CouchDB और MongoDB दोनों ही जावास्क्रिप्ट का उपयोग करते हैं। CouchDB विचारों के निर्माण में बड़े पैमाने पर जावास्क्रिप्ट का उपयोग करता है ।

MongoDB भी मनमाने ढंग से जावास्क्रिप्ट फ़ंक्शंस को सर्वर-साइड चलाने का समर्थन करता है और नक्शे / संचालन को कम करने के लिए जावास्क्रिप्ट का उपयोग करता है।

मेरी समझ में कमी है कि बैकएंड के काम के लिए जावास्क्रिप्ट का उपयोग क्यों किया जा रहा है। CouchDB में दृश्यों के निर्माण के लिए या मानचित्र / संचालन को कम करने के लिए इसे क्यों पसंद किया जाता है? C / C ++ या Java का उपयोग क्यों नहीं किया गया? ऐसे बैक-एंड काम के लिए जावास्क्रिप्ट का उपयोग करने में क्या फायदे हैं?


3
जावास्क्रिप्ट केवल एक ब्राउज़र स्क्रिप्टिंग भाषा नहीं है। कुछ अन्य एप्लिकेशन जावास्क्रिप्ट या इसी तरह की भाषा एम्बेड करते हैं (उदाहरण के लिए फ्लैश में एक्शनस्क्रिप्ट, साथ ही कई एडोब एडॉप्टरों की स्क्रिप्टिंग के लिए जावास्क्रिप्ट)। मैं निश्चित नहीं हूं, लेकिन हो सकता है कि जावास्क्रिप्ट कभी भी केवल वेब ब्राउज़र में एम्बेड करने का इरादा नहीं था । तो ... क्यों नहीं इसे बैक-एंड डेटाबेस एप्लिकेशन में एम्बेड किया जाए?
स्टीव 314

जब से मैंने जेएस के बारे में ब्राउज़र में देखा / पढ़ा है, मुझे आश्चर्य है कि यह बिना ब्राउज़र खोले सर्वर-साइड पर कैसे चलता है?
जेफ कस्तूरी

1
धन्यवाद। तुम सही हो। वे सर्वर-साइड JS भाग करने के लिए स्पाइडरमॉन्की कंपाइलर का उपयोग कर रहे हैं। en.wikipedia.org/wiki/SpiderMonkey_(JavaScript_engine) @Raynos ने यह बताया।
जेफ कस्तूरी

6
इसके लिए आपको V8 और स्पाइडरमोंकी जैसे एक जावास्क्रिप्ट इंजन की आवश्यकता होगी । ब्राउज़र के बाहर जावास्क्रिप्ट के लिए काफी कुछ उपयोग हैं, विकिपीडिया की एक लंबी सूची है
यानिस

हम्म - मेरी पिछली टिप्पणी एक सामान्यीकरण के रूप में सटीक है, लेकिन मेरे लिए और अधिक विशिष्ट होने की कोशिश खतरनाक हो सकती है - मुझे मोंगोडीबी या काउचडीबी के बारे में कुछ भी पता नहीं है। जबकि कोई कारण नहीं है कि बैक-एंड डेटाबेस ऐप। सर्वर पर यह स्वयं का ब्राउज़र-स्वतंत्र जावास्क्रिप्ट इंटरप्रेटर नहीं हो सकता है, मुझे नहीं पता कि यह कैसे संभाला जाता है, और नीचे दिए गए उत्तर यह सुझाव देते हैं कि यह संभवतः नहीं है।
स्टीव 314

जवाबों:


15

मोबाइल कोड और क्रॉस-प्लेटफ़ॉर्म

जावास्क्रिप्ट को मोबाइल कोड कहा जाता है , कोड को सर्वर (MongoDB और CouchDB) से क्लाइंट (वेब ​​ब्राउज़र) में ले जाया जाता है और क्लाइंट पर इंस्टॉलेशन प्रक्रिया के बिना निष्पादित किया जाता है।

जावास्क्रिप्ट रनटाइम वातावरण (वेब ​​ब्राउज़र) भी कई प्लेटफार्मों पर व्यापक रूप से उपलब्ध हैं। यह जावास्क्रिप्ट को एक अच्छी क्रॉस-प्लेटफ़ॉर्म भाषा बनाता है ।

जावास्क्रिप्ट का उपयोग प्राथमिक बैक-एंड भाषा के रूप में नहीं किया जाता है

MongoDB बैकएंड C ++ में और CouchDB Erlang में लागू किया गया है। इसलिए जावास्क्रिप्ट का उपयोग मुख्य भाषा के रूप में थिसिस सिस्टम के बैकएंड के लिए नहीं किया जाता है।

से mongodb.com :

C ++ में लिखा है

से couchdb.apache.com :

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


1
आपकी प्रतिक्रिया के लिए धन्यवाद। "काउचडी ने विचारों के निर्माण में बड़े पैमाने पर जावास्क्रिप्ट का उपयोग किया है"। तो ग्राहक बैक-एंड काम के लिए एक ब्राउज़र क्यों है जैसे कि एक दृश्य बनाना? ऐसे कार्य के लिए, एक ब्राउज़र चित्र में क्यों आ रहा है।
जेफ कस्तूरी

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

मैं इसे तुरंत नहीं पाने के लिए माफी मांगता हूं। मुझे विस्तार से बताएं तो क्या ये डेटाबेस कार्य के कुछ हिस्से को करने के लिए सर्वर-साइड पर ब्राउज़र खोल रहे हैं, और फिर JSON आउटपुट लौटा रहे हैं?
जेफ कस्तूरी

1
धन्यवाद रेन्नोस! spidermonkey पर wiki का कहना है- "MongoDB, एक और NoSQL डेटाबेस सिस्टम, सर्वर-साइड निष्पादन के लिए SpiderMonkey का उपयोग करता है।" en.wikipedia.org/wiki/SpiderMonkey_(JavaScript_engine) । हम्म दिलचस्प
जेफ कस्तूरी

4
गलत, न तो MongoDB और न ही CouchdB एक ग्राहक के रूप में ब्राउज़र का उपयोग करें। डेटाबेस क्लाइंट एक लाइब्रेरी ऐप है (आमतौर पर एक वेबैप लेकिन किसी भी प्रकार का एप्लिकेशन हो सकता है) डेटाबेस में संग्रहीत डेटा का प्रबंधन करने के लिए उपयोग करता है। तस्वीर में कोई ब्राउज़र नहीं है। जावास्क्रिप्ट का उपयोग डेटा परिभाषा भाषा (JSON का एक सुपरसेट) के रूप में किया जाता है, और स्टोर-प्रक्रिया भाषा के रूप में भी, इसे डेटाबेस इंजन में निष्पादित किया जाता है, क्लाइंट पर नहीं और निश्चित रूप से किसी भी ब्राउज़र में नहीं।
जेवियर

7

क्योंकि जावास्क्रिप्ट एक स्क्रिप्टिंग भाषा है।

यह एक लचीली और गतिशील भाषा है जो लोगों से परिचित है।

अन्य कारण जावास्क्रिप्ट का उपयोग किया जाता है क्योंकि यह JSON प्रारूप के साथ अच्छी तरह से संरेखित होता है जो इन डेटाबेस का उपयोग करते हैं।

और अंत में इन डेटाबेस के लिए एक ऐसी भाषा की जरूरत होती है, जिसकी व्याख्या की जा सके। क्योंकि इन प्रश्नों का कोड नेटवर्क पर भेजा जाता है।

तो आपको चाहिए

  • गतिशील
  • लचीला
  • परिचित
  • व्याख्या की

भाषा: हिन्दी। मुझे नहीं लगता कि जावास्क्रिप्ट यहाँ एक बुरा विकल्प है। यह शायद C स्टाइल सिंटैक्स होने के लिए चुना गया है।

अब जावास्क्रिप्ट को दूसरी स्क्रिप्टिंग भाषा पर क्यों चुना गया यह एक अच्छा सवाल है।


2
Now why JavaScript was chosen over another scripting language: मैं अनुमान लगा सकता था कि यह इसलिए है क्योंकि जावास्क्रिप्ट सबसे व्यापक रूप से इस्तेमाल की जाने वाली स्क्रिप्टिंग भाषा है, ब्राउज़रों पर इसके उपयोग के माध्यम से बहुत अच्छी तरह से परीक्षण किया गया है, और कुछ उत्कृष्ट खुले स्रोत दुभाषिया कार्यान्वयन हैं। CouchDB का उपयोग करता है uneval(), एक संकेत है कि उन्होंने स्पाइडरमैन के शीर्ष पर अपने दुभाषिया का निर्माण किया है ।
yannis

Microsoft ने कई साल पहले क्लाइंट-साइड में VBscript का समर्थन किया था, लेकिन शुक्र है कि कभी भी इसे दूर नहीं किया ...
मार्क K Cowan

6

हम सभी को विनम्र-पाई खाना होगा जब हमें एहसास होगा कि जेएस लिखने के लिए उपयोग किया जा रहा है:

  • डेटाबेस

  • सर्वर

  • ऑपरेटिंग सिस्टम

  • और पुस्तकालयों, फ्रेमवर्क, रेंडरिंग इंजन, और संकलन भाषाओं के असंख्य,

... क्योंकि यह बेहतर है।

गंभीरता से, कृपया ... मुझे सुनें। दूत को मत मारो।

Microsoft से पूछें कि वे जेएस के साथ प्रथम श्रेणी के नागरिक के रूप में विंडोज 8 का निर्माण क्यों कर रहे हैं। या मोज़िला का नया मोबाइल OS, या IBM का रिवर्ट्रियल, PhoneGap, ExtJS, या WebGL।

क्या इन कंपनियों या परियोजनाओं में से कोई भी सफल रही है अगर विशेषज्ञों को कार्यान्वयन में कुछ बेहतर नहीं मिला?

जवाब है ... उन्होंने किया। हमने किया। इसलिए यहां विषय स्पष्ट होना चाहिए: एक बेहतर तरीका है।

लेकिन, बेहतर व्यक्तिपरक है: इसलिए हमें ड्रिल-डाउन और तुलना करनी चाहिए। क्या बेहतर है?

यह AJAX के साथ शुरू हुआ ... और यह बंद नहीं हुआ है।

  1. नॉन-ब्लॉकिंग आईओ। यह वाकई बहुत बड़ी बात है और जानने लायक है। जेएस में यह कॉलबैक पैटर्न है। यह पता चला है, कॉलबैक का उपयोग करके एक गैर-अवरोधक सर्वर को सक्षम किया जा सकता है: कोड की लगभग 8 पंक्तियाँ। setTimeout () एक कॉलबैक है। एकल-थ्रेडेड अतुल्यकालिक प्रसंस्करण।

  2. लचीलापन। क्या? -जावा और सी में कक्षाएं और इंटरफ़ेस हैं, लेकिन इसे ऑब्जेक्ट-ओरिएंटेड कहा जाता है। जावास्क्रिप्ट केवल वस्तुओं है। लेकिन इसे कहते हैं ... कुछ और।

    -हाइविंग ऑब्जेक्ट्स-केवल लचीलेपन के लिए एक अच्छी बात है, क्योंकि सदस्य और विधियाँ रनटाइम पर पूरी तरह से गतिशील हैं। -प्रोटाइपल इनहेरिटेंस डरावना नहीं है। कुछ विशेषज्ञ इसे ऑब्जेक्ट-पैकपैक के रूप में वर्णित करते हैं। -JS त्रुटियों पर अनुकूल है। -कोड एक साथ मिलकर कम्पोजिट-कंपोनेंट्स में परिणत हो सकता है, बिना ज्यादा मेहनत या ज्ञान के ... 'इंटरफेस', 'एब्स्ट्रैक्शन', 'इनहेरिटेंस', 'इनकैप्सुलेशन', 'पॉलीमॉर्फिज्म'। अच्छी बातें, लेकिन जेएस में नाइके की तरह; तुम बस करो।

  3. डेटा-अनुवाद। JSON के साथ, वस्तुओं को फ्रंट-टू-बैक, बैक-टू-फ्रंट स्थानांतरित किया जा सकता है। कोई XML डेटा अनुवाद नहीं। JSON स्पष्ट रूप से सरल है।

  4. कम सीखने की अवस्था। अत्यंत जटिल कोड को काटना और पेस्ट करना संभव है, फिर इसे अस्तित्व में चरण-डीबग करें। मैंने एक सहकर्मी को सुना ... 'नोब्स'। लेकिन यह सिर्फ नोब्स के लिए नहीं है।

-यह पता चला है कि रैपिड प्रोटोटाइप के लिए यह एक बहुत अच्छी सुविधा है। और साइटें इस डिज़ाइन-इन-ब्राउज़र चीज़ का लाभ उठाने वाले सभी पर पॉप अप कर रही हैं, और अधिक व्यापक रूप से; क्रम-प्रोटोटाइप। चेकआउट JSFiddle और CodePen, भी MicroJS। GitHub।

Like Transformers, with JS, there is more than meets the eye.  

It is a big deal.

अद्यतन: इस पोस्टिंग के बाद से जावास्क्रिप्ट अब अन्य भाषाओं द्वारा बड़े पैमाने पर उपयोग किया जाता है।

In Java - check out Nashorn.
In C++ - check out Emscripten, or ASM.
And there are many more.

The big surprise since the original writing of this answer was JS cross-compilation.

It turns out that many languages can be compiled to JS.

And the community is encouraging that... CoffeeScript, Dart, etc.    

This is not my specific area of expertise, but it is going on in big ways.

Simply put, we just don't know how the dynamism of JS is going to hash out yet. 

अजगर उन सभी को भी कर सकता है
योनातन

@JonathanLeaders - सभी? :)
जैक स्टोन

1
@ जोनाथन-नेता वेब ब्राउज़र पर पायथन चला सकते हैं?
एरॉन सी

1
  • आप अधिक के साथ कम कर सकते हैं - इस पर कुछ युगल स्कूल हैं। वर्बोसिटी स्कूल चाहता है कि सब कुछ ठीक-ठाक विस्तार से लिखा जाए जिसे कोई भी मूर्ख समझ सकता है। JS विपरीत स्कूल का एक सदस्य है जहां आप जटिलता को इस तरह से परत कर सकते हैं कि यह समझने में आसान हो कि बड़ी बारीकियों को समझने से पहले बड़ी तस्वीर को कैसे संचालित किया जाए। अधिकांश भाषाओं की तुलना में JS में इंटरफ़ेस लिखना बहुत आसान है, IMO।

  • फ़र्स्ट क्लास फ़ंक्शंस, क्लोज़र, प्रोटोटाइप इनहेरिटेंस - यह वास्तव में, वास्तव में लचीला कॉम्बो है। हम चाहें तो कक्षाओं का अनुकरण कर सकते हैं। लेकिन इसे कुछ हद तक उन लोगों द्वारा किए गए प्रयास के रूप में देखा जाता है जो जेएस को अच्छी तरह समझते हैं। जंजीर विरासत की तुलना में कम्पोजिटिंग जेएस काफी बेहतर है।

  • ब्लॉकिंग उच्च स्तर पर उपयोगी है। हां, आपने मुझे सुना। यह आपको वर्कहॉर्स के बजाय जेएस पर संदेशवाहक के रूप में ध्यान केंद्रित रखने में मदद करता है और फ़ंक्शन कॉल के बीच अतुल्यकालिक व्यवहार से रुकावटों की अनुमति देते हुए खुद को बहुत अधिक कतार बनाता है।

  • मैं कहूंगा कि सीखने की अवस्था वास्तव में शक्तिशाली जेएस लिखने के लिए थोड़ी सी खड़ी है लेकिन एक बार जब आप वहां होते हैं, तो यह एक हूट है। हालाँकि, कम कौशल स्तर पर JS में प्री-बेक्ड सामान को लागू करना कठिन नहीं है।


0

यह सवाल थोड़ा दिनांकित है लेकिन जावास्क्रिप्ट बनाम जावा / सी ++ का उपयोग करने का कारण यह है कि न तो जावा या सी ++ आसानी से कोड अंशों का समर्थन करते हैं।

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

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


0

इवेंट संचालित प्रोग्रामिंग मॉडल

जावास्क्रिप्ट को गैर-साझा-मेमोरी-कंप्यूटिंग के लिए प्रेरित एक घटना के साथ बनाया गया था। यूआई विकास में यह पूरी तरह से पुरानी टोपी है। कोई धारणा नहीं है कि आपका "एप्लिकेशन" एक प्रक्रिया के नियंत्रण में है। कोई प्रक्रिया एपीआई नहीं है। न ही कोई मुख्य कार्य है।

आपका "एप्लिकेशन" स्क्रिप्ट का एक संग्रह है जिसे तब निष्पादित किया जाएगा जब कोई विशेष चीज ऐसा होता है

  • ब्राउज़र में स्क्रिप्ट भरी हुई है
  • html पेज लोडिंग एक निश्चित बिंदु तक पहुँचता है
  • किसी दिए गए तत्व के साथ एक विशेष उपयोगकर्ता बातचीत पर

यह डेटा ट्रांसफ़ॉर्म के लिए आवश्यक प्रोसेसिंग लॉजिक के छोटे हिस्से से काफी मेल खाता है।

भाषा का अंकन

एक संकलन चरण के बिना निष्पादित करने में सक्षम होने का मतलब है कि प्रसंस्करण निर्देश आसानी से संग्रहीत किए जा सकते हैं। आप स्क्रिप्ट को आसानी से टेक्स्ट के रूप में सहेज सकते हैं और बिना किसी विशेष डेटा प्रकार या ज्ञान के इसे पास कर सकते हैं।

काफी सरल, स्थिर और पीछे संगत

आज आप जो कोड लिखते हैं, वह 10 साल पहले से बहुत अलग नहीं है। संस्करण इसे एम्बेड करने वाले लोगों के लिए अधिक समस्या होने की संभावना नहीं है।

performant

वहाँ कई अच्छे खुले स्रोत इंजन हैं, उनमें से एक टन का काम है। यह कई विकल्पों की तुलना में काफी तेजी से निष्पादित करता है।

घुंघराले ब्रेसिज़

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.