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

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

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

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

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

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

स्रोत

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