यह प्रतीकात्मक निष्पादन की विकी प्रविष्टि में लिखा गया है , लेकिन मुझे इसके लिए कोई संदर्भ नहीं मिल रहा है। क्या कोई मुझे पॉइंटर दिखा सकता है? धन्यवाद।
यह प्रतीकात्मक निष्पादन की विकी प्रविष्टि में लिखा गया है , लेकिन मुझे इसके लिए कोई संदर्भ नहीं मिल रहा है। क्या कोई मुझे पॉइंटर दिखा सकता है? धन्यवाद।
जवाबों:
मैं प्रतीकात्मक निष्पादन और अमूर्त व्याख्या के बीच तुलना से संबंधित एक कागज से अवगत नहीं हूं। न ही मुझे लगता है कि एक की जरूरत है। इन दोनों तकनीकों के मूल विवरणों को पढ़ना पर्याप्त होना चाहिए।
(इसके विपरीत, अगर कुछ अप्रत्याशित संबंध होगा, तो यह वर्णन करने लायक होगा। लेकिन मुझे बहुत संदेह है कि यह मामला है।)
प्रतीकात्मक निष्पादन का मुख्य विचार यह है कि निष्पादन में एक मनमाना बिंदु पर, आप प्रारंभिक मूल्यों के कार्यों के रूप में सभी चर के मूल्यों को व्यक्त कर सकते हैं। अमूर्त व्याख्या का मुख्य विचार यह है कि आप किसी प्रोग्राम के सभी निष्पादन को व्यवस्थित रूप से ओवर-एंबेडेशन की श्रृंखला द्वारा खोज सकते हैं। (मैं पिछले सन्निकटन में कराहते हुए कई एआई उत्साही सुन सकता हूं।)
इस प्रकार, कम से कम मूल सूत्रीकरण में, प्रतीकात्मक निष्पादन सभी संभावित निष्पादन की खोज करने से संबंधित नहीं था। आप इसे शीर्षक में भी देख सकते हैं: इसमें 'परीक्षण' शब्द शामिल है। लेकिन यहाँ धारा 8 से अधिक है: "अनंत निष्पादन पेड़ों वाले कार्यक्रमों के लिए, प्रतीकात्मक परीक्षण पूर्ण नहीं हो सकता है और शुद्धता का कोई पूर्ण प्रमाण स्थापित नहीं किया जा सकता है।"
इसके विपरीत, अमूर्त व्याख्या का उद्देश्य सभी निष्पादन का पता लगाना है। ऐसा करने के लिए, यह कई सामग्रियों का उपयोग करता है, जिनमें से एक प्रतीकात्मक निष्पादन के मुख्य विचार के समान है। ये तत्व हैं (1) अमूर्त अवस्थाएं, (2) जुड़ना और चौड़ी होना (इसलिए, शीर्षक में 'जाली')।
सार बताता है।किसी विशेष समय में एक कार्यक्रम की ठोस स्थिति मूल रूप से मेमोरी कंटेंट का स्नैपशॉट है (प्रोग्राम कोड और प्रोग्राम काउंटर सहित)। इसमें बहुत विस्तार है, जिसे ट्रैक करना मुश्किल है। जब आप किसी विशेष संपत्ति का विश्लेषण करते हैं, तो आप कंक्रीट राज्य के बड़े हिस्सों की उपेक्षा करना चाह सकते हैं। या आप केवल इस बात की परवाह करना चाह सकते हैं कि क्या एक विशेष चर नकारात्मक, शून्य या सकारात्मक है, लेकिन इसके सटीक मूल्य के बारे में परवाह नहीं है। सामान्य तौर पर, आप ठोस राज्य के एक सार संस्करण पर विचार करना चाहते हैं। इसके लिए बाहर काम करने के लिए, आपके पास एक कम्यूटेशन प्रॉपर्टी होनी चाहिए: यदि आप एक ठोस स्थिति लेते हैं, एक स्टेटमेंट निष्पादित करते हैं, और फिर परिणामी अवस्था को अमल में लाते हैं, तो आपको उसी परिणाम को प्राप्त करना चाहिए जैसे कि आप प्रारंभिक अवस्था का सार करते हैं, और फिर उसी को निष्पादित करते हैं। बयान लेकिन सार राज्य पर। यह कम्यूटिटी आरेख दोनों पत्रों में दिखाई देता है। यह सामान्य विचार है। फिर से, अमूर्त व्याख्या अधिक सामान्य है, क्योंकि यह तय नहीं करता है कि किसी राज्य को कैसे अमूर्त किया जाए - यह सिर्फ यह कहता है कि इसे करने का एक तरीका होना चाहिए। इसके विपरीत, प्रतीकात्मक निष्पादन कहता है कि आप (प्रतीकात्मक) अभिव्यक्तियों का उपयोग करते हैं जो प्रारंभिक मूल्यों का उल्लेख करते हैं।
जुड़ना और चौड़ी करना। यदि प्रोग्राम निष्पादन दो अलग-अलग तरीकों से एक निश्चित कथन तक पहुंचता है, तो प्रतीकात्मक निष्पादन दो विश्लेषणों को मर्ज करने का प्रयास नहीं करता है। यही कारण है कि ऊपर दिए गए उद्धरण पेड़ों के बजाय निष्पादन पेड़ों के बारे में बात करते हैं। लेकिन, याद रखें कि अमूर्त व्याख्या सभी निष्पादन को कवर करना चाहती है। इस प्रकार, यह उस बिंदु पर दो निष्पादन के विश्लेषण को मर्ज करने का एक तरीका पूछता है जहां उनके पास एक ही प्रोग्राम काउंटर है। (शामिल हो सकता हैबहुत गूंगा बनो ({a} join {b} = {a, b}) जैसे कि यह वह कार्य करता है जो प्रतीकात्मक निष्पादन करता है।) सामान्य तौर पर, स्वयं को शामिल करना यह गारंटी देने के लिए पर्याप्त नहीं है कि आप अंततः सभी निष्पादन का विश्लेषण कर रहे हैं। (विशेष रूप से, पहले बताए गए गूंगे जुड़ने से काम नहीं चलेगा।) एक छोरों के साथ एक कार्यक्रम पर विचार करें: "n = इनपुट (); i in रेंज में (n): dostuff ()"। आपको कितनी बार लूप के चारों ओर जाना चाहिए और शामिल होना चाहिए? कोई निश्चित उत्तर काम नहीं करता। इस प्रकार, कुछ और की जरूरत है, और वह चौड़ा हो रहा है , जिसे हेयुरिस्टिक के रूप में देखा जा सकता है। मान लीजिए कि आप 3 बार लूप के चारों ओर गए और आपने सीखा कि "i = 0 या i = 1 या i = 2"। फिर आप कहते हैं: हम्मम, ... चलो चौड़ा हो गया, और आपको "i> = 0" मिला। फिर से अमूर्त व्याख्या यह नहीं कहती है कि चौड़ीकरण कैसे करना है - यह सिर्फ यह कहता है कि चौड़ीकरण के लिए क्या गुण होना चाहिए।
(इस लंबे उत्तर के लिए क्षमा करें: मेरे पास वास्तव में इसे छोटा करने का समय नहीं था।)
मुझे लगता है कि यह बहुत उथले अर्थ में है। अमूर्त व्याख्या का पहला चरण एक ठोस एकत्रित शब्दार्थ की पहचान करना है। किसी एक राज्य के विकास का वर्णन करने के बजाय, शब्दार्थ का संग्रह राज्यों के समुच्चय के विकास का वर्णन करता है। चूंकि राज्यों के सेटों के प्रतिनिधित्व के बारे में प्रतीकात्मक निष्पादन कारणों से, कोई यह तर्क दे सकता है कि यह कार्यक्रम के ठोस शब्दार्थों का प्रतिनिधित्व करता है। मुझे पता नहीं है कि अधिक सटीक पत्राचार से काम किया जा रहा है।
पैट्रिक कूसोट देखें। Méthodes itératives डे कंस्ट्रक्शन et d'approximation de points fix d'opérateurs monotones sur un treillis, sémantique des programs (निर्माण के लिए Iterative विधियाँ, lattices पर मोनोटोन ऑपरेटरों के निर्धारण के सन्निकटन, कार्यक्रम स्थैतिक विश्लेषण) का विश्लेषण करते हैं। थिस इस्स साइंसेज मैथेमेटिक्स, यूनिवर्सिट जोसेफ फूरियर, ग्रेनोबल, फ्रांस, 21 मार्च 1978. https://cs.nyu.edu/~pcousot/publications.www/CousotThesexscici1919.pdf (दुर्भाग्य से फ्रेंच में), पेज (3) -27 (3) -29