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

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

घोषणाओं को लावापीई में ट्री संरचनाओं के रूप में दर्शाया जाता है जिनके सबट्री ध्वस्त या विस्तारित हो सकते हैं। घोषित लावा wikt:entity के गुणों को पॉप-अप संवादों के माध्यम से संपादित किया जा सकता है।

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

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

लावा जीएनयू जनरल पब्लिक लाइसेंस का उपयोग करने वाला ओपन सोर्स सॉफ्टवेयर सॉफ्टवेयर है (यह भी देखें फ्री सॉफ्टवेयर फाउंडेशन पर लावा और KDE-Apps.org पर)। यह वर्तमान में माइक्रोसॉफ़्ट विंडोज़, लिनक्स और मैक ओएस एक्स प्लेटफॉर्म पर चलता है।

स्रोत

 * लावा: संरचना एडिटर्स के साथ ब्लॉक-आधारित प्रोग्रामिंग (जर्मन, OBJEKTsprektrum 1/2002 में आलेख)