रीबोल

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

"Although it can be used for programming, writing functions, and performing processes, its greatest strength is the ability to easily create domain-specific languages or dialects"

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

मूल रूप से, भाषा और इसका आधिकारिक कार्यान्वयन मालिकाना सॉफ्टवेयर और बंद स्रोत था, जिसे REBOL Technologies द्वारा विकसित किया गया था। लॉरेंस रोसेन (वकील) के साथ चर्चा के बाद, रीबोल संस्करण 3 दुभाषिया अपाचे लाइसेंस|अपाचे 2.0 लाइसेंस के तहत 12 दिसंबर 2012 को जारी किया गया था। पुराने संस्करण केवल बाइनरी रूप में उपलब्ध हैं, और उनके लिए कोई स्रोत रिलीज़ की योजना नहीं है।

रीबोल का उपयोग इंटरनेट अनुप्रयोग प्रक्रिया सामग्री ( ग्राहक की ओर |क्लाइंट- और सर्वर साइड  दोनों), डेटाबेस एप्लिकेशन, उपयोगिता सॉफ्टवेयर और मल्टीमीडिया एप्लिकेशन को प्रोग्राम करने के लिए किया गया है।

व्युत्पत्ति
रीबोल शुरू में सभी बड़े अक्षरों में लिखी गई रिलेटिव एक्सप्रेशन बेस्ड ऑब्जेक्ट लैंग्वेज का संक्षिप्त रूप था। प्रस्तुत भाषा नामकरण में आधुनिक प्रवृत्तियों के साथ तालमेल बिठाना, उदाहरणार्थ ऐतिहासिक नाम LISP के स्थान पर लिस्प का प्रयोग करने से, प्रोग्रामर्स ने सभी बड़े अक्षरों में REBOL लिखने की प्रथा बंद कर दी। ससेनराथ ने अंततः अपने ब्लॉग पर सामुदायिक बहस में नामकरण का प्रश्न रखा। बाद के लेखन में, ससेनराथ ने भाषा का नाम रिबोल लिखने की परंपरा को अपनाया।

इतिहास
पहली बार 1997 में रिलीज़ किया गया, रेबोल को एमिगाओएस के वास्तुकार और प्राथमिक डेवलपर कार्ल ससेनराथ द्वारा 20 साल की अवधि में डिजाइन किया गया था, जो उनके सांकेतिक शब्दार्थ के अध्ययन और प्रोग्रामिंग भाषाओं लिस्प (प्रोग्रामिंग भाषा), फोर्थ (प्रोग्रामिंग भाषा), लोगो (प्रोग्रामिंग भाषा), और सेल्फ (प्रोग्रामिंग भाषा) से अवधारणाओं का उपयोग करने पर आधारित था।


 * 1) REBOL Technologies की स्थापना 1998 में हुई थी।
 * 2) REBOL 2, दुभाषिया, जो विस्तारित दुभाषिया संस्करणों का मूल बन गया, पहली बार 1999 में जारी किया गया था।
 * 3) REBOL/कमांड, जिसने मजबूत एन्क्रिप्शन और  डेटाबेस कनेक्टिविटी खोलें  एक्सेस जोड़ा, सितंबर 2000 में जारी किया गया था
 * 4) REBOL/View को अप्रैल 2001 में रिलीज़ किया गया था, जिसमें मुख्य भाषा पर ग्राफ़िकल क्षमताएँ जोड़ी गई थीं।
 * 5) REBOL/IOS, REBOL के साथ निर्मित एक विस्तार योग्य सहयोग वातावरण अगस्त 2001 में जारी किया गया था।
 * 6) REBOL/SDK, बाइंडिंग के लिए कर्नेल का विकल्प और साथ ही एक प्रीप्रोसेसर प्रदान करता है, जिसे दिसंबर 2002 में जारी किया गया था।
 * 7) रीबोल 3 [आर3], दुभाषिया (कंप्यूटिंग) का नवीनतम संस्करण, के अल्फा संस्करण जनवरी 2008 से आरईबीओएल टेक्नोलॉजीज द्वारा जारी किए गए थे। दिसंबर 2012 में अपाचे 2 प्रोजेक्ट के रूप में रिलीज होने के बाद से, इसे रीबोल समुदाय द्वारा विकसित किया जा रहा है।

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

R3-GUI में एक समान उदाहरण इस प्रकार दिखता है:



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

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

ग्राफिकल क्षमताओं वाले एक रिबोल दुभाषिया को कई बोलियों को समझना और व्याख्या करना होगा। नीचे दी गई तालिका महत्व के क्रम में सबसे महत्वपूर्ण सूचीबद्ध करती है।

सिंटेक्स
रीबोल सिंटैक्स (प्रोग्रामिंग भाषाएं) फ्री-फॉर्म भाषा है|फ्री-फॉर्म, विशिष्ट स्थिति की आवश्यकता नहीं है। हालाँकि, इंडेंट शैली का उपयोग अक्सर पाठ की संरचना को मानव पाठकों तक बेहतर ढंग से पहुँचाने के लिए किया जाता है।

विभिन्न बोलियों के वाक्यात्मक गुण भिन्न हो सकते हैं। सभी रेबोल बोलियों के लिए सामान्य मंच डेटा विनिमय बोली है; अन्य बोलियाँ आमतौर पर इससे ली गई हैं। सभी बोलियों के लिए सामान्य मंच होने के अलावा, डेटा एक्सचेंज बोली का उपयोग सीधे डेटा और मेटाडेटा का प्रतिनिधित्व करने, डेटा संरचनाओं को भरने, इंटरनेट पर डेटा भेजने और उन्हें डेटा स्टोरेज में सहेजने के लिए किया जाता है।

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

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

टिप्पणी (कंप्यूटर प्रोग्रामिंग) पंक्ति के अंत तक अर्धविराम के बाद दिखाई दे सकती है। बहु-पंक्ति टिप्पणियाँ या टिप्पणियाँ जिन्हें लेक्सिकल पार्सर द्वारा अनदेखा नहीं किया जाता है, उन्हें बहु-पंक्ति स्ट्रिंग्स जैसे सामान्य डेटाटाइप का उपयोग करके लिखा जा सकता है।

शब्दार्थ
डोमेन-विशिष्ट भाषा वाले ब्लॉक को विशिष्ट मूल्यांकनकर्ता कार्यों के लिए तर्क (कंप्यूटर विज्ञान) के रूप में प्रस्तुत किया जा सकता है।

करो
सबसे अधिक बार उपयोग किया जाने वाला मूल्यांकनकर्ता है  समारोह। इसका उपयोग डिफ़ॉल्ट रूप से इंटरप्रेटर कमांड लाइन इंटरफेस में टेक्स्ट इनपुट की व्याख्या करने के लिए किया जाता है।

दो बोली द्वारा व्याख्या की गई  फ़ंक्शन, एक अभिव्यक्ति-उन्मुख प्रोग्रामिंग भाषा है|डेटा विनिमय बोली की अभिव्यक्ति-उन्मुख उपभाषा है। भाषा की मुख्य शब्दार्थ इकाई अभिव्यक्ति (प्रोग्रामिंग) है। ALGOL से आने वाली अनिवार्य प्रोग्रामिंग भाषाओं के विपरीत, do बोली में न तो कीवर्ड होते हैं, न ही कथन।

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

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

ध्यान देने योग्य एक विशिष्ट समस्या यह है कि चरों को निर्दिष्ट समग्र मानों की प्रतिलिपि नहीं बनाई जाती है। प्रतिलिपि बनाने के लिए, मान को पास करना होगा  समारोह।

e> फ़ंक्शन आम तौर पर एक पोलिश संकेतन का अनुसरण करता है, जहां एक फ़ंक्शन उन तर्कों को संसाधित करता है जो उसका अनुसरण करते हैं। हालाँकि, इन्फ़िक्स ऑपरेटर (प्रोग्रामिंग) का उपयोग करते हुए इन्फिक्स संकेतन भी मौजूद है। इन्फिक्स मूल्यांकन को उपसर्ग मूल्यांकन पर प्राथमिकता दी जाती है। उदाहरण के लिए, निरपेक्ष मान -2 + 3 1 लौटाता है, क्योंकि इन्फ़िक्स जोड़ को निरपेक्ष मान की गणना पर प्राथमिकता दी जाती है। इन्फिक्स अभिव्यक्तियों का मूल्यांकन करते समय, मूल्यांकन का क्रम बाएं से दाएं होता है, कोई भी ऑपरेटर दूसरे के ऊपर संचालन का क्रम नहीं लेता है। उदाहरण के लिए, रिटर्न 20, जबकि गुणन को प्राथमिकता देने वाले मूल्यांकन से 14 प्राप्त होगा। सभी ऑपरेटरों के पास उपसर्ग संस्करण होते हैं।  आमतौर पर तर्कों को किसी फ़ंक्शन में पास करने से पहले उनका मूल्यांकन करता है। तो, नीचे दी गई अभिव्यक्ति:  http://en.wikipedia.org/wiki/Rebol पढ़ें प्रिंट करें पहले विकिपीडिया रिबोल पेज को पढ़ता है और फिर परिणाम को पास करता है  समारोह। मूल्यांकन के क्रम को बदलने के लिए कोष्ठक का उपयोग किया जा सकता है। पोलिश संकेतन का उपयोग करके, अभिव्यक्तियों में कोष्ठक के उपयोग से बचा जा सकता है।

सरल प्राथमिकता नियम दोनों एक लाभ हैं: साथ ही एक नुकसान:
 * अभिव्यक्ति लिखते समय प्राथमिकता तालिकाओं से परामर्श लेने की आवश्यकता नहीं है
 * जब कोई नया ऑपरेटर परिभाषित किया जाता है तो प्राथमिकता तालिकाओं को फिर से लिखने की आवश्यकता नहीं होती है
 * भावों को इन्फ़िक्स से प्रीफ़िक्स नोटेशन में और इसके विपरीत आसानी से लिप्यंतरण किया जा सकता है
 * अधिक पारंपरिक प्राथमिकता नियमों के आदी उपयोगकर्ता आसानी से गलती कर सकते हैं

पार्स
ई> फ़ंक्शन का उपयोग अधिमानतः बोलियों को निर्दिष्ट करने, सत्यापित करने, बदलने और व्याख्या करने के लिए किया जाता है। यह रन टाइम पर पार्स एक्सप्रेशन का मिलान करके ऐसा करता है।

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

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

पार्स बोली ऊपर से नीचे पार्सिंग भाषा या पार्सिंग अभिव्यक्ति व्याकरण (पीईजी) द्वारा दर्शाए गए व्याकरणों के परिवार से संबंधित है। मुख्य समानता परिवार के सभी सदस्यों के पास अनुक्रम और विकल्प ऑपरेटरों की उपस्थिति है। पार्स बोली वाक्यविन्यास और पार्स बोली और पीईजी के बीच समानताएं एक पार्सिंग अभिव्यक्ति व्याकरण के इस लिप्यंतरण द्वारा चित्रित की गई हैं#उदाहरण जो एक अंकगणितीय अभिव्यक्ति को पार्स करता है:

कार्यान्वयन
आधिकारिक रीबोल 2.7.8 कार्यान्वयन कई संस्करणों (/कोर, /व्यू, /कमांड, /एसडीके और /आईओएस) में उपलब्ध है। /कोर और /व्यू दोनों संस्करण स्वतंत्र रूप से पुनर्वितरण योग्य सॉफ़्टवेयर हैं।

रनटाइम वातावरण को एकल निष्पादन योग्य फ़ाइल में संग्रहीत किया जाता है। Rebol/Core 2.7.8, कंसोल संस्करण, लगभग 300 KB का है और Rebol/View 2.7.8, ग्राफिकल यूज़र इंटरफ़ेस संस्करण, लगभग 650 KB आकार का है।

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

विरासत

 * रीबोल को डगलस क्रॉकफोर्ड द्वारा जावास्क्रिप्ट ऑब्जेक्ट नोटेशन की प्रेरणाओं में से एक के रूप में नामित किया गया था। * रीबोल ने ओपन-सोर्स ओर्का प्रोजेक्ट को प्रेरित किया, जो एक व्याख्या की गई रीबोल जैसी भाषा है।
 * बोरोन एक व्याख्या की गई, होमोइकोनिक भाषा है जो रीबोल से प्रेरित और उसके समान है, जो डोमेन विशिष्ट भाषाओं को एम्बेड करने के लिए है। इसे LGPLv3 की शर्तों के तहत लाइसेंस प्राप्त C लाइब्रेरी के रूप में कार्यान्वित किया गया है।
 * रेड (प्रोग्रामिंग भाषा) सीधे रीबोल से प्रेरित थी, फिर भी रेड के कार्यान्वयन विकल्प विशेष रूप से इसकी कथित सीमाओं पर काबू पाने के लिए तैयार किए गए थे।

यह भी देखें

 * डोमेन-विशिष्ट भाषा
 * भाषा-उन्मुख प्रोग्रामिंग

बाहरी संबंध

 * A REBOL tutorial
 * Rebol 3 Tutorial
 * Rebol 3 (Oldes' fork) sources
 * Rebol 3 (Oldes' fork) sources