मर्करी (प्रोग्रामिंग भाषा)
File:Mercury (programming language) logo.jpg | |
Paradigm | Logic, functional, object-oriented |
---|---|
द्वारा डिज़ाइन किया गया | Zoltan Somogyi |
Developer | University of Melbourne |
पहली प्रस्तुति | April 8, 1995 |
Stable release | 22.01.6
/ May 10, 2023 |
टाइपिंग अनुशासन | Strong, static, polymorphic |
कार्यान्वयन भाषा | Mercury |
प्लेटफॉर्म | IA-32, x86-64, ARM, Sparc64, Java, CLI |
ओएस | Cross-platform: Unix, Linux, macOS, Solaris, FreeBSD, OpenBSD, Windows, Android |
लाइसेंस | GPL compiler, LGPL standard library |
फ़ाइल नाम एक्सटेंशनएस | .m |
वेबसाइट | www |
Major implementations | |
Melbourne Mercury Compiler | |
Influenced by | |
Prolog, Hope, Haskell |
मर्करी एक कार्यात्मक तर्क प्रोग्रामिंग लैंग्वेज है, जो वास्तविक दुनिया के उपयोगों के लिए बनाई गई है। पहला संस्करण फेगस हेन्डरसन थॉमस कॉनवे और ज़ोल्टन सोमोगी द्वारा सोमोगी के पर्यवेक्षण में मेलबर्न कंप्यूटर विज्ञान विभाग के विश्वविद्यालय में विकसित किया गया और इसे अप्रैल 8, 1995 को जारी किया गया था।
मर्करी विशुद्ध रूप से घोषणात्मक तर्क प्रोग्रामिंग लैंग्वेज के रूप में है। यह प्रोलॉग और हास्केल (प्रोग्रामिंग लैंग्वेज ) दोनों से संबंधित है।[1] इसमें एक मजबूत स्टैटिक बहुरूपी प्रकार की प्रणाली और मजबूत मोड निर्धारण वाद पद्धति के रूप में निहित है।
यह आधिकारिक कार्यान्वयन मेलबर्न मर्करी कंपाइलर अधिकांश यूनिक्स और यूनिक्स जैसे प्लेटफार्मों के लिए उपलब्ध है, जिसमें लिनक्स, मैकओएस और माइक्रोसॉफ़्ट विंडोज़ के रूप में सम्मलित हैं।
अवलोकन
मर्करी तर्क प्रोग्रामिंग लैंग्वेज प्रोलॉग पर आधारित होता है। इसमें समान सिंटैक्स और समान मूल अवधारणाएं होती है जैसे कि एसएलडी रिज़ॉल्यूशन (एसएलडी) कलन विधि इत्यादि। इसे दृढ़ मोड के साथ प्रोलॉग के शुद्ध उपसमूह के रूप में देखा जा सकता है। जैसे, इसकी तुलना अधिकांशतः सुविधाओं और रन-टाइम दक्षता में इसके पूर्ववर्ती से तुलना की जाती है।
लैंग्वेज को सॉफ्टवेयर इंजीनियरिंग सिद्धांतों का उपयोग करके डिज़ाइन किया गया है। प्रोलॉग के मूल कार्यान्वयन के विपरीत इसमें सीधे व्याख्या किए जाने के अतिरिक्त एक अलग कंपाइलर चरण होता है। इससे प्रोग्राम चलाने से पहले त्रुटियों की विस्तृत श्रृंखला का पता लगाया जा सकता है। इसमें एक सख्त स्टेटिक प्रकार की मोड प्रणाली होती है,[1] और एक मॉड्यूल प्रणाली के रूप में निहित है।
मर्करी में लिखे गए प्ररूप और मोड प्रोग्राम जैसे कंपाइलर समय पर प्राप्त सूचना का उपयोग करके करते हैं और इस प्रकार सामान्यतः प्रोलॉग में लिखे गए समतुल्य प्रोग्रामों की तुलना में काफी तेज से प्रदर्शन करते हैं।[2][3] इसके लेखकों का दावा है कि मर्करी संसार की सबसे तेज तर्क लैंग्वेज के रूप में है, जिसका कि व्यापक अंतर है।[1]
मर्करी प्रोलॉग के विपरीत विशुद्ध रूप से घोषणात्मक प्रोग्रामिंग लैंग्वेज है, क्योंकि इसमें अतिरिक्त तार्किक प्रोलॉग कथनों का अभाव होता है !
(कट) और अनिवार्य प्रोग्रामिंग इनपुट/आउटपुट (I/O) के रूप में होता है। यह कंपाइलर समय गार्बेज संग्रह (कंप्यूटर विज्ञान) सहित उन्नत स्टैटिक कार्यक्रम विश्लेषण और कार्यक्रम ऑप्टिमाइजेशन को सक्षम बनाता है।[4] लेकिन यह कुछ प्रोग्रामिंग निर्माण कर सकता है, जैसे कि डिफ़ॉल्ट के साथ कई विकल्पों पर स्विच करना[dubious ]) लेकिन इसको व्यक्त करना कठिन है। जबकि मर्करी अशुद्ध कार्यक्षमता की अनुमति देता है, यह मुख्य रूप से फॉरेन लैंग्वेज कोड को कॉल करने की विधि के रूप में कार्य करता है। सभी अशुद्ध कोड को स्पष्ट रूप से चिह्नित किया जाता है। संचालन जो सामान्यतः अशुद्ध होते हैं जैसे इनपुट/आउटपुट सभी प्रासंगिक कोड के माध्यम से एक डमी विश्व मूल्य को थ्रेड करके रैखिक प्रकार प्रणाली का उपयोग करके मर्करी में शुद्ध संरचनाओं का उपयोग करके व्यक्त किया जाता है।
मर्करी में लिखे उल्लेखनीय कार्यक्रमों में मर्करी कंपाइलर और प्रिंस एक्सएमएल फार्मेटर के रूप में सम्मलित हैं। सॉफ्टवेयर कंपनी ओडेसे भी अपने ओन्टोलॉजी-सेंट्रिक सॉफ्टवेयर डेवलपमेंट प्लेटफॉर्म ओडेसे को विकसित करने के लिए मर्करी का उपयोग कर रहे है।[5]
बैक-एंड्स
मर्करी के कई बैक-एंड हैं, जो मर्करी कोड को कई लैंग्वेजो में कंपाइलड करने में सक्षम बनाता है, जिनमें वे सम्मलित होते है
उत्पादन स्तर
- जीएनयू कंपाइलर संग्रह (जीसीसी) के लिए निम्न-स्तरीय सी (प्रोग्रामिंग लैंग्वेज) मूल मर्करी बैक-एंड के रूप में सम्मलित होते है
- हाई लेवल सी
- जावा (प्रोग्रामिंग लैंग्वेज )
- सी शार्प (प्रोग्रामिंग लैंग्वेज)
पास्ट
- जीसीसी बैक-एंड के माध्यम से असेंबली लैंग्वेज के रूप में सम्मलित है।
- अदिति, एक डिडक्टिव डेटाबेस प्रणाली भी मेलबर्न विश्वविद्यालय में विकसित हुआ। बुध-0.12.2 अदिति का समर्थन करने वाला अंतिम संस्करण है।[citation needed]
- .डॉट नेट फ्रेमवर्क के लिए सामान्य मध्यवर्ती लैंग्वेज (सीआईएल) के रूप में है।
- एरलांग प्रोग्रामिंग लैंग्वेज के रूप में है।
मर्करी एक फॉरेन लैंग्वेज इंटरफ़ेस भी होता है, जो अन्य लैंग्वेजो में कोड की अनुमति देता है। जो चुने हुए बैक-एंड के आधार पर को मर्करी कोड से जोड़ने की अनुमति देता है। निम्नलिखित फॉरेन लैंग्वेज संभव है।
बैक-एंड | फॉरेन लैंग्वेज |
---|---|
सी (दोनों स्तर) | सी |
जावा | जावा |
एरलांग | एरलांग |
आईएल | कॉमन इंटरमीडिएट लैंग्वेज (सीआईएल) या सी# |
अन्य लैंग्वेजो को इन लैंग्वेजो से बुलाकर उनके साथ इंटरफेस किया जा सकता है। चूंकि, इसका अर्थ यह है कि विभिन्न बैकएंड के लिए फॉरेन लैंग्वेज कोड को कई बार लिखने की आवश्यकता हो सकती है, अन्यथा बैकएंड के बीच पोर्टेबिलिटी खो जाती है।
सबसे अधिक उपयोग किया जाने वाला बैक-एंड मूल निम्न-स्तरीय C बैक-एंड है।
उदाहरण
Hello World:
:- module hello.
:- interface.
:- import_module io.
:- pred main(io::di, io::uo) is det.
:- implementation.
main(!IO) :-
io.write_string("Hello, World!\n", !IO).
10वीं फाइबोनैचि संख्या की गणना सबसे स्पष्ट विधि से की जाती है[6]
:- module fib.
:- interface.
:- import_module io.
:- pred main(io::di, io::uo) is det.
:- implementation.
:- import_module int.
:- func fib(int) = int.
fib(N) = (if N =< 2 then 1 else fib(N - 1) + fib(N - 2)).
main(!IO) :-
io.write_string("fib(10) = ", !IO),
io.write_int(fib(10), !IO),
io.nl(!IO).
% Could instead use io.format("fib(10) = %d\n", [i(fib(10))], !IO).
!IO
एक स्टेट वेरिएबल है, जो वेरिएबल्स की एक जोड़ी के लिए सिंटैक्टिक शुगर है, जिन्हें कंपाइलर पर ठोस नाम दिए गए हैं; उदाहरण के लिए ऊपर की तरह कुछ करने के लिए डीसुगरड़ है
main(IO0, IO) :-
io.write_string("fib(10) = ", IO0, IO1),
io.write_int(fib(10), IO1, IO2),
io.nl(IO2, IO).
रिलीज शेड्यूल
पहले तेरह स्टेबल रिलीज़ के लिए स्टेबल रिलीज़ नामकरण योजना 0.1 से 0.13 तक थी और इस प्रकार फरवरी 2010 में मर्करी परियोजना ने रिलीज़ के वर्ष महीने का उपयोग करके प्रत्येक स्टेबल रिलीज़ को नाम देने का निर्णय लिया है। उदाहरण के लिए 10.04 अप्रैल 2010 में रिलीज़ के लिए है।
विकास प्रणाली रिलीज़ ऑफ़ द डे (आरओटीडी) का आवधिक स्नैपशॉट भी अधिकांशतः होता है।
आईडीई और संपादक समर्थन
- डेवलपर्स विम (पाठ संपादक) के लिए समर्थन प्रदान करते है।
- इमैक्स के लिए फ्लाईचेक लाइब्रेरी के रूप में होता है
- ग्रहण (सॉफ्टवेयर) आईडीई के लिए एक प्लगइन उपलब्ध है
- नेटबीन्स आईडीई के लिए एक प्लगइन उपलब्ध है
यह भी देखें
- करी प्रोग्रामिंग लैंग्वेज एक और कार्यात्मक तर्क लैंग्वेज के रूप में है
- ऐलिस (प्रोग्रामिंग लैंग्वेज ), मानक एमएल की एक डायलेक्ट लैंग्वेज के रूप में है
- लॉगटॉक लैंग्वेज प्रोलॉग का ऑब्जेक्ट-ओरिएंटेड एक्सटेंशन के रूप में होता है, जो प्रोलॉग को संकलित करता है
- ओज/मोजार्ट, एक बहुप्रतिमान लैंग्वेज के रूप में है
- विजुअल प्रोलॉग लैंग्वेज एक नए सिंटैक्स के साथ प्रोलॉग का दृढ़ता से टाइप किया गया ऑब्जेक्ट-ओरिएंटेड एक्सटेंशन के रूप में होता है
संदर्भ
- ↑ 1.0 1.1 1.2 The Mercury Project - Motivation
- ↑ The Mercury Project - Benchmarks
- ↑ Somogyi, Zoltan; Henderson, Fergus; Conway, Thomas (October–December 1996). "The execution algorithm of Mercury: an efficient purely declarative logic programming language". Journal of Logic Programming. Mercurylang.org. 29 (1–3): 17–64. CiteSeerX 10.1.1.46.9861. doi:10.1016/S0743-1066(96)00068-4. Retrieved 2008-08-30.
- ↑ Mazur, Nancy (May 2004). Compile-time garbage collection for the declarative language Mercury (PDF) (Thesis). Katholieke Universiteit Leuven.
- ↑ ODASE
- ↑ Adapted from Ralph Becket's Mercury tutorial
बाहरी संबंध