2010-01-20 8 views
61

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

अन्य पीएल के लिए लुआ की संपत्तियों और सुविधाओं की तुलना विशेष रूप से उपयुक्त है।

उत्तर

129

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

क्या यह कार्यान्वयन करने वाले दिलचस्प नए विचारों का परिणाम है, या यह अच्छी तरह से स्थापित विचारों के अच्छे निष्पादन का परिणाम है?

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

  • केवल परिवर्तनशील, गैर परमाणु डेटा के प्रकार के रूप में लुआ तालिकाओं का उपयोग लुआ टीम द्वारा आविष्कार किया गया था। वे सीएलयू में विकास से प्रेरित थे, और मेरा मानना ​​है कि वे अवेक और आइकन में इसी तरह के काम से अवगत थे, लेकिन इस डिग्री के लिए परिष्करण लुआ टीम का एक महत्वपूर्ण योगदान है।

    टेबल्स का भी एक बहुत ही कुशल कार्यान्वयन है, जिसका लुआ टीम द्वारा आविष्कार किया गया था।

  • लुआ के कार्यात्मक सुविधाओं योजना के रूप में एक ही अर्थ विज्ञान है, लेकिन लुआ प्रथम श्रेणी के काम करता है, जो मुझे लगता है कि वे कार्यात्मक प्रोग्रामिंग की जर्नल में प्रकाशन के लिए प्रस्तुत करना चाहिए की एक अद्वितीय कार्यान्वयन है।

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

  • कचरा-संग्रह तकनीक मानक है।

  • लुआ कोरआउट कुछ पुराने विचारों पर एक नया कदम प्रस्तुत करता है। नया लेआउट एसीएम प्रोग्रामिंग भाषाएं और सिस्टम पर लेनदेन के योग्य माना जाता था, इसलिए मुझे लगता है कि लुआ टीम को मौलिकता के लिए क्रेडिट मिलता है।

  • लुआ मेटाटेबल्स सामान्य लिस्प मेटाबोजेक्ट प्रोटोकॉल से संबंधित हैं।

मुझे लगता है कि लुआ के लुआ टीम की ताकत का एक अद्वितीय संयोजन से सफलता परिणाम:

  • आप HOPL paper पढ़ते हैं, तो आप देखेंगे कि लुआ टीम कई से अच्छी तरह परिचित थे प्रोग्रामिंग भाषाओं में विकास और सर्वोत्तम विचारों में से चुनने में सक्षम थे। लोकप्रिय पटकथा भाषाओं के अधिकांश डिजाइनर शौकिया रहे हैं और लगभग इतनी अच्छी तरह से सूचित नहीं किया गया है।

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

  • लुआ शानदार इंजीनियर है। कार्यान्वयन सिर्फ आश्चर्यजनक रूप से अच्छा है। यह महान इंजीनियरों द्वारा आंशिक रूप से महान काम है और आंशिक रूप से 15 साल की अवधि में डिजाइन को संशोधित करने का अवसर है।

मैं पाठकों पूछ चुनने और शोधन अच्छी तरह से स्थापित विचारों एक सुसंगत पूरे फार्म का की कठिनाई कम करने के लिए नहीं द्वारा बंद कर देंगे। यह बेहद मुश्किल काम है और शायद ही कभी यह माना जाना चाहिए।

+9

+1: बहुत अच्छा जवाब –

+5

समय के लिए, http://www.lua.org/doc/jucs05.pdf पर "लुआ 5.0 का कार्यान्वयन" देखें, हम उस पेपर पर काम कर रहे हैं, नॉर्मन, लेकिन लुआ 5.2 अभी हमारा ध्यान प्राप्त कर रहा है ... – lhf

+1

TOPLAS पेपर, रिविसिटिंग कोरोटाइन्स पर एलटीयू पर चर्चा की गई, जिस कारण से मैंने इस पर ध्यान नहीं दिया: http://lambda-the-ultimate.org/node/ 2868 –

4

लुआ छोटा है, कुल कोड केवल एएनएसआई सी में हजारों लाइनों है (पायथन में कोड की दस गुना मोर लाइनें हैं)।

लुआ बहुत स्थिर है, या कहें, भाषा अब तय की गई है।

लुआ में अच्छी इंजीनियरिंग है। इसका कोड पढ़ने और हैक करना आसान है। (यह भी छोटा)

इसका लाइसेंस आपको जो कुछ भी करना चाहता है उसे अनुमति देता है।

लुआ में लेखन सी एक्सटेंशन अन्य भाषाओं की तुलना में आसान है, पाइथन कहते हैं।

+4

तो यह भाषा डिजाइन के साथ कुछ भी करने के बजाय, अच्छी इंजीनियरिंग के रूप में गिना जाता है? –

+2

नहीं, वहां बहुत अच्छी इंजीनियरिंग है, लेकिन अभिनव डिजाइन निर्णय हैं, जैसा कि नॉर्मन ने बताया। एचओपीएल पेपर पढ़ें। – lhf

0

मुझे लगता है कि ऐसा इसलिए है क्योंकि लुआ अपेक्षाकृत सरल और व्यावहारिक है। यह अगली ऑपरेटिंग सिस्टम, क्रिस्टिस 3 या एसएपी क्लोन बनाने के लिए भाषा होने की कोशिश नहीं करता है, लेकिन यह क्या करता है, यह अच्छा करता है, यानी एक स्क्रिप्टिंग भाषा के रूप में कार्य करता है।

7

Lua कार्यात्मक प्रोग्रामिंग का समर्थन करता है और यह Prototype-based प्रोग्रामिंग शैली पर आधारित है, जो लचीला और शक्तिशाली है।

आईएमओ यह एक दिलचस्प भाषा है।

आप प्रोटोटाइप विरासत के बारे में कुछ विचार में पढ़ना चाहते हैं, मैं तुम्हें सुझाव देने के लिए
पढ़ स्टीव येग के The Universal Design Pattern ब्लॉग पोस्ट।

+0

धन्यवाद: लिंक दिलचस्प है। लुआ पर काम 1 99 3 में, स्वयं की रिहाई के 3 साल बाद, और बोर्निंग के "सालों के विपरीत ऑब्जेक्ट उन्मुख भाषाओं में प्रोटोटाइप" के 7 साल बाद शुरू हुआ। क्या लुआ ने प्रोटोटाइप-आधारित प्रोग्रामिंग में नया परिचय दिया था? –

+0

@ चार्ल्स, मैंने केवल लुआ में प्रोटोटाइप के साथ प्रयोग किया है और मुझे वास्तव में आपके प्रश्न का उत्तर नहीं पता है। हो सकता है कि कोई और उस पर कुछ प्रकाश डाल सके। –

+0

निश्चित रूप से। यह निश्चित रूप से मुझे रूचि देता है कि मैं पहले की प्रोटोटाइप-आधारित भाषा के बारे में नहीं सोच सकता जिसने व्यापक उपयोग प्राप्त किया। –

2

एक लैम्ब्डा द अल्टीमेट स्टोरी, Small is Beautiful: the design of Lua है, रॉबर्ट इरुसलिस्की की उसी नाम के स्टैनफोर्ड में हालिया बातचीत पर चर्चा करते हुए। चर्चा वर्तमान में केवल कंटेनर डेटा संरचना के रूप में टेबल रखने की योग्यता पर केंद्रित है; अब तक, लूआ के सी इंटरफ़ेस से निपटने, बातचीत के दूसरे भाग पर थोड़ा सा कहा गया है।

संबंधित मुद्दे