छोटे और बड़े-चरण संचालन शब्दार्थ के बीच अंतर


28

छोटे और बड़े चरण के परिचालन शब्दार्थों के बीच मूलभूत अंतर क्या है?

मैं एक मुश्किल समय लोभी है जो यह है और दोनों के लिए प्रेरणा है।


1
परिचालन शब्दार्थों पर विकिपीडिया लेख आशाजनक लगता है ... जब तक कि किसी को यह पता नहीं चलता है कि "बिग-स्टेप शब्दार्थ" खंड में कुल योग की जानकारी है "इस खंड को विस्तार की आवश्यकता है। (फरवरी 2011)।"
— डेविड रिचरबी

1
आपका सीखने का स्रोत क्या है? इस मामले में क्या शामिल है? तुम क्या सोचते हो? संकेत: बड़े चरण का शब्दार्थ क्या है x = 0; while ( true ) { x = x + 1; }?
— राफेल

@ राफेल मैं अंडरस्टैंडिंग कंपटीशन पढ़ रहा हूं । मेरा विचार यह है कि छोटे-छोटे दृष्टिकोण उप अभिव्यक्ति में तब तक कमी लाते हैं जब तक कि इसे और कम नहीं किया जा सकता है और फिर इसका मूल्यांकन किया जा सकता है। लगता है कि बिग-स्टेप सीधे चीजों का मूल्यांकन करने के बारे में है, लेकिन मैं वास्तव में दो तरीकों के बीच कोई दिलचस्प अंतर नहीं करता हूं क्योंकि वे दोनों उच्च स्तर के निर्माणों को ड्रिलिंग के बारे में प्रतीत होते हैं।
— साइमन मॉर्गन

बड़े निर्माण को कम करके, उप-निर्माण और छोटे-चरण का मूल्यांकन करके बड़े स्तर के निर्माण से नीचे ड्रिलिंग के बारे में बड़ा कदम, फिर से, यह उप-निर्माण है।
— साइमन मॉर्गन

जवाबों:


32

लघु-चरण शब्दार्थ एक समय में एक गणना कदम के भावों का मूल्यांकन करने के लिए एक विधि को परिभाषित करता है। औपचारिक रूप से, एक अभिव्यक्ति भाषा लिए एक छोटा कदम शब्दार्थ एक संबंध है को कमी संबंध कहा जाता है । लघु-चरण शब्दार्थ बताता है कि अभिव्यक्ति का विस्तार से क्या होता है। यह एक गैर-समाप्ति कार्यक्रमों का एक सटीक खाता देने में सक्षम है, जिसमें अनंत श्रृंखला । एक टर्मिनेटिंग प्रोग्राम एक ऐसा है जो एक वैल्यू साथ समाप्त होता है जैसे कि । \ newcommand {\ llbracket} {[\]! \ newcommand {\ rrbracket {{]!]}→ : ई × ईE→:E×Eई 0 → ई 1 → ⋯ → ve0→e1→e2→…e0→e1→⋯→v ∀ ई ' ∈ ई , वी ↛v∀e′∈E,v↛e′

स्पेक्ट्रम के दूसरे छोर पर डीनोटेशनल शब्दार्थ है । विवादास्पद शब्दार्थ प्रत्येक अभिव्यक्ति को एक "अर्थ" प्रदान करता है। यह अभिव्यक्तियों से लेकर तक का कार्य है: ( को डोमेन कहा जाता है)। डिनोटेशंस का स्थान पूरी तरह से सिंटैक्टिक स्पेस से असंबंधित हो सकता है, उदाहरण के लिए एक संख्या का मूल्यांकन करने वाले भाव हो सकते हैं और या जैसे नंबरों का एक सेट हो सकता है ।डी ई डी एन एन आर[[⋅]]:E→DDEDNR

बिग-स्टेप शब्दार्थ मध्य में एक प्रकार का होता है। एक अभिव्यक्ति भाषा और मूल्यों का एक सेट पर एक बड़ा कदम शब्दार्थ एक रिश्ता है । यह अपने मूल्य के लिए एक अभिव्यक्ति से संबंधित है (संभवतः कई मान यदि भाषा गैर-नियतात्मक है)। अक्सर, गैर-समाप्ति अभिव्यक्तियों के लिए एक विशेष मूल्य का उपयोग किया जाता है।वी ⇓ : ई × वी ⊥EV⇓:E×V⊥

तो हमारे पास ये तीन धारणाएं क्यों हैं? ये सभी धारणाएं एक-दूसरे को मॉडल कर सकती हैं, लेकिन मॉडल जटिलता की डिग्री जोड़ता है।

  • एक छोटे चरण के शब्दार्थ देखते हुए , आप एक समान बड़े-चरण के शब्दार्थ को परिभाषित कर सकते हैं जो प्रत्येक अभिव्यक्ति को उसके मूल्य (या मान, यदि कमी गैर-निर्धारक है) से संबंधित करता है: iff में एक श्रृंखला मौजूद और किसी भी आगे कम नहीं कर सकते। ध्यान दें कि सामान्य रूप से आप छोटे-चरण के शब्दार्थ को बड़े-चरण के शब्दार्थ से पुनर्निर्मित नहीं कर सकते हैं। उदाहरण के लिए, सभी नॉन-टर्मिनेटिंग एक्सप्रेशन बड़े कदम के शब्दार्थ के तहत अप्रभेद्य हैं।ई ⇓ वी ई → ई 1 → ⋯ → वी वी→e⇓ve→e1→⋯→vv
  • एक बड़े चरण के शब्दार्थ को देखते हुए , आप कह सकते हैं कि यह - पर एक छोटा-सा चरण शब्दार्थ है । यह विशेष रूप से उपयोगी नहीं है।ई ∪ वी⇓:E×VE∪V
  • एक छोटे से चरण के शब्दार्थ _ को देखते हुए , आप एक संबंधित संप्रदाय शब्दार्थ को परिभाषित कर सकते हैं, जहाँ एक अभिव्यक्ति का निरूपण उसमें से शुरू होने वाली कमी श्रृंखलाओं का समूह है। यह औपचारिक परिभाषा को संतुष्ट करता है, लेकिन यह विशेष रूप से उपयोगी नहीं है, क्योंकि यह उन वस्तुओं के लिए एक सिद्ध सिद्धांत ओवरहेड जोड़ता है, जो सीधे वाक्यविन्यास को देखकर कारण के लिए आसान होते हैं।→
  • एक शब्दार्थ शब्दार्थ को देखते हुए , आप भाषा में मान के रूप में सभी संभव शब्दों को जोड़कर एक छोटे चरण के शब्दार्थ को परिभाषित कर सकते हैं। उन मानों को बनाने की आवश्यकता होती है जो प्रोग्रामर द्वारा लिखे गए वाक्यविन्यास का हिस्सा नहीं होते हैं, जिसका अर्थ है कि कुछ दिलचस्प परिणामों को "उन सभी कार्यक्रमों के लिए" बताना होगा जो प्रोग्रामर "सभी कार्यक्रमों के लिए" के बजाय "लिख सकता है"। इस प्रकार यह बहुत उपयोगी भी नहीं है।[[⋅]]
  • एक बड़े-चरण के शब्दार्थ को देखते हुए , आप एक संबंधित शब्दार्थ को परिभाषित कर सकते हैं, जहां डोमेन मानों के सेट का सेट है: । यदि बड़ा-चरण शब्दार्थ नियतात्मक है (प्रत्येक अभिव्यक्ति एक मान के लिए कम हो जाती है), तो आप एक सरल अर्थात्मक शब्दार्थ को परिभाषित कर सकते हैं जहां डोमेन मूल्यों का समूह है।[⇓[[e]]={v∣e⇓v}
  • इसके विपरीत, एक शब्दार्थ , आप एक बड़े चरण के शब्दार्थ को परिभाषित कर सकते हैं । फिर से यह थोड़ा व्यर्थ है।ई ⇓ [[[⋅]]E⇓[[⋅]]

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

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

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

बिग-स्टेप शब्दार्थ बीच में है: यह मूल्यांकन के विवरण को दूर करता है, लेकिन परिणाम की वाक्यात्मक प्रकृति को बनाए रखता है। आमतौर पर अवधारणा का उपयोग तब किया जाता है जब एक अंतर्निहित छोटे-चरण के शब्दार्थ होते हैं, जिस तरह से संक्षिप्त रूप से व्यक्त करने का एक तरीका है " '' ' के रूप में । इस तरह के निर्माणों में, जबकि अवधारणाएं बहुत अलग हैं (एक हमें व्यक्तिगत गणना चरणों के बारे में और गैर-समाप्ति कार्यक्रमों के बारे में बात करने की अनुमति देता है, दूसरा नहीं करता है), परिभाषाएं बहुत समान दिखेंगी, क्योंकि इस मामले में नियम जो परिभाषित करते हैं बड़े चरण के शब्दार्थ मूल रूप से "if और ... और और ई ⇓ ई एन∃(e1,…,en),e→e1→…en and ∄e′,en→e′e⇓enई एन → * वी वी ई 1 ⇓ ve1→∗e2en→∗vvएक मान है तो ”।e1⇓v


मैं यह भी सीख रहा हूं, लेकिन मेरे पास आपके उत्तर में कही गई एक बात है, जिसे मैं स्पष्ट करना चाहूंगा। आपने कहा "बिग-स्टेप शब्दार्थ बीच में तरह होते हैं।" हालांकि, छोटा कदम वास्तव में 'मध्य' मॉडल नहीं होगा? भावों पर विचार करें: A: ((5 + 7) + 3) B: (((5 + 5) + 5) C: (((1 + 2) + 1) D: (((2 + 1) + 1) नकार को वर्गीकृत करेंगे यहां तक ​​कि विभिन्न मूल्यों के साथ सी और डी (संभवतः "सी" और "डी"), और बड़ा-चरण उन्हें "4" और ए और बी दोनों के रूप में वर्गीकृत करेगा "15" हालांकि, छोटा-सा कदम आपको देगा "(12) + 3) "और" (10 + 5) "ए और बी के लिए, और" और (3 + 1) "सी और डी के लिए
— टिमोथी हंस

@TimothySwan यह मानते हुए कि आप सामान्य अंकगणितीय मूल्यांकन को परिभाषित करना चाहते हैं, एक संप्रदायिक शब्दार्थ सी और डी को अलग नहीं करेगा। एक छोटा कदम शब्दार्थ एक कमी श्रृंखला को परिभाषित करेगा जैसे । एक बड़ा-चरण शब्दार्थ, एक शब्दांश शब्दार्थ के समान होगा: बनाम । बड़ा कदम अर्थ विज्ञान में जबकि भाषा वाक्य रचना में से एक है denotational अर्थ विज्ञान में metatheory से एक है, लेकिन अंतर दिखाई दे रहा है या इस सरल उदाहरण में महत्वपूर्ण नहीं है। ( ( 2 + 1 ) + 1 ) ⇓ 3 [((2+1)+1)→3+1→4((2+1)+1)⇓3४ ४[[((2+1)+1)]]=444
— गिल्स एसओ- बुराई को रोकना '

इसलिए जब आपने कहा, 'अर्थवादी शब्दार्थ प्रत्येक अभिव्यक्ति को एक "अर्थ" प्रदान करता है।' आप विशिष्ट रूप से खुद की अभिव्यक्ति की पहचान नहीं करते थे, लेकिन कुछ प्रकार के मूल्यांकन-स्वतंत्र अर्थ? क्या आप एक सरल उदाहरण प्रदान कर सकते हैं जो स्पष्ट रूप से बड़े-चरण और मूल्य-संबंधी शब्दार्थों के बीच अंतर दिखाता है? इसके अलावा, कृपया समझा 3में ((2+1)+1)⇓3मेरा अनुमान है कि 'denotational' कुछ अंत सभी मूल्य है, लेकिन क्या उदाहरण में 'बड़ा कदम' जरूरी नहीं कि सीधे उस करने के लिए नक्शे होगा? क्या अंतर का संदर्भ के साथ कुछ लेना-देना है, जैसे (a + 1)पर्यावरण पर निर्भर करता है a?
— तिमुथि स्वान

@TimothySwan जब तक कोई साइड इफेक्ट नहीं होते हैं, कोई गैर-नियतत्ववाद और कोई कार्य नहीं करते हैं, तब तक किसी अभिव्यक्ति का शब्दार्थ शब्दार्थ वह मान होता है जिसका वह मूल्यांकन करता है। गैर-निर्धारकवाद एक बड़ा तरीका है, जो कि बड़े-चरण और संप्रदाय के बीच के अंतर को स्पष्ट करता है: एक अभिव्यक्ति का निरूपण उन मानों का समुच्चय होगा जो यह हो सकते हैं: , जबकि एक बड़े कदम के शब्दार्थ में कई स्वीकार्य निर्णय होंगे: और और ... एक टाइपो था। r एक एन डी ( 1 .. n ) ⇓ 1 आर एक n घ ( 1 .. n ) ⇓ 2[[rand(1..n)]]={1,2,…,n}rand(1..n)⇓1rand(1..n)⇓23
— गिल्स एसओ- बुराई को रोकें '
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.