प्रोग्रामिंग भाषा शब्दार्थ में एक प्रकार क्या है?


9

प्रोग्रामिंग भाषाओं के लिए व्यावहारिक नींव के अध्याय 1 में , लेखक का उल्लेख है कि अमूर्त वाक्यविन्यास के पेड़ प्रकार से जुड़े हुए हैं ।

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

जवाबों:


4

यह इस बात पर निर्भर करता है कि हम किस प्रकार के शब्दार्थों और प्रकारों के लिए अपनाएँगे। - हालांकि एक संक्षिप्त - थोड़ी अनौपचारिक - परिभाषाएं हो सकती हैं - सॉर्ट एएसटी की कक्षाएं हैं और प्रकार मानों के वर्ग हैं


4

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

शब्दावली शब्द बीजगणित (जिसे मुक्त बीजगणित भी कहा जाता है ) और सार्वभौमिक बीजगणित से आता है । ये अनिवार्य रूप से किसी भी व्याख्याओं के स्वतंत्र रूप से विश्लेषण किए गए बीजीय संरचनाओं के सिंटैक्टिक सिद्धांत हैं। उन्हें 20 वीं शताब्दी के पहले भाग में विकसित किया गया था।

एक शब्द को एक पेड़ के रूप में देखा जा सकता है, जहां नोड्स को परिचालकों के परिमित सेट से लेबल किया जाता है, प्रत्येक ऑपरेटर में एक निश्चित समता होती है जो पेड़ में बेटियों की संख्या को निर्दिष्ट करती है। Arity 0 पत्तियों के लिए है। में बहु अनुसार क्रमबद्ध अल्जेब्रास प्रत्येक बेटी के लिए अपने सिर ऑपरेटर की तरह इस प्रकार के साथ परिष्कृत किया जाता है, ताकि एक तरह से संबंधित प्रत्येक ऑपरेटर, और arities तरह की एक आदेश दिया सूची से बदल दिया जाता है कि ठीक करता है। एक ऑपरेटर का प्रकार, अपनी बेटी के प्रकार की सूची के साथ, ऑपरेटर के हस्ताक्षर को कहा जाता है ।

सार्वभौमिक बीजगणित में, शब्दों के बीच समान रूप से परिभाषित समतुल्य संबंधों को पेश करके इसे और परिष्कृत किया जाता है।

हालांकि ऐसा लगता है कि यह थोड़ा फीका है, ये अवधारणा 20 वीं शताब्दी के उत्तरार्ध में कंप्यूटर विज्ञान में काफी लोकप्रिय थीं और इसका अध्ययन किया गया था, क्योंकि सार बीजगणित जहां तब सार डेटा प्रकारों के आधार के रूप में देखा जाता है, जो कि आंशिक रूप से, किस के अग्रदूत हैं ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में nos कक्षाएं।

यूनिवर्सल बीजगणित श्रेणी सिद्धांत के विकास से संबंधित हैं, जो वर्तमान प्रकार और प्रोग्रामिंग भाषाओं की दृष्टि से भी महत्वपूर्ण है।

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

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

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

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

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

यह पार्सिंग को अलग करने की अनुमति देता है जो पारंपरिक रूप से एक गन्दा हिस्सा था क्योंकि पार्सिंग तकनीक की सीमाओं ने विकृत व्याकरण के उपयोग को मजबूर किया। यह प्रस्तुति के मुद्दों को भी बताता है।

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

अमूर्त व्याख्याओं के साथ कार्यक्रम की उचितताओं का विश्लेषण करने के लिए, कार्यक्रमों की कई व्याख्याओं और प्रकारों को परिभाषित करना आसान बनाता है ।

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

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

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

लेकिन अमूर्त वाक्य रचना इन प्रणालियों से पहले की है। लिस्प भाषा (1958) में सार वाक्यविन्यास था, जो कि आश्चर्य की बात नहीं है क्योंकि यह एक तर्कशास्त्री द्वारा विकसित किया गया था, और कार्यक्रमों में हेरफेर करने के उद्देश्य से कार्यक्रम (एमएल और एलसीएफ भी देखें ... जो बाद में आए)। लेकिन लिस्प को हल नहीं किया गया था: सब कुछ एक सूची में था और अधिक परिष्कृत संरचना अनिवार्य रूप से शब्दार्थ पर निर्भर थी। यह कुछ लोगों को कुछ गलत तरीके से विचार करने के लिए प्रेरित करता है, कि लिस्प में कोई वाक्यविन्यास नहीं था।


क्या आप कहेंगे कि 2 अलग-अलग पदानुक्रम हैं, एक सिंटैक्स भूमि में और दूसरा सिमेंटिक्स भूमि में। सिंटैक्स में हमारे पास आपके पास एएसटी और प्रकार के वर्ग और प्रकार हैं। शब्दार्थ में हमारे पास मूल्य, प्रकार, प्रकार ... आदि ऐसी भाषाएं नहीं हैं जो दोनों को एक विकास परिवेश जैसे ट्वेल्फ़ या कोक में एकीकृत करती हैं?
CMCDragonkai

@CMCDragonkai मैं (संभावित गलतियों को रोकते हुए) ठीक-ठीक यही कहूँगा। मैं इन पदानुक्रमों को नहीं, बल्कि (मेटा-) प्रवचन के डोमेन कहूंगा। वाक्यविन्यास-शब्दार्थ पृथक्करण इस बात को अलग करता है कि हम किस बारे में बात करते हैं और हम इसे कैसे करते हैं, जिसके लिए प्रतिनिधित्व की आवश्यकता होती है। आपको एक ही भाषा के वाक्यविन्यास और शब्दार्थ को मिलाना नहीं चाहिए, लेकिन एक भाषा का वाक्य-विन्यास प्रवचन का एक उद्देश्य हो सकता है, इसलिए दूसरी भाषा के शब्दार्थ से संबंधित है। इस अर्थ में, आप कुछ एकीकरण देख सकते हैं, देखभाल के साथ संभाला जा सकता है। सिंटैक्स हमेशा सूक्ष्मता से उत्पन्न होता है, जबकि शब्दार्थ में ऐसी कोई बाधा नहीं होती है।
बबौ

2

यह अध्याय चार में दिखाई देता है कि प्रकार वाक्यविन्यास के लिए हैं और शब्दार्थ के लिए प्रकार हैं।

पृष्ठ 40 पर उदाहरण वाक्यविन्यास चार्ट भाषा {{str str}} के प्रकारों से संबंधित है। स्पष्ट रूप से भाषा की वाक्य रचना में श्रेणियां प्रकार हैं।

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

पृष्ठ 41 पर प्रकार प्रणाली भाषा L {संख्या str} के प्रकारों से संबंधित है। ऑपरेटर का प्रकार "प्लस", यह देखते हुए कि इसके ऑपरेंड में "संख्या" टाइप है, "संख्या" है। यह निर्णय ऑपरेटर के शब्दार्थ "प्लस" का आंशिक विवरण है। यही है, ऑपरेटर के अर्थ का एक हिस्सा "प्लस" एक संख्या का उत्पादन करने के लिए दो संख्याओं का संयोजन है। यह अर्थ अन्य भावों से "प्लस" को अलग करता है।

इसके अलावा, एक प्रकार है जिसका नाम "टाइप" है जिसमें दो प्रकार हैं, "संख्या" और "स्ट्र"।


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

यह "शुद्ध प्रकार सिस्टम" के साथ कुछ करना है। मुझे संदेह है कि हम पारंपरिक होने के लिए " लैंबडा कैल्कटी विद टाइप्स " में प्रस्तुति पर विचार कर सकते हैं । लेकिन यह संक्षिप्त नहीं है। मुझे अभी तक ऐसा कोई संदर्भ नहीं मिला है जो शब्द, प्रकार, प्रकार और प्रकार की स्पष्ट, संक्षिप्त परिभाषा प्रदान करता हो।
मीनोप्रेत

एक पार्सर में उत्पादन प्रमुखों के बारे में क्या? कई बार आप समान नाम जैसे अभिव्यक्ति या प्रकार के तहत व्याकरण को वर्गीकृत करते हैं।
CMCDragonkai

1

अध्याय 1 की शुरुआत में, हार्पर एक संकेत देता है कि वह शब्द के प्रकार से क्या मतलब रखता है :

किसी भाषा का वाक्य-विन्यास उन साधनों को निर्दिष्ट करता है जिनके द्वारा विभिन्न प्रकार के वाक्यांशों (अभिव्यक्तियों, आदेशों, घोषणाओं, और इसके बाद) को कार्यक्रमों को बनाने के लिए जोड़ा जा सकता है।

वह शब्द वाक्यांश को एक सार वाक्यविन्यास वृक्ष के रूप में परिभाषित करता है , जिसकी वह फिर चर्चा करता है।


यह मुझे ऐसा लगता है जैसे "प्रकार" का उपयोग यहां सामान्य अंग्रेजी अर्थ के साथ किया गया था, जो "प्रकार" का पर्याय है।
राफेल

@ राफेल हां, लेकिन ऐसा लगता है कि इसका अर्थ बाद के औपचारिक उपयोग के अनुरूप है, क्या आप सहमत नहीं होंगे?
जकोरा

काफी नहीं। वाक्यांश "इस प्रकार का एक्स" अक्सर पुस्तक में दिखाई दे सकता है; यह वाक्य किसी भी तरह से संकेत नहीं करता है कि कुछ परिभाषित किया जा रहा है। (इसके अलावा, यह मार्ग इस बात से मेल नहीं खाता है कि मैं "सॉर्ट" शब्द को कैसे समझता हूं)।
राफेल

@ राफेल ओके, कृपया बताएं कि यह विशेष उपयोग कैसे असंगत है, यह निश्चित रूप से मुझे सूचित करेगा, क्योंकि मैं वर्तमान में इसे समझता हूं।
जकोरा

मुझे पता है कि "सॉर्ट" की धारणा एएसटी के व्यक्तिगत नोड्स से जुड़ी है, न कि एक पूरे पेड़ (जो आप कहते हैं "वाक्यांश" आपके स्रोत में अर्थ है)।
राफेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.