क्यों अजगर और नहीं लुआ? [बन्द है]


45

पायथन को Google द्वारा समर्थित क्यों किया गया है और यह इतनी तेज़ी से लोकप्रिय हो गया है और लुआ नहीं है?

क्या आप जानते हैं कि लूआ पृष्ठभूमि में क्यों रहा?


3
लुआ को सरणियों का बहाना पसंद है और शब्दकोश एक ही बात है, और एक लंबाई पाने वाला है जो न केवल गलत परिणाम लौटा सकता है, बल्कि nondeterministic परिणाम भी दे सकता है। मुझे नहीं पता कि Googles के कारण क्या हैं, लेकिन यह मुझे नापसंद करने के लिए पर्याप्त कारण है।
स्टीव 314

4
मेरे लिए, पायथन में कोड करना अधिक आसान है, अधिक सुखद है, और इसमें अधिक विशेषताएं हैं। मेरे सिर के ऊपर से कुछ उदाहरण: जनरेटर पायथन ( yield) में प्रथम श्रेणी के नागरिक के रूप में आते हैं , और लुआ को अधिक बोझिल सेटअप की आवश्यकता होती है। पायथन की सूची अनुक्रमण [::]एक बहुत बड़ा धन है। पायथन के पास वैध कक्षाएं और विरासत हैं। लुआ तेज़ है, हाँ, लेकिन मुझे वास्तव में पायथन में उपयोग के लिए गो कोड लिखना पसंद है जब गति महत्वपूर्ण है।
फ्रैंक ब्रायस

मैं LuaJIT से प्यार करता हूँ, लेकिन इसके लिए मेरे प्यार का एक बड़ा हिस्सा इसकी एम्बेडिंग, गति और नन्हा पदचिह्न है। अगर मुझे दिन भर किसी चीज में प्रोग्राम करना होता है, तो मैं पाइथन की तरफ ज्यादा झुक सकता हूं।

@FrankBryce आपको यह पीछे की ओर मिला। पाइथन के जेनरेटर लूआ के कोरआउट्स के उपसमूह हैं। Inf.puc-rio.br/~roberto/docs/MCC15-04.pdf
+55

जवाबों:


37

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

लुआ को छोटा रखने के लक्ष्य के कारण, केवल बहुत छोटे मानक पुस्तकालय मौजूद हैं, जिसमें केवल नंगे हड्डियों की कार्यक्षमता है।

इससे लुआ हलकों में एक दुर्भाग्यपूर्ण संस्कृति पैदा हो गई है, जहां लुआ डेवलपर्स कोर लाइब्रेरी के सार्वभौमिक रूप से स्वीकृत सेट पर सामूहिक रूप से काम करने के बजाय कई अन्य भाषा के मानक पुस्तकालयों द्वारा पेश की गई कार्यक्षमता को फिर से लागू करना पसंद करते हैं।

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

मुझे गलत मत समझो मैं लूआ को उन्हीं कारणों से प्यार करता हूं जिन्हें मैंने अभी सूचीबद्ध किया है।


54

सरल: लुआ में पायथन की तुलना में अधिक "आला" उद्देश्य हैं

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

लुआ पूरी तरह से एक एम्बेडेड स्क्रिप्टिंग भाषा होने के लिए लक्षित है। यह प्रारंभिक उद्देश्य है, भले ही यह वर्तमान में अन्य संदर्भों में उपयोग किया जाता है, जैसे बिल्ड सिस्टम; सॉफ्टवेयर में एम्बेडेड होना और डोमेन-विशिष्ट स्क्रिप्ट फ़ंक्शन और संरचनाओं के आसान कार्यान्वयन की अनुमति देना है। यह इतना न्यूनतर है कि इसका उपयोग वास्तव में विवश हार्डवेयर पर भी किया जा सकता है (मैंने निनटेंडो पर Lua का उपयोग किया है), यह हल्का, उपयोग करने में आसान है, FAST है, और यह एक ऐसी न्यूनतम भाषा है, लेकिन इस पर विचार किया जाना चाहिए कि बहुत सी बोली (आयात प्रतिमान जैसे) ऑब्जेक्ट-ओरिएंटेशन) उपलब्ध हैं। यह इतना पोर्टेबल (एएनएसआई सी) है कि आप इसे आधुनिक एम्बेडेड सॉफ्टवेयर के लिए स्मृति की सभ्य मात्रा के साथ किसी भी एम्बेडेड हार्डवेयर पर उपयोग कर सकते हैं (यदि मुझे अच्छी तरह से याद है कि डिफ़ॉल्ट लुआ vm 400ko के आसपास है और लगभग कभी नहीं बढ़ेगा यदि आप ऑब्जेक्ट नहीं बनाते हैं ...)।

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

पायथन का उपयोग किया जाता है ... लगभग किसी भी चीज़ को अधिक आला भाषा की आवश्यकता नहीं होती है (आप पायथन का उपयोग करके काफी प्रदर्शनकारी गेम बना सकते हैं, लेकिन कुछ प्रकार के प्रदर्शन-भारी गेमों को वास्तव में ऐसी प्रणाली से बचने की आवश्यकता होती है)।

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

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

अत्यधिक तुलना के लिए, कुछ भाषाएँ जो एम्बेडिंग को लक्षित करती हैं और न्यूनतम लुआ की तुलना में अधिक पूर्ण वाक्यविन्यास करने की कोशिश करती हैं, और प्रदर्शन पर प्रतिस्पर्धा करती हैं: चीस्क्रिप्ट, एंजेलस्क्रिप्ट, Io ...

वैसे, मैंने नए बिल्ड सिस्टम देखे हैं जैसे PreMake या Bam बिल्ड फाइल लैंग्वेज के रूप में Lua का उपयोग करते हैं। विचार यह है कि यह हल्के और गेम डेवलपर्स से जाना जाता है (गेम डेवलपमेंट में सिस्टम का निर्माण एक बड़ी समस्या है)। तो हो सकता है कि यह एक और डोमेन है जहाँ Lua की अधिक सराहना हो सकती है। यह निश्चित रूप से CMake सिंटैक्स से अधिक उपयोगकर्ता के अनुकूल है ...।


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

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

उस ने कहा, मैं पूरी तरह से सहमत हूं: अगर वेब साइट के विकास के रूप में ऐसे व्यापक रूप से इस्तेमाल किए जाने वाले क्षेत्र के लिए php का उपयोग नहीं किया गया था, तो यह अब हर जगह नहीं होगा।
क्लेम

लुआ मुख्य रूप से एम्बेडेड भाषा के रूप में उपयोग किया जाता है लेकिन यह एक सामान्य प्रयोजन प्रोग्रामिंग भाषा है, उदाहरण के लिए आप mod_lua के साथ CGI स्क्रिप्ट बना सकते हैं। मैं अपना प्रश्न बदल सकता हूं कि लुआ एक एम्बेडेड भाषा के रूप में क्यों रहा?
बेंजामिन

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

4

आप लुआ के साथ सब कुछ कर सकते हैं, यह कार्यक्रमों का विस्तार करने के लिए एक स्क्रिप्टिंग भाषा के रूप में बनाया गया है? हां, लेकिन यह उससे सीमित है, लुआ के लिए बहुत सारे पुस्तकालय हैं, और सही उपकरण (LuaJIT के FFI या टोलुआ) के साथ आप इस पर C / C ++ लाइब्रेरी का उपयोग भी कर सकते हैं। पायथन को मेरे दृष्टिकोण में अधिक उपयोग करने का कारण केवल उम्र है, कई कॉलेजों और स्कूलों में पायथन का पहली बार भाषा के रूप में उपयोग किया जाता है, ऐसे और भी लोग हैं जो पियून को लूआ से जानते हैं, और पाइथन के लिए एक अच्छी लाइब्रेरी पाना अधिक आसान है लूआ की तुलना में, क्योंकि भाषा अधिक परिपक्व है। इसके अलावा, मैं पायथन के बारे में ज्यादा नहीं जानता, लेकिन जितना मैं जानता हूं, एंड-यूजर से अपने कोड को छिपाना आसान है, लुआ में क्या है, क्या यह आसान नहीं है, मैं सही हूं?

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