लुआ (प्रोग्रामिंग भाषा)

From Vigyanwiki
Revision as of 23:54, 13 February 2023 by alpha>Shikhav

हांग और कमजोर टाइपिंग, बतख टाइपिंग | कार्यान्वयन = Lua, LuaJIT, LuaVela, MoonSharp, Luvit, LuaRT, Luau | प्रोग्रामिंग_भाषा = एएनएसआई सी | बोलियाँ = Metalua, आइडल, जीएसएल शेल | impact_by = C++, CLU (प्रोग्रामिंग भाषा), Modula-2, योजना (प्रोग्रामिंग भाषा), SNOBOL | प्रभावित = GameMonkey Script, आयो (प्रोग्रामिंग भाषा), जावास्क्रिप्ट, जूलिया (प्रोग्रामिंग भाषा), मिनी डी, लाल (प्रोग्रामिंग भाषा), रिंग_ (प्रोग्रामिंग_भाषा),[1] रूबी (प्रोग्रामिंग भाषा), गिलहरी (प्रोग्रामिंग भाषा), मूनस्क्रिप्ट, सी-- | ऑपरेटिंग_सिस्टम = क्रॉस-प्लेटफॉर्म | लाइसेंस = मेरा लाइसेंस | वेबसाइट = | फ़ाइल एक्सट = .lua | विकिबुक्स = }}

लुआ (/ˈlə/ LOO; से Portuguese: लुआ [ˈlu.(w)ɐ] अर्थ चंद्रमा) एक हल्की प्रोग्रामिंग भाषा, उच्च-स्तरीय प्रोग्रामिंग भाषा, बहु-प्रतिमान प्रोग्रामिंग भाषा है जिसे मुख्य रूप से अनुप्रयोगों में स्क्रिप्टिंग भाषा के लिए डिज़ाइन किया गया है।[2] लुआ क्रॉस-प्लेटफ़ॉर्म है, चूंकि संकलक बाईटकोड का इंटरप्रेटर (कंप्यूटिंग) एएनएसआई सी में लिखा गया है,[3] और लुआ के पास इसे अनुप्रयोगों में एम्बेड करने के लिए अपेक्षाकृत सरल सी एपीआई है।[4]

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

इतिहास

लुआ को 1993 में ब्राज़िल में रियो डी जनेरियो के परमधर्मपीठीय कैथोलिक विश्वविद्यालय में कंप्यूटर ग्राफिक्स टेक्नोलॉजी ग्रुप (टेक्ग्राफ) के सदस्य रॉबर्टो इरुसलिम्स्की, लुइज़ हेनरिक डी फिगुएरेडो और वाल्डेमर सेलेस द्वारा बनाया गया था।

1977 से 1992 तक, ब्राजील में कंप्यूटर हार्डवेयर और सॉफ्टवेयर के लिए मजबूत व्यापार बाधाओं (जिसे मार्केट रिजर्व कहा जाता है) की नीति थी। उस माहौल में, टेकग्राफ के ग्राहक राजनीतिक या आर्थिक रूप से विदेश से अनुकूलित सॉफ्टवेयर खरीदने का जोखिम नहीं उठा सकते थे। उन कारणों ने टेकग्राफ को खरोंच से आवश्यक बुनियादी उपकरणों को लागू करने के लिए प्रेरित किया था।[5]

लुआ के पूर्ववर्ती डेटा-विवरण/कॉन्फ़िगरेशन भाषाएँ एसओएल (सिंपल ऑब्जेक्ट लैंग्वेज) और डीईएल (डेटा-एंट्री भाषा) थीं।[6] वे 1992-1993 में टेकग्राफ में दो अलग-अलग परियोजनाओं में कुछ लचीलापन जोड़ने के लिए स्वतंत्र रूप से विकसित किए गए थे (दोनों पेट्रोब्रास कंपनी में इंजीनियरिंग अनुप्रयोगों के लिए इंटरैक्टिव ग्राफिकल प्रोग्राम थे)। एसओएल और डीईएल में किसी भी प्रवाह-नियंत्रण संरचनाओं की कमी थी, और पेट्रोब्रास ने उन्हें पूर्ण प्रोग्रामिंग शक्ति जोड़ने की बढ़ती आवश्यकता महसूस किया था।

लुआ के विकास में, भाषा के लेखकों ने लिखा:[5]

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

लुआ 1.0 को इस तरह से डिजाइन किया गया था कि इसके ऑब्जेक्ट कंस्ट्रक्टर्स, वर्तमान प्रकाश और लचीली शैली से थोड़ा अलग होने के कारण, एसओएल के डेटा-विवरण सिंटैक्स को शामिल (इसलिए नाम लुआ: सोल का अर्थ पुर्तगाली में सूर्य, और लुआ का अर्थ चंद्रमा) किया गया है। नियंत्रण संरचनाओं के लिए लुआ सिंटेक्स (प्रोग्रामिंग भाषाएं) ज्यादातर मापांक (if, while, repeat/until) से उधार लिया गया था, लेकिन सीएलयू (प्रोग्रामिंग लैंग्वेज) (कई असाइनमेंट और फ़ंक्शन कॉल से कई रिटर्न, संदर्भ या स्पष्ट सूचक (कंप्यूटर प्रोग्रामिंग) द्वारा कॉल करने के लिए एक सरल विकल्प के रूप में), सी ++ (एक स्थानीय चर को अनुमति देने का साफ विचार) से भी प्रभावित हुआ था। केवल वहीं घोषित किया जाए जहां हमें इसकी आवश्यकता है[5]), SNOBOL और AWK (सहयोगी सरणियाँ)। डॉ. डॉब के जर्नल में प्रकाशित एक लेख में, लुआ के रचनाकारों ने यह भी कहा कि एलआईएसपी और योजना उनके एकल, सर्वव्यापी डेटा-संरचना तंत्र (सूची (सार डेटा प्रकार)) के साथ तालिका को लुआ की प्राथमिक डेटा संरचना के रूप में विकसित करने के उनके निर्णय पर एक बड़ा प्रभाव था।[7]

लुआ सिमेंटिक्स समय के साथ विशेष रूप से गुमनाम कार्यों और पूर्ण शाब्दिक दायरे की शुरुआत के साथ योजना से प्रभावित हुए हैं।[5] नए लुआ संस्करणों में कई सुविधाएँ जोड़ी गईं।

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

सुविधाएँ

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

सामान्य तौर पर, लुआ सरल, लचीला मेटाप्रोग्रामिंग प्रदान करने का प्रयास करता है| परिणामस्वरूप, आधार भाषा लाइटवेट प्रोग्रामिंग भाषा है—पूर्ण संदर्भ दुभाषिया (कंप्यूटिंग) केवल लगभग 247 किलोबाइट संकलित है[3]-और अनुप्रयोगों की एक विस्तृत श्रृंखला के लिए आसानी से अनुकूलनीय।

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

लुआ उन्नत सुविधाओं के एक छोटे सेट को लागू करता है जैसे प्रथम श्रेणी के कार्य, कचरा संग्रह (कंप्यूटर विज्ञान), क्लोजर (कंप्यूटर विज्ञान), उचित पूंछ की पुनरावृत्ति, प्रकार रूपांतरण (रन टाइम पर स्ट्रिंग और संख्या मानों के बीच स्वत: रूपांतरण), कोरटाइन (सहकारी) मल्टीटास्किंग) और गतिशील लोडिंग

सिंटेक्स

क्लासिक हैलो, वर्ल्ड! कार्यक्रम को इस प्रकार लिखा जा सकता है:[8] <वाक्यविन्यास लैंग = लुआ> प्रिंट (हैलो, वर्ल्ड!) </वाक्यविन्यास हाइलाइट> या के रूप में: <वाक्यविन्यास लैंग = लुआ> प्रिंट 'हैलो, वर्ल्ड!' </वाक्यविन्यास हाइलाइट>

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

 स्थानीय एक्स = 1
 मैं = 2 के लिए, एन करते हैं
   एक्स = एक्स * मैं
 समाप्त
 वापसी एक्स

समाप्त </वाक्यविन्यास हाइलाइट>

नियंत्रण प्रवाह

लुआ में एक प्रकार की सशर्त (कंप्यूटर प्रोग्रामिंग) परीक्षा है: if then end वैकल्पिक के साथ else तथा elseif then निष्पादन नियंत्रण निर्माण।

सामान्य if then end कथन के लिए तीनों खोजशब्दों की आवश्यकता है: <वाक्यविन्यास लैंग = लुआ> अगर शर्त है तो --स्टेटमेंट बॉडी समाप्त </वाक्यविन्यास हाइलाइट> else निष्पादन को नियंत्रित करने के लिए ई> कीवर्ड को एक साथ स्टेटमेंट ब्लॉक के साथ जोड़ा जा सकता है if स्थिति का मूल्यांकन करता है false: <वाक्यविन्यास लैंग = लुआ> अगर शर्त है तो --स्टेटमेंट बॉडी वरना --स्टेटमेंट बॉडी समाप्त </वाक्यविन्यास हाइलाइट>

का उपयोग करके कई शर्तों के अनुसार निष्पादन को भी नियंत्रित किया जा सकता है elseif then खोजशब्द: <वाक्यविन्यास लैंग = लुआ> अगर शर्त है तो --स्टेटमेंट बॉडी अन्य स्थिति तब --स्टेटमेंट बॉडी अन्य - वैकल्पिक --वैकल्पिक डिफ़ॉल्ट स्टेटमेंट बॉडी समाप्त </वाक्यविन्यास हाइलाइट>

लुआ में चार प्रकार के कंडीशनल लूप होते हैं: जबकि लूप|while लूप, द repeat लूप (लूप के दौरान डू के समान | do while लूप), लूप के लिए न्यूमेरिक |for लूप, और जेनेरिक for फंदा।

<वाक्यविन्यास लैंग = लुआ> --स्थिति = सत्य

जबकि हालत करते हैं

 --बयान

समाप्त

दोहराना

 --बयान

स्थिति तक

for i = first, last, delta do --delta नेगेटिव हो सकता है, जिससे for लूप काउंट डाउन या अप हो सकता है

 --बयान
 --उदाहरण: प्रिंट (मैं)

समाप्त </वाक्यविन्यास हाइलाइट>

सामान्य for फंदा: <वाक्यविन्यास लैंग = लुआ> कुंजी के लिए, जोड़े में मान (_G) करते हैं

 प्रिंट (कुंजी, मान)

समाप्त </वाक्यविन्यास हाइलाइट> मेज पर पुनरावृति करेंगे _G मानक इटरेटर फ़ंक्शन का उपयोग करना pairs, जब तक यह वापस नहीं आता nil.

लूप नेस्टिंग (प्रोग्रामिंग) भी हो सकते हैं (दूसरे लूप के अंदर डालें)।

<वाक्यविन्यास लैंग = लुआ> स्थानीय ग्रिड = {

 {11, 12, 13},
 {21, 22, 23},
 {31, 32, 33}

}

वाई के लिए, जोड़े में पंक्ति (ग्रिड) करते हैं

 एक्स के लिए, जोड़े में मूल्य (पंक्ति) करते हैं
   प्रिंट (एक्स, वाई, मान)
 समाप्त

समाप्त </वाक्यविन्यास हाइलाइट>

कार्य

प्रथम श्रेणी के फ़ंक्शन के रूप में लुआ के कार्यों का उपचार | प्रथम श्रेणी के मान निम्न उदाहरण में दिखाए गए हैं, जहां प्रिंट फ़ंक्शन का व्यवहार संशोधित किया गया है: <वाक्यविन्यास लैंग = लुआ> करना

 स्थानीय ओल्डप्रिंट = प्रिंट
 - पुराने प्रिंट के रूप में वर्तमान प्रिंट फ़ंक्शन को स्टोर करें
 फ़ंक्शन प्रिंट
   - प्रिंट फ़ंक्शन को फिर से परिभाषित करें। सामान्य प्रिंट फ़ंक्शन का अभी भी उपयोग किया जा सकता है
     ओल्डप्रिंट के माध्यम से। नए के पास केवल एक तर्क है।
   ओल्डप्रिंट (एस == फू और बार या एस)
 समाप्त

समाप्त </वाक्यविन्यास हाइलाइट> कोई भविष्य कॉल करता है print अब नए फ़ंक्शन के माध्यम से रूट किया जाएगा, और लुआ के स्कोप (प्रोग्रामिंग) # लेक्सिकल स्कोपिंग के कारण, पुराना प्रिंट फ़ंक्शन केवल नए, संशोधित प्रिंट द्वारा ही एक्सेस किया जा सकेगा।

लुआ क्लोजर (कंप्यूटर प्रोग्रामिंग) का भी समर्थन करता है, जैसा कि नीचे दिखाया गया है: <वाक्यविन्यास लैंग = लुआ> समारोह जोड़ (एक्स)

 - एक नया फ़ंक्शन लौटाएं जो तर्क में x जोड़ता है
 वापसी समारोह (वाई)
   --[=[ जब हम वेरिएबल x को संदर्भित करते हैं, जो वर्तमान के बाहर है
     दायरा और जिसका जीवनकाल इस गुमनाम से कम होगा
     कार्य, लुआ एक बंद बनाता है।] =]
   रिटर्न एक्स + वाई
 समाप्त

समाप्त फोरप्लस = जोड़ (4) प्रिंट (फोरप्लस (3)) - प्रिंट 7

- यह फ़ंक्शन को निम्न तरीके से कॉल करके भी प्राप्त किया जा सकता है: प्रिंट (जोड़ें (4) (3)) - ऐसा इसलिए है क्योंकि हम सीधे '3' तर्क के साथ 'एडटो (4)' से लौटे फ़ंक्शन को कॉल कर रहे हैं।

 यह डेटा लागत को कम करने और प्रदर्शन को बेहतर बनाने में भी मदद करता है यदि इसे पुनरावृत्त रूप से कहा जाता है।

</वाक्यविन्यास हाइलाइट> चर के लिए एक नया समापन x हर बार बनाया जाता है addto कहा जाता है, ताकि लौटाया गया प्रत्येक नया अज्ञात फ़ंक्शन हमेशा स्वयं का उपयोग करेगा x पैरामीटर। बंद करने का प्रबंधन लुआ के कचरा संग्राहक द्वारा किया जाता है, किसी अन्य वस्तु की तरह।

टेबल्स

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

तालिका कुंजी और डेटा जोड़े का एक संग्रह है, जहां डेटा को कुंजी द्वारा संदर्भित किया जाता है; दूसरे शब्दों में, यह एक हैश तालिका विषम साहचर्य सरणी है।

का उपयोग करके तालिकाएँ बनाई जाती हैं {} कंस्ट्रक्टर सिंटैक्स।

<वाक्यविन्यास लैंग = लुआ> a_table = {} -- एक नया, खाली टेबल बनाता है </वाक्यविन्यास हाइलाइट>

तालिकाएँ हमेशा संदर्भ द्वारा पारित की जाती हैं (देखें साझा करके कॉल करें)।

एक कुंजी (इंडेक्स) को छोड़कर कोई भी मूल्य हो सकता है nil और NaN, कार्यों सहित।

<वाक्यविन्यास लैंग = लुआ> a_table = {x = 10} - संख्या 10 पर एक प्रविष्टि मैपिंग x के साथ एक नई तालिका बनाता है। प्रिंट (a_table [ x ]) - स्ट्रिंग कुंजी से जुड़े मान को प्रिंट करता है, इस मामले में 10। बी_टेबल = ए_टेबल b_table[ x ] = 20 -- तालिका में मान को 20 में बदल दिया गया है। प्रिंट (b_table [ x ]) - 20 प्रिंट करता है। प्रिंट (a_table [ x ]) - 20 भी प्रिंट करता है, क्योंकि a_table और b_table दोनों एक ही टेबल को संदर्भित करते हैं। </वाक्यविन्यास हाइलाइट>

कुंजी के रूप में स्ट्रिंग (कंप्यूटर विज्ञान) का उपयोग करके एक तालिका को अक्सर वस्तु रचना (या रिकॉर्ड (कंप्यूटर विज्ञान)) के रूप में उपयोग किया जाता है। क्योंकि इस तरह का उपयोग बहुत आम है, लुआ ऐसे क्षेत्रों तक पहुँचने के लिए एक विशेष सिंटैक्स पेश करता है।[9] <वाक्यविन्यास लैंग = लुआ> बिंदु = {x = 10, y = 20} -- नई तालिका बनाएँ प्रिंट (प्वाइंट [ x ]) - 10 प्रिंट करता है प्रिंट (प्वाइंट.एक्स) - ऊपर की रेखा के समान ही अर्थ है। आसानी से पढ़ा जाने वाला डॉट नोटेशन सिंटैक्टिक शुगर है। </वाक्यविन्यास हाइलाइट>

संबंधित कार्यों को संग्रहीत करने के लिए तालिका का उपयोग करके, यह नामस्थान के रूप में कार्य कर सकता है।

<वाक्यविन्यास लैंग = लुआ> बिंदु = {}

प्वाइंट.न्यू = फंक्शन (एक्स, वाई)

 वापसी {x = x, y = y} - वापसी {[x] = x, [y] = y}

समाप्त

प्वाइंट.सेट_एक्स = फ़ंक्शन (बिंदु, एक्स)

 बिंदु। एक्स = एक्स - बिंदु [एक्स] = एक्स;

समाप्त </वाक्यविन्यास हाइलाइट>

टेबल्स को स्वचालित रूप से एक संख्यात्मक कुंजी असाइन की जाती है, जिससे उन्हें सरणी डेटा प्रकार के रूप में उपयोग करने में सक्षम बनाया जाता है। पहला स्वचालित सूचकांक 0 के बजाय 1 है क्योंकि यह कई अन्य प्रोग्रामिंग भाषाओं के लिए है (हालांकि 0 के स्पष्ट सूचकांक की अनुमति है)।

एक संख्यात्मक कुंजी 1 एक स्ट्रिंग कुंजी से अलग है "1".

<वाक्यविन्यास लैंग = लुआ> सरणी = {ए, बी, सी, डी} - सूचकांक स्वचालित रूप से असाइन किए जाते हैं। प्रिंट (सरणी [2]) - प्रिंट बी। लुआ में स्वचालित अनुक्रमण 1 से शुरू होता है। प्रिंट (#array) - प्रिंट 4. # टेबल और स्ट्रिंग्स के लिए लंबाई ऑपरेटर है। सरणी [0] = z - शून्य एक कानूनी सूचकांक है। प्रिंट (# सरणी) - अभी भी 4 प्रिंट करता है, क्योंकि लुआ सरणियाँ 1-आधारित हैं। </वाक्यविन्यास हाइलाइट>

एक टेबल की लंबाई t किसी भी पूर्णांक सूचकांक के रूप में परिभाषित किया गया है n ऐसा है कि t[n] नहीं है nil तथा t[n+1] है nil; इसके अलावा, अगर t[1] है nil, n शून्य हो सकता है। एक नियमित सरणी के लिए, 1 से दिए गए गैर-शून्य मानों के साथ n, इसकी लंबाई बिल्कुल इतनी ही है n, इसके अंतिम मूल्य का सूचकांक। यदि सरणी में छेद हैं (अर्थात, अन्य गैर-शून्य मानों के बीच शून्य मान), तो #t a से सीधे पहले आने वाला कोई भी सूचकांक हो सकता है nil मूल्य (अर्थात, यह सरणी के अंत के रूप में ऐसे किसी भी शून्य मान पर विचार कर सकता है)।[10] <वाक्यविन्यास लैंग = लुआ> उदाहरण टेबल = {

 {1, 2, 3, 4},
 {5, 6, 7, 8}

} प्रिंट (उदाहरण तालिका [1] [3]) - प्रिंट 3 प्रिंट (उदाहरण तालिका [2] [4]) - प्रिंट 8 </वाक्यविन्यास हाइलाइट>

एक तालिका वस्तुओं की एक सरणी हो सकती है।

<वाक्यविन्यास लैंग = लुआ> फ़ंक्शन प्वाइंट (एक्स, वाई) - प्वाइंट ऑब्जेक्ट कन्स्ट्रक्टर

 वापसी {x = x, y = y} - एक नई वस्तु (तालिका) बनाता है और वापस करता है

समाप्त सरणी = {प्वाइंट (10, 20), प्वाइंट (30, 40), प्वाइंट (50, 60)} - बिंदुओं की सरणी बनाता है

                       - सरणी = {{x = 10, y = 20}, {x = 30, y = 40}, {x = 50, y = 60}};

प्रिंट (सरणी [2] .y) - प्रिंट 40 </वाक्यविन्यास हाइलाइट>

किसी सरणी का अनुकरण करने के लिए हैश मैप का उपयोग करना सामान्य रूप से वास्तविक सरणी का उपयोग करने की तुलना में धीमा होता है; हालाँकि, इस समस्या से बचने में मदद करने के लिए लुआ तालिकाओं को सरणियों के रूप में उपयोग करने के लिए अनुकूलित किया गया है।Cite error: Closing </ref> missing for <ref> tag इस उदाहरण में, हम वैक्टर को एक व्युत्पन्न वर्ग में उनके मूल्यों को एक स्थिरांक से गुणा करने की अनुमति देते हैं।

<वाक्यविन्यास लैंग = लुआ> स्थानीय वेक्टर = {} वेक्टर.__इंडेक्स = वेक्टर

फ़ंक्शन वेक्टर: नया (x, y, z) - कंस्ट्रक्टर

 - यहाँ, स्वयं का तात्पर्य किसी भी वर्ग के नए से है
 -- विधि जिसे हम कहते हैं। एक व्युत्पन्न वर्ग में, स्व-इच्छा
 - व्युत्पन्न वर्ग हो; वेक्टर वर्ग में, self
 - वेक्टर होगा
 रिटर्न सेटमेटेबल ({x = x, y = y, z = z}, स्वयं)

समाप्त

फ़ंक्शन वेक्टर: परिमाण () - एक और तरीका

 - स्वयं का उपयोग करके अंतर्निहित वस्तु का संदर्भ लें
 वापसी गणित.sqrt(self.x^2 + self.y^2 + self.z^2)

समाप्त

- वर्ग विरासत का उदाहरण स्थानीय वेक्टरमुल्ट = {} वेक्टरMult.__index = वेक्टरMult setmetatable(VectorMult, वेक्टर) - वेक्टर के बच्चे को वेक्टर मल्टी बनाएं

फ़ंक्शन वेक्टर मल्टी: गुणा (मान)

 स्व.एक्स = स्व.एक्स * मूल्य
 Self.y = Self.y * मान
 स्व.जेड = स्व.जेड * मूल्य
 स्वयं लौटें

समाप्त

स्थानीय vec = वेक्टरमल्टी: नया (0, 1, 0) - एक वेक्टर बनाएँ प्रिंट (vec: परिमाण ()) - एक विधि कॉल करें (आउटपुट: 1) प्रिंट (vec.y) - एक सदस्य चर तक पहुँचें (आउटपुट: 1) vec: गुणा (2) - वेक्टर के सभी घटकों को 2 से गुणा करें प्रिंट (vec.y) - सदस्य को फिर से एक्सेस करें (आउटपुट: 2) </वाक्यविन्यास हाइलाइट>

लुआ एकाधिक वंशानुक्रम का भी समर्थन करता है; __index या तो एक समारोह या एक टेबल हो सकता है।[11] ऑपरेटर ओवरलोडिंग भी की जा सकती है; लुआ मेटाटेबल्स में तत्व हो सकते हैं जैसे __add, __sub, और इसी तरह।[12]


कार्यान्वयन

Lua प्रोग्राम सीधे टेक्स्ट वाली Lua फ़ाइल से भाषा की व्याख्या नहीं करते हैं, लेकिन बायटेकोड में कंपाइलर होते हैं, जो तब Lua आभासी मशीन पर चलाया जाता है। संकलन प्रक्रिया आमतौर पर उपयोगकर्ता के लिए अदृश्य होती है और रन टाइम (प्रोग्राम जीवनचक्र चरण) के दौरान निष्पादित की जाती है। कंपाइलर को छोड़ कर मेजबान पर्यावरण की स्मृति पदचिह्न को कम करें। लुआ बाइटकोड का उपयोग करके लुआ के भीतर से उत्पादन और निष्पादन भी किया जा सकता है dump स्ट्रिंग लाइब्रेरी से फ़ंक्शन और load/loadstring/loadfile कार्य करता है। लुआ संस्करण 5.3.4 सी कोड की लगभग 24,000 लाइनों में लागू किया गया है।[2][3]

अधिकांश सीपीयू की तरह, और अधिकांश वर्चुअल मशीनों (जो स्टैक मशीन|स्टैक-आधारित हैं) के विपरीत, लुआ वीएम रजिस्टर मशीन|रजिस्टर-आधारित है, और इसलिए वास्तविक हार्डवेयर डिज़ाइन के अधिक निकट है। रजिस्टर आर्किटेक्चर दोनों मूल्यों की अत्यधिक प्रतिलिपि से बचाता है और प्रति कार्य निर्देशों की कुल संख्या को कम करता है। लुआ 5 की वर्चुअल मशीन व्यापक उपयोग के लिए पहले रजिस्टर-आधारित शुद्ध वीएम में से एक है।[13] तोता आभासी मशीन और Android (ऑपरेटिंग सिस्टम) का Dalvik (सॉफ़्टवेयर) दो अन्य प्रसिद्ध रजिस्टर-आधारित VM हैं। PCScheme का VM भी रजिस्टर-आधारित था।[14] यह उदाहरण फैक्टोरियल फ़ंक्शन परिभाषित #फ़ैक्टोरियल उदाहरण की बायटेकोड सूची है (जैसा कि luac 5.1 संकलक):[15] समारोह <फैक्टोरियल.लुआ: 1,7> (9 निर्देश, 36 बाइट्स 0x8063c60 पर)

1 परम, 6 स्लॉट, 0 अपवैल्यू, 6 लोकल, 2 स्थिरांक, 0 फ़ंक्शन
1 [2] भार 1 -1; 1
2 [3] लोड 2 -2; 2
3 [3] मूव 3 0
4 [3] भार 4 -1; 1
5 [3] फोरप्रेप 2 1; से 7
6 [4] एमयूएल 1 1 5
7 [3] फोरलूप 2 -2; से 6
8 [6] वापसी 1 2
9 [7] रिटर्न 0 1

सी एपीआई

लुआ को अन्य अनुप्रयोगों में एम्बेड करने का इरादा है, और इस उद्देश्य के लिए सी (प्रोग्रामिंग भाषा) अप्लिकेशन प्रोग्रामिंग अंतरफलक प्रदान करता है। एपीआई को दो भागों में बांटा गया है: लुआ कोर और लुआ सहायक पुस्तकालय।[16] Lua API का डिज़ाइन, Python (प्रोग्रामिंग लैंग्वेज) के API के विपरीत, C कोड में मैन्युअल संदर्भ गिनती की आवश्यकता को समाप्त करता है। एपीआई, भाषा की तरह, न्यूनतर है। उन्नत कार्यक्षमता सहायक पुस्तकालय द्वारा प्रदान की जाती है, जिसमें बड़े पैमाने पर पूर्वप्रक्रमक मैक्रो (कंप्यूटर विज्ञान) होते हैं जो जटिल तालिका संचालन में सहायता करते हैं।

लुआ सी एपीआई स्टैक (डेटा संरचना) आधारित है। लुआ स्टैक से सबसे सरल सी डेटा प्रकारों (पूर्णांक, फ़्लोट्स, आदि) को पुश और पॉप करने के लिए फ़ंक्शन प्रदान करता है, साथ ही स्टैक के माध्यम से तालिकाओं में हेरफेर करने के लिए फ़ंक्शन प्रदान करता है। लुआ स्टैक पारंपरिक स्टैक से कुछ अलग है; स्टैक को सीधे अनुक्रमित किया जा सकता है, उदाहरण के लिए। नकारात्मक सूचकांक स्टैक के शीर्ष से ऑफ़सेट का संकेत देते हैं। उदाहरण के लिए, -1 सबसे ऊपर है (सबसे हाल ही में धक्का दिया गया मूल्य), जबकि सकारात्मक सूचकांक नीचे से ऑफसेट (सबसे पुराना मूल्य) इंगित करते हैं। स्टैक का उपयोग करके सी और लुआ कार्यों के बीच मार्शलिंग (कंप्यूटर विज्ञान) डेटा भी किया जाता है। लुआ फ़ंक्शन को कॉल करने के लिए, तर्कों को स्टैक पर धकेल दिया जाता है, और फिर lua_call वास्तविक फ़ंक्शन को कॉल करने के लिए उपयोग किया जाता है। लुआ से सीधे बुलाए जाने वाले सी फ़ंक्शन को लिखते समय, स्टैक से तर्क पढ़े जाते हैं।

यहाँ C से Lua फ़ंक्शन को कॉल करने का एक उदाहरण दिया गया है:

<वाक्यविन्यास प्रकाश लैंग = सी>

  1. शामिल <stdio.h>
  2. शामिल <lua.h> // लुआ मुख्य पुस्तकालय (लुआ_*)
  3. शामिल <lauxlib.h> // लुआ सहायक पुस्तकालय (luaL_*)

पूर्णांक मुख्य (शून्य) {

   // लुआ राज्य बनाएं
   लुआ_स्टेट * एल = लुआएल_न्यूस्टेट ();
   // लोड करें और एक स्ट्रिंग निष्पादित करें
   if (luaL_dostring(L, function foo (x,y) return x+y end )) {
       लुआ_क्लोज़ (एल);
       वापसी -1;
   }
   // ग्लोबल फू का पुश वैल्यू (ऊपर परिभाषित फंक्शन)
   // ढेर के लिए, पूर्णांक 5 और 3 के बाद
   lua_getglobal (एल, फू);
   लुआ_पुशिनटेगर (एल, 5);
   लुआ_पुशिनटेगर (एल, 3);
   लुआ_कॉल (एल, 2, 1); // एक फ़ंक्शन को दो तर्कों और एक वापसी मान के साथ कॉल करें
   प्रिंटफ (परिणाम:% d \ n, lua_tointeger (एल, -1)); // स्टैक टॉप पर आइटम का पूर्णांक मान प्रिंट करें
   लुआ_पॉप (एल, 1); // स्टैक को मूल स्थिति में लौटाएं
   लुआ_क्लोज़ (एल); // करीब लुआ राज्य
   वापसी 0;

} </वाक्यविन्यास हाइलाइट>

इस उदाहरण को चलाना देता है:

$ cc -o उदाहरण example.c -llua
$ ./उदाहरण
परिणाम: 8
</पूर्व>

सी एपीआई लुआ स्टैक में विभिन्न छद्म-सूचकांकों पर स्थित कुछ विशेष टेबल भी प्रदान करता है। पर LUA_GLOBALSINDEX लुआ 5.2 से पहले[17] ग्लोबल्स टेबल है, _G लुआ के भीतर से, जो मुख्य नामस्थान है। पर स्थित एक रजिस्ट्री भी है LUA_REGISTRYINDEX जहां C प्रोग्राम बाद में पुनर्प्राप्ति के लिए Lua मान संग्रहीत कर सकते हैं।

Lua API का उपयोग करके एक्सटेंशन मॉड्यूल लिखना संभव है। एक्सटेंशन मॉड्यूल लाइब्रेरी (कंप्यूटिंग) # डायनेमिक लिंकिंग हैं जिनका उपयोग लुआ लिपियों को मूल सुविधाएं प्रदान करके दुभाषिया की कार्यक्षमता बढ़ाने के लिए किया जा सकता है। लुआ स्क्रिप्ट एक्सटेंशन मॉड्यूल का उपयोग करके लोड कर सकती हैं require,[16]लुआ में ही लिखे गए मॉड्यूल की तरह, या साथ package.loadlib.[18] जब सी लाइब्रेरी के माध्यम से लोड किया जाता है require("foo") लुआ समारोह की तलाश करेंगे luaopen_foo और इसे कॉल करें, जो लुआ से कॉल करने योग्य किसी भी सी फ़ंक्शन के रूप में कार्य करता है और आम तौर पर विधियों से भरी तालिका देता है। चट्टानों के रूप में जाने जाने वाले मॉड्यूल का बढ़ता हुआ संग्रह LuaRocks नामक पैकेज प्रबंधन प्रणाली के माध्यम से उपलब्ध है,[19] सीपीएएन, RubyGems और पायथन अंडे की भावना में। अन्य स्क्रिप्टिंग भाषाओं सहित अधिकांश लोकप्रिय प्रोग्रामिंग भाषाओं के लिए पूर्व लिखित लुआ भाषा बंधन मौजूद है।[20] सी ++ के लिए, कई टेम्पलेट-आधारित दृष्टिकोण और कुछ स्वचालित बाध्यकारी जेनरेटर हैं।

अनुप्रयोग

वीडियो गेम के विकास में, वीडियो गेम प्रोग्रामर # स्क्रिप्टर द्वारा लुआ को व्यापक रूप से एक स्क्रिप्टिंग भाषा के रूप में उपयोग किया जाता है, मुख्य रूप से एम्बेड करने की कथित सहजता, तेजी से निष्पादन और लघु सीखने की अवस्था के कारण।[21] लुआ का उपयोग करने वाले उल्लेखनीय खेलों में शामिल हैं रोबोक्स,[22] गैरी का मॉड, वारक्राफ्ट की दुनिया, Payday 2, फैंटसी स्टार ऑनलाइन 2, Dota 2, एंग्री बर्ड्स स्पेस,[23] क्राइसिस (वीडियो गेम),[24] गंभीर प्रयास। कुछ गेम जो मूल रूप से लुआ प्रोग्रामिंग या स्क्रिप्टिंग का समर्थन नहीं करते हैं, इस कार्यक्षमता को मॉड्स द्वारा जोड़ा जाता है, जैसे कि कंप्यूटरक्राफ्ट Minecraft के लिए करता है। इसके अलावा, Lua का उपयोग गैर-वीडियो गेम सॉफ़्टवेयर में भी किया जाता है, जैसे कि Adobe Lightroom, Moho (सॉफ़्टवेयर), iClone, Aerospike (डेटाबेस) और FreeBSD और NetBSD में कुछ सिस्टम सॉफ़्टवेयर, और MediaWiki पर टेम्पलेट स्क्रिप्टिंग भाषा के रूप में उपयोग किया जाता है। स्क्रिबंटो एक्सटेंशन।[25] 2003 में, GameDev.net द्वारा किए गए एक सर्वेक्षण से पता चला कि लुआ गेम प्रोग्रामिंग के लिए सबसे लोकप्रिय स्क्रिप्टिंग भाषा थी।[26] 12 जनवरी 2012 को, लुआ को प्रोग्रामिंग टूल्स श्रेणी में पत्रिका गेम डेवलपर (पत्रिका) से फ्रंट लाइन अवॉर्ड 2011 के विजेता के रूप में घोषित किया गया था।[27] बड़ी संख्या में गैर-गेम एप्लिकेशन भी एक्स्टेंसिबिलिटी के लिए लुआ का उपयोग करते हैं, जैसे कि लुआटेक्स, टीएक्स टाइप-सेटिंग भाषा का कार्यान्वयन, रेडिस, एक की-वैल्यू डेटाबेस, नव के, एक टेक्स्ट एडिटर, नगनेक्स, एक वेब सर्वर और वायरशार्क , एक नेटवर्क पैकेट विश्लेषक। Scribunto एक्सटेंशन के माध्यम से, Lua MediaWiki सॉफ़्टवेयर में सर्वर-साइड स्क्रिप्टिंग भाषा के रूप में उपलब्ध है जो विकिपीडिया और अन्य विकी को शक्ति प्रदान करता है।[28] इसके उपयोगों में विकिडेटा से लेखों में डेटा के एकीकरण की अनुमति देना शामिल है,[29] और शक्ति देना automated taxobox system.

व्युत्पन्न भाषाएँ

=== लुआ === को संकलित करने वाली भाषाएं * मूनस्क्रिप्ट एक गतिशील प्रोग्रामिंग भाषा है, कॉफीस्क्रिप्ट से प्रेरित व्हॉट्सएप चरित्र-संवेदनशील स्क्रिप्टिंग भाषा है, जिसे लुआ में संकलित किया गया है। इसका मतलब है कि उपयोग करने के बजाय do तथा end (या { तथा }) कोड के अनुभागों को परिसीमित करने के लिए यह लाइन ब्रेक (कंप्यूटिंग) और इंडेंटेशन शैली का उपयोग करता है।[30][31][32] मूनस्क्रिप्ट का एक उल्लेखनीय उपयोग एक वीडियो गेम वितरण वेबसाइट Itch.io है। * Haxe Lua लक्ष्य के संकलन का समर्थन करता है, Lua 5.1-5.3 के साथ-साथ LuaJIT 2.0 और 2.1 का समर्थन करता है। * फेनेल, एक लिस्प बोली जो लुआ को लक्षित करती है।[32]* अर्न, एक लिस्प (प्रोग्रामिंग भाषा) बोली जो लुआ पर बनी है।[33] * एमुलेट, एक एमएल (प्रोग्रामिंग भाषा) जैसी फंक्शनल प्रोग्रामिंग, जिसका कंपाइलर लुआ फाइलों को आउटपुट करता है।[34]

बोलियां

* लुजिट * Roblox से Luau, धीरे-धीरे टाइपिंग और एर्गोनोमिक परिवर्धन के साथ Lua 5.1 भाषा।[35] * वैकल्पिक स्थिर टाइपिंग के साथ रवि, JIT-सक्षम Lua 5.3 भाषा। जेआईटी प्रकार की जानकारी द्वारा निर्देशित है।[36] * शाइन, लुआजिट का एक फोर्क जिसमें मॉड्यूल सिस्टम और मैक्रो सिस्टम समेत कई एक्सटेंशन हैं।[37] इसके अलावा, लुआ उपयोगकर्ता समुदाय संदर्भ सी कार्यान्वयन के शीर्ष पर कुछ पावर पैच प्रदान करता है।[38]

यह भी देखें

* प्रोग्रामिंग भाषाओं की तुलना

संदर्भ

  1. Ring Team (5 December 2017). "रिंग प्रोग्रामिंग भाषा और अन्य भाषाएँ". ring-lang.net.
  2. 2.0 2.1 Ierusalimschy, Roberto; de Figueiredo, Luiz Henrique; Filho, Waldemar Celes (June 1996). "लुआ-एक एक्स्टेंसिबल एक्सटेंशन लैंग्वेज". Software: Practice and Experience. 26 (6): 635–652. doi:10.1002/(SICI)1097-024X(199606)26:6<635::AID-SPE26>3.0.CO;2-P. Retrieved 24 October 2015.
  3. 3.0 3.1 3.2 "लुआ के बारे में". Lua.org. Retrieved 2011-08-11.
  4. Yuri Takhteyev (21 April 2013). "ब्राजील से विकिपीडिया तक". Foreign Affairs. Retrieved 25 April 2013.
  5. 5.0 5.1 5.2 5.3 Ierusalimschy, R.; Figueiredo, L. H.; Celes, W. (2007). "The evolution of Lua" (PDF). प्रक्रिया। एसीएम एचओपीएल III का. pp. 2–1–2–26. doi:10.1145/1238844.1238846. ISBN 978-1-59593-766-7. S2CID 475143.[dead link]
  6. "एक विस्तार भाषा का विकास: लुआ का इतिहास". 2001. Retrieved 2008-12-18.
  7. Figueiredo, L. H.; Ierusalimschy, R.; Celes, W. (December 1996). "लुआ: एक एक्स्टेंसिबल एंबेडेड लैंग्वेज। कुछ मेटामैकेनिज्म कई सुविधाओं को बदल देते हैं". Dr. Dobb's Journal. Vol. 21, no. 12. pp. 26–33.
  8. "लुआ में प्रोग्रामिंग : 1".
  9. "लुआ 5.1 संदर्भ मैनुअल". 2014. Retrieved 2014-02-27.
  10. "लुआ 5.1 संदर्भ मैनुअल". 2012. Retrieved 2012-10-16.
  11. "लुआ में प्रोग्रामिंग: 16.3". www.lua.org. Retrieved 2021-09-16.
  12. "लुआ-उपयोगकर्ता विकी: मेटामेथोड्स ट्यूटोरियल". lua-users.org. Retrieved 2021-09-16.
  13. Ierusalimschy, R.; Figueiredo, L. H.; Celes, W. (2005). "लुआ 5.0 का कार्यान्वयन". J. Of Universal Comp. Sci. 11 (7): 1159–1176.
  14. Texas Instruments (1990). पीसी योजना: उपयोगकर्ता गाइड और भाषा संदर्भ मैनुअल, व्यापार संस्करण. ISBN 0-262-70040-9.
  15. Kein-Hong Man (2006). "लुआ 5.1 वीएम निर्देशों का नो-फ्रिल्स परिचय" (PDF).
  16. 16.0 16.1 "लुआ 5.2 संदर्भ मैनुअल". Lua.org. Retrieved 2012-10-23.
  17. "एपीआई में बदलाव". Lua 5.2 Reference Manual. Lua.org. Retrieved 2014-05-09.
  18. "लुआ 5.4 संदर्भ मैनुअल". www.lua.org. Retrieved 2022-06-01.
  19. "लुआ रॉक्स". लुआ रॉक्स wiki. Retrieved 2009-05-24.
  20. "लुआ के लिए बाध्यकारी कोड". Lua-users wiki. Retrieved 2009-05-24.
  21. "लुआ को गेम लैंग्वेज क्यों माना जाता है?". Archived from the original on 20 August 2013. Retrieved 2017-04-22.{{cite web}}: CS1 maint: bot: original URL status unknown (link)
  22. "लुआउ क्यों?". Luau (in English). Retrieved 2022-03-23.
  23. "टीआईएल एंग्री बर्ड्स को लुआ - पोस्ट - इम्गुर में कोडित किया गया था". Retrieved 23 March 2022.
  24. "क्राइसिस सर्वर-साइड मोडिंग का परिचय". Retrieved 23 March 2022.
  25. "लुआ कार्य करता है". wow.gamepedia.com (in English). Retrieved 2021-03-01.
  26. "मतदान के परिणाम". Archived from the original on 7 December 2003. Retrieved 2017-04-22.{{cite web}}: CS1 maint: bot: original URL status unknown (link)
  27. "फ्रंट लाइन पुरस्कार विजेताओं की घोषणा की". Archived from the original on 15 June 2013. Retrieved 2017-04-22.{{cite web}}: CS1 maint: bot: original URL status unknown (link)
  28. "एक्सटेंशन: स्क्रिप्ट - मीडियाविकि". MediaWiki.org. Retrieved 21 February 2019.
  29. "विकिडाटा:इन्फोबॉक्स ट्यूटोरियल - विकिडाटा". www.wikidata.org. Retrieved 2018-12-21.
  30. "भाषा गाइड - मूनस्क्रिप्ट 0.5.0". moonscript.org. Retrieved 2020-09-25.
  31. leaf (2020-09-23), leafo/moonscript, retrieved 2020-09-25
  32. 32.0 32.1 Andre Alves Garzia. "लुआ को संकलित करने वाली भाषाएँ". AndreGarzia.com. Retrieved 25 September 2020.
  33. "अर्न: लुआ | के लिए एक लिस्प कार्यान्वयन अर्न". urn-lang.com. Retrieved 2021-01-12.
  34. "एमुलेट एमएल". amulet.works (in English). Retrieved 2021-01-12.
  35. "जाल". Roblox.GitHub.io (in English).
  36. "रवि प्रोग्रामिंग लैंग्वेज". GitHub.
  37. Hundt, Richard (2021-04-22). "रिचर्डहंट/शाइन". GitHub.
  38. "लुआ पावर पैच". lua-users.org.

अग्रिम पठन

* Ierusalimschy, R. (2013). Programming in Lua (3rd ed.). Lua.org. ISBN 978-85-903798-5-0. (The 1st ed. is available online.) * Gutschmidt, T. (2003). Game Programming with Python, Lua, and Ruby. Course Technology PTR. ISBN 978-1-59200-077-7. * Schuytema, P.; Manyen, M. (2005). Game Development with Lua. Charles River Media. ISBN 978-1-58450-404-7. * Jung, K.; Brown, A. (2007). Beginning Lua Programming. Wrox Press. ISBN 978-0-470-06917-2. Archived from the original on 8 July 2018. Retrieved 7 July 2018. * Figueiredo, L. H.; Celes, W.; Ierusalimschy, R., eds. (2008). Lua Programming Gems. Lua.org. ISBN 978-85-903798-4-3. * Takhteyev, Yuri (2012). Coding Places: Software Practice in a South American City. The MIT Press. ISBN 978-0-262-01807-4. Archived from the original on 2012-11-02. Chapters 6 and 7 are dedicated to Lua, while others look at software in Brazil more broadly. * Varma, Jayant (2012). Learn Lua for iOS Game Development. Apress. ISBN 978-1-4302-4662-6. * Matheson, Ash (29 April 2003). "An Introduction to Lua". GameDev.net. Archived from the original on 18 December 2012. Retrieved 3 January 2013. * Fieldhouse, Keith (16 February 2006). "Introducing Lua". ONLamp.com. O'Reilly Media. Archived from the original on 12 March 2006. Retrieved 28 February 2006. * Streicher, Martin (28 April 2006). "Embeddable scripting with Lua". developerWorks. IBM. Archived from the original on 2 July 2009. Retrieved 7 July 2018. * Quigley, Joseph (1 June 2007). "A Look at Lua". Linux Journal. * Hamilton, Naomi (11 September 2008). "The A-Z of Programming Languages: Lua". Computerworld. IDG. Archived from the original on 8 July 2018. Retrieved 7 July 2018. Interview with Roberto Ierusalimschy. * Ierusalimschy, Roberto; de Figueiredo, Luiz Henrique; Celes, Waldemar (12 May 2011). "Passing a Language through the Eye of a Needle". ACM Queue. 9 (5): 20–29. doi:10.1145/1978862.1983083. S2CID 19484689. How the embeddability of Lua impacted its design. * Ierusalimschy, Roberto; de Figueiredo, Luiz Henrique; Celes, Waldemar (November 2018). "A Look at the Design of Lua". Communications of the ACM. 61 (11): 114–123. doi:10.1145/3186277. S2CID 53114923.[permanent dead link] * Lua papers and theses

इस पेज में लापता आंतरिक लिंक की सूची

*सीएलयू (प्रोग्रामिंग भाषा) *उच्च स्तरीय प्रोग्रामिंग भाषा *भाषा का अंकन *दुभाषिया (कंप्यूटिंग) *ट्रेड बैरियर *रियो डी जनेरियो के पोंटिफिकल कैथोलिक विश्वविद्यालय *संदर्भ द्वारा कॉल करें *साहचर्य सरणी *अनाम समारोह *वर्ग (कंप्यूटर प्रोग्रामिंग) *जानकारी छुपाना *प्रथम श्रेणी समारोह *नाम स्थान *कम से कम विशेषाधिकार का सिद्धांत *रूपांतरण टाइप करें *क्लोजर (कंप्यूटर साइंस) *गतिशील रूप से टाइप किया गया *coroutine *सरणी डेटा संरचना *हैश टेबल *शेयर करके कॉल करें *स्वयं (प्रोग्रामिंग भाषा) *फैक्टरी विधि पैटर्न *विधि (कंप्यूटर विज्ञान) *समय-समय पर संकलन *रन टाइम (कार्यक्रम जीवनचक्र चरण) *व्याख्या की गई भाषा *दैविक (सॉफ्टवेयर) *पायथन (प्रोग्रामिंग भाषा) *ढेर (डेटा संरचना) *अजगर के अंडे *वीडियो गेम विकास *एयरोस्पाइक (डेटाबेस) *मोहो (सॉफ्टवेयर) *nginx *लुआटेक्स *विकिडाटा *व्हाइटस्पेस चरित्र *क्रमिक टाइपिंग

बाहरी संबंध

* No URL found. Please specify a URL here or add one to Wikidata. * Lua Users, Community * Lua Forum * LuaDist * Lua Rocks - Package manager * Projects in Lua Template:Lua programming language