लॉगटॉक

From Vigyanwiki
Revision as of 10:06, 22 May 2023 by Manidh (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Logtalk
ParadigmLogic programming, object-oriented programming, prototype-based programming
द्वारा डिज़ाइन किया गयाPaulo Moura
पहली प्रस्तुति1998; 26 years ago (1998)
Stable release
3.53.0 / 20 January 2022; 2 years ago (2022-01-20)
ओएसCross-platform
लाइसेंसArtistic License 2.0 (2.x) / Apache License 2.0 (3.01.x)
वेबसाइटlogtalk.org
Influenced by
Prolog, Smalltalk, Objective-C

लॉगटॉक ऑब्जेक्ट ओरिएंटेड तर्क प्रोग्रामिंग भाषा है, जो बड़े स्तर पर प्रोग्रामिंग के लिए उपयुक्त फीचर सेट के साथ प्रोलॉग भाषा का विस्तार और लाभ उठाती है।[1] यह एनकैप्सुलेशन और डेटा छिपाने, चिंताओं को अलग करने और उन्नत कोड पुन: उपयोग के लिए सहायता प्रदान करता है।[1] लॉगटॉक कुछ ऑपरेटरों और निर्देशों के अतिरिक्त मानक प्रोलॉग सिंटैक्स का उपयोग करता है।

लॉगटॉक भाषा कार्यान्वयन एक ओपन सोर्स लाइसेंस के अनुसार वितरित किया जाता है और बैक-एंड कंपाइलर के रूप में एक प्रोलॉग कार्यान्वयन (आधिकारिक और वास्तविक मानकों के अनुरूप) का उपयोग करके चलाया जा सकता है।[1]

विशेषताएं

लॉगटॉक का उद्देश्य वस्तु-उन्मुख प्रोग्रामिंग और तर्क प्रोग्रामिंग के लाभों को साथ लाना है।[1] ऑब्जेक्ट-ओरिएंटेशन सॉफ्टवेयर की असतत, पुन: प्रयोज्य इकाइयों के विकास पर जोर देता है, जबकि तर्क प्रोग्रामिंग प्रत्येक वस्तु के ज्ञान को घोषणात्मक विधि से प्रस्तुत करने पर जोर देती है।

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

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

उदाहरण

लॉगटॉक का सिंटैक्स प्रोलॉग पर आधारित है:

?- write('Hello world'), nl.
Hello world
true.

किसी वस्तु को परिभाषित करना:

:- object(my_first_object).

    :- initialization((write('Hello world'), nl)).

    :- public(p1/0).
    p1 :- write('This is a public predicate'), nl.

    :- private(p2/0).
    p2 :- write('This is a private predicate'), nl.

:- end_object.

ऑब्जेक्ट का उपयोग करना, यह मानते हुए कि my_first_object.lgt फ़ाइल में सहेजा गया है:

?- logtalk_load(my_first_object).
Hello world
true.

?- my_first_object::p1.
This is a public predicate
true.

निजी विधेय तक पहुँचने का प्रयास त्रुटि देता है:

?- my_first_object::p2.
ERROR: error(permission_error(access, private_predicate, p2), my_first_object::p2, user)


अस्पष्ट फलन

Page 'अस्पष्ट फलन # लॉगटॉक' not found

अज्ञात विधेय (लैम्ब्डा एक्सप्रेशंस) के लिए लॉगटॉक निम्नलिखित सिंटैक्स का उपयोग करता है:

{FreeVar1, FreeVar2, ...}/[LambdaParameter1, LambdaParameter2, ...]>>Goal

बिना मुक्त वेरिएबल्स के एक सरल उदाहरण और सूची मानचित्रण विधेय का उपयोग करना है:

| ?- meta::map([X,Y]>>(Y is 2*X), [1,2,3], Ys).
Ys = [2,4,6]
yes

करी का भी समर्थन किया जाता है। उपरोक्त उदाहरण को इस प्रकार लिखा जा सकता है:

| ?- meta::map([X]>>([Y]>>(Y is 2*X)), [1,2,3], Ys).
Ys = [2,4,6]
yes

प्रोलॉग बैक-एंड संगतता

समर्थित बैक-एंड प्रोलॉग कंपाइलर्स में बी-प्रोलॉग, सियाओ प्रोलॉग (प्रोग्रामिंग भाषा), सीएक्सप्रोलॉग, ईसीलीपीएसई, जीएनयू प्रोलॉग, [http: //www.jiprolog.com/ जिप्रोलॉग], क्विंटस प्रोलॉग, स्क्रीयर प्रोलॉग, सिक्सस्टस प्रोलॉग, एसडब्ल्यूआई- प्रोलॉग, जेपी (प्रस्तावना), ट्रेला प्रोलॉग, एक्सएसबी, और वाईएपी (प्रोलॉग) सम्मिलित हैं।[4] लॉगटॉक ऑब्जेक्ट और श्रेणियों के भीतर बैक-एंड प्रोलॉग कंपाइलर लाइब्रेरी के उपयोग की अनुमति देता है।

डेवलपर उपकरण

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


अनुप्रयोग

लॉगटॉक का उपयोग ISO 10303-21 डेटा मॉडल को संसाधित करने के लिए किया गया है जिसका उपयोग उत्पाद निर्माण जानकारी के आदान-प्रदान के लिए किया जाता है।[6] इसका उपयोग तर्क प्रणाली को प्रायुक्त करने के लिए भी किया गया है जो वरीयता तर्क और बाधाओं को हल करने की अनुमति देता है।[7]


यह भी देखें

संदर्भ

  1. 1.0 1.1 1.2 1.3 Paulo Moura (2003). Logtalk: Design of an Object-Oriented Logic Programming Language. PhD thesis. Universidade da Beira Interior
  2. Moura, Paulo (2011). लॉगटॉक पैरामीट्रिक ऑब्जेक्ट्स के लिए प्रोग्रामिंग पैटर्न. Applications of Declarative Programming and Knowledge Management. Lecture Notes in Computer Science. Vol. 6547. doi:10.1007/978-3-642-20589-7_4. ISBN 978-3-642-20588-0.
  3. घोषणात्मक भाषाओं के व्यावहारिक पहलू. Lecture Notes in Computer Science. Vol. 4902. 2008. doi:10.1007/978-3-540-77442-6. ISBN 978-3-540-77441-9.
  4. "लॉगटॉक संगतता". Logtalk.org. 2016-10-10. Retrieved 2021-07-06.
  5. "Developer Tools – LogtalkDotOrg/logtalk3 Wiki – GitHub". Github.com. 2013-02-12. Retrieved 2013-08-19.
  6. तर्क प्रोग्रामिंग. Lecture Notes in Computer Science. Vol. 4079. 2006. doi:10.1007/11799573. ISBN 978-3-540-36635-5.
  7. Victor Noël; Antonis Kakas (2009). Gorgias-C: Extending Argumentation with Constraint Solving (PDF). Logic Programming and Nonmonotonic Reasoning. Lecture Notes in Computer Science. Vol. 5753. pp. 535–541.


बाहरी संबंध

  • Official website
  • Logtalking blog
  • From Plain Prolog to Logtalk Objects: Effective Code Encapsulation and Reuse (Invited Talk). Paulo Moura. Proceedings of the 25th International Conference on Logic Programming (ICLP), July 2009. LNCS 5649. Springer-Verlag Berlin Heidelberg". (Slides)