वाला एक प्रोग्रामिंग भाषा है जिसका उद्देश्य एक आधुनिक प्रोग्रामिंग अनुभव प्रदान करना है जबकि C प्रोग्रामिंग भाषा के साथ संगतता सुनिश्चित करना है, विशेष रूप से GObject प्रकार प्रणाली के भीतर। इसे सरल और कुशल बनाने के लिए डिज़ाइन किया गया था, मुख्य रूप से GNOME डेस्कटॉप वातावरण के लिए अनुप्रयोगों के विकास को लक्षित करते हुए। C# या जावा जैसी भाषाओं के समान एक सिंटैक्स के साथ, वाला वस्तु-उन्मुख प्रोग्रामिंग, प्रकार अनुमान और लैम्ब्डा अभिव्यक्तियों जैसी सुविधाओं का समर्थन करता है, जबकि स्वदेशी प्रदर्शन के लिए C कोड में संकलित होता है।
वाला का निर्माण जूर्ग बिलेटर द्वारा किया गया था और यह 2006 में GNOME परियोजना के हिस्से के रूप में पहली बार प्रकट हुआ। विकास का मुख्य कारण GObject विकास के लिए C का सीधे उपयोग करने में कठिनाई और जटिलता थी। जूर्ग ने एक उच्च-स्तरीय भाषा प्रदान करने का लक्ष्य रखा जो C की शक्ति को बनाए रखते हुए सिंटैक्स को सरल बनाती और उत्पादकता बढ़ाती।
वाला C# और जावा जैसी भाषाओं से प्रेरित था, विशेष रूप से इसके सिंटैक्स और सुविधाओं जैसे कि गार्बेज संग्रहण और प्रकार सुरक्षा में। यह GNOME पुस्तकालयों और GObject के साथ निकटता से एकीकृत है, जो GNOME पारिस्थितिकी तंत्र का एक मूल भाग है, जिससे यह उस वातावरण में अनुप्रयोगों के निर्माण के लिए उपयुक्त बनाता है। वाला उच्च-स्तरीय अमूर्तता और निम्न-स्तरीय प्रदर्शन के बीच एक पुल प्रदान करता है, जिससे यह समान भाषाओं में विशिष्ट बनता है।
अब तक, वाला काफी परिपक्व हो चुका है और इसका एक समर्पित समुदाय है। इसे सक्रिय रूप से बनाए रखा जाता है, नियमित अपडेट और नवीनतम GNOME प्रौद्योगिकियों के लिए समर्थन के साथ। वाला डेस्कटॉप अनुप्रयोगों के विकास में तेजी से उपयोग किया जा रहा है, विशेष रूप से उन अनुप्रयोगों के लिए जो लिनक्स वातावरण के लिए अभिप्रेत हैं, और इसकी उपयोगिता और दक्षता के कारण इसे अपनाने की गति बढ़ रही है।
वाला कक्षाओं, विरासत और इंटरफेस के माध्यम से वस्तु-उन्मुख प्रोग्रामिंग (OOP) का समर्थन करता है। कक्षाओं को class
कीवर्ड का उपयोग करके परिभाषित किया जा सकता है।
class MyClass {
public int my_value;
public MyClass(int value) {
my_value = value;
}
}
वाला प्रकार अनुमान की अनुमति देता है, जिसका अर्थ है कि डेवलपर को हमेशा एक चर के प्रकार को स्पष्ट रूप से निर्दिष्ट करने की आवश्यकता नहीं होती है।
var greeting = "Hello, World!"; // स्ट्रिंग प्रकार अनुमानित
वाला लैम्ब्डा अभिव्यक्तियों का समर्थन करता है, जो अनाम कार्यों के निर्माण की अनुमति देती हैं।
void main() {
var add = (int a, int b) => a + b;
print("%d\n", add(3, 4));
}
वाला गुणों की परिभाषा की अनुमति देता है, जो स्वचालित रूप से गेटर और सेट्टर विधियों को प्रदान करता है।
class Point {
public int x { get; set; }
public int y { get; set; }
}
वाला सिग्नल का समर्थन करता है, जो GObject प्रणाली की एक विशेषता है जो घटना-प्रेरित प्रोग्रामिंग को सक्षम बनाती है।
signal my_signal(string message);
वाला में अंतर्निहित त्रुटि प्रबंधन सुविधाएँ हैं, जिससे अपवादों को प्रबंधित करना आसान हो जाता है।
void risky_function() throws Error {
// कोड जो त्रुटि उत्पन्न कर सकता है
}
वाला स्थैतिक टाइपिंग को लागू करता है, जो संकलन समय पर त्रुटियों को पकड़ने में मदद करता है।
int my_number = 42; // यह एक पूर्णांक होना चाहिए।
वाला लचीले डेटा संरचनाएँ बनाने के लिए संग्रह और जनरिक प्रकारों का समर्थन करता है।
List<string> my_list = new List<string>();
वाला सीधे C पुस्तकालयों और कार्यों को कॉल कर सकता है, जिससे मौजूदा C कोडबेस के साथ निर्बाध बातचीत की अनुमति मिलती है।
public C.function(param1);
वाला मेटाडेटा के लिए एनोटेशन के उपयोग की अनुमति देता है, जो अन्य प्रणालियों के साथ इंटरफेसिंग के लिए उपयोगी है।
[CustomAnnotation]
class AnnotatedClass { }
वाला कोड को vala
संकलक का उपयोग करके संकलित किया जाता है, जो वाला कोड को C में अनुवादित करता है। फिर यह परिणामस्वरूप C कोड को निष्पादन योग्य में संकलित करने के लिए एक मानक C संकलक (जैसे GCC) का उपयोग करता है। निर्माण प्रणाली को Meson
के साथ एकीकृत किया जा सकता है, जो GNOME पारिस्थितिकी तंत्र में सामान्यतः उपयोग किया जाता है।
कुछ एकीकृत विकास वातावरण (IDEs) हैं जो वाला विकास का समर्थन करते हैं:
वाला परियोजना बनाने के लिए, एक .vala
एक्सटेंशन के साथ एक फ़ाइल बनाएं, फिर कमांड लाइन का उपयोग करें:
vala --pkg gtk+-3.0 my_program.vala -o my_program
यह उदाहरण my_program.vala
को संकलित करता है, इसे GTK+ पुस्तकालय के खिलाफ लिंक करता है।
वाला मुख्य रूप से GNOME पारिस्थितिकी तंत्र के भीतर डेस्कटॉप अनुप्रयोगों के निर्माण के लिए उपयोग किया जाता है। यह उन परियोजनाओं में सामान्य है जो GObject-उन्मुख विकास की आवश्यकता होती है। पाठ संपादक, मीडिया प्लेयर और सिस्टम उपयोगिताएँ जैसे अनुप्रयोग वाला में विकसित किए गए हैं। उल्लेखनीय परियोजनाएँ शामिल हैं:
समान भाषाओं की तुलना में, वाला GObject प्रणाली के साथ एकीकरण और GNOME अनुप्रयोगों पर ध्यान केंद्रित करने के कारण अलग खड़ा होता है।
वाला कोड का अनुवाद करने के लिए एक मौजूदा उपकरण स्वयं वाला से C संकलक है, क्योंकि यह प्रभावी रूप से वाला स्रोत कोड को C में अनुवादित करता है। यदि आप अधिक सामान्यीकृत उपकरणों की तलाश कर रहे हैं, तो वाला के लिए विशेष रूप से कोई व्यापक रूप से अपनाए गए स्रोत से स्रोत अनुवाद उपकरण नहीं हैं, लेकिन GObject इंट्रोस्पेक्शन जैसे उपकरणों का उपयोग अन्य भाषाओं के साथ बाइंडिंग बनाने के लिए किया जा सकता है।