2016-02-27 7 views
6

Prolog के साथ क्या गलत है?Prolog बनाम Erlang (और अन्य कार्यात्मक भाषाओं)

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

उदाहरण के रूप में एरलांग लें। इसका वाक्यविन्यास प्रोलॉग से उधार लिया जाता है, इसे शुरुआत में प्रोलॉग के साथ लागू किया गया था, जो वास्तव में दिलचस्प है। यही है, एरलांग लोगों के दृष्टिकोण से, प्रोलॉग के साथ मूल रूप से कुछ गलत है, या वे प्रोलॉग को उनकी जरूरतों के अनुरूप अनुकूलित कर चुके होंगे।

+1

वहाँ किसी भी प्रणाली Erlang चल बड़ा है कि [क्या Prolog करता है] (https://www.sics.se/projects/sicstus-prolog-leading-prolog-technology)? – false

उत्तर

13

मेरे विचार में, प्रोलॉग से शुरू होने के लिए दिलचस्प है, और जूरी अभी भी इस प्रश्न पर बाहर है।

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

बैक ट्रैकिंग, कचरा संग्रहण, अलियासिंग हो रही है, जिम्मेदार ठहराया चर, बाधाओं, अपवाद से निपटने और कई अन्य चीजें हैं जो Prolog जबकि उनके अक्सर काफी सूक्ष्म अन्योन्याश्रय का सम्मान आपसही और कुशल देता है कुछ है कि जाहिर है सिर्फ भीतर पूरा नहीं किया जा सकता है कुछ दशकों, भले ही कुछ सबसे प्रतिभाशाली और शिक्षित प्रोग्रामर भाग लेते हैं। वर्तमान में उपलब्ध कई प्रोलॉग सिस्टम अभी उस बिंदु तक पहुंच रहे हैं जहां आप उन्हें उत्पादन वातावरण में गंभीरता से उपयोग कर सकते हैं।

प्रोलॉग के एक कमजोर संस्करण को कुशल और सही बनाने के लिए तुलनात्मक रूप से आसान है। वास्तविक चीज़ के लिए बहुत कुछ नहीं।

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

और हम असली चीज़ चाहते हैं! तो, हाँ, प्रोलॉग के साथ कुछ गड़बड़ है: सही लागू करना मुश्किल है। लेकिन प्रोलॉग के साथ बहुत कुछ है जो उपरोक्त वर्णित सुविधाओं की भीड़ से उत्पन्न होता है: एक बार यह पूरी तरह कार्यान्वित हो जाने के बाद, प्रोलॉग अद्भुत और सभी प्रकार के कार्यों के लिए अद्वितीय विकास वातावरण, प्रमेय से वेब होस्टिंग साबित करने के लिए है , संयोजी अनुकूलन समस्या, परीक्षण केस पीढ़ी और कई अन्य अनुप्रयोगों को हल करना जो अब उत्पन्न हो रहे हैं।

उदाहरण के लिए, एर्लांग-स्टाइल प्रक्रियाएं अभी प्रोलॉग के लिए विकसित की जा रही हैं। उदाहरण के लिए Torbjörn Lager's Pengines देखें।

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

जीत के लिए प्रस्ताव!

+0

एफडब्ल्यूआईडब्ल्यू ने टॉरबॉर्न के साथ ईमेल का आदान-प्रदान किया, वह कहता है कि प्रक्रियाएं मर चुकी हैं। लेकिन पेंगुइन निश्चित रूप से – Anniepoo

+0

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

+2

अनुरूपता भी मदद करेगी, – false

3

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

देखो कैसे सी/सी के कई अलग अलग बोलियों ++ बनाया गया था, और अभी भी C/C++ मुख्य धारा में है। उन नई बोलीभाषाओं ने बस पहले से मौजूद किसी भी लाभ का लाभ नहीं दिया (या फिर भी काफी बड़ा नहीं)।

मुझे यकीन है कि प्रोलॉग का आला है लेकिन यह अन्य भाषाओं को वितरित करने में सक्षम नहीं है और shortlist of problems on Wikipedia कुछ मूल्यवान कारणों से भी पता चलता है।

+2

यह एक अलग प्रश्न का उत्तर जैसा दिखता है। –

+0

क्यों? सवाल यह था कि प्रोलॉग मुख्यधारा क्यों नहीं बन गया है और एरलांग (कम से कम कुछ हद तक) है। यह बताता है कि एर्लांग ने क्या कहा है कि प्रोलॉग के पास नहीं है और यह उपयोगकर्ताओं को जीतने के लिए एर्लांग को कैसे मदद करता है। – Amiramix

संबंधित मुद्दे