उदाहरण 1. मेरी रिपोर्ट में कितने पेज हैं?
जब मैं प्रोग्राम सीख रहा था तो मैंने डेटा से सुंदर रिपोर्ट प्रिंट करने के लिए एक टूल बनाने के साथ खेला। जाहिर है, मैं चाहता हूं कि यह वास्तव में लचीला और शक्तिशाली हो, इसलिए यह सभी जनरेटर को समाप्त करने के लिए रिपोर्ट जेनरेटर होगा।
रिपोर्ट परिभाषा इतनी लचीली हो गई कि यह ट्यूरिंग पूर्ण हो गया। यह चर को देख सकता है, विकल्पों के बीच चयन कर सकता है, चीजों को दोहराने के लिए लूप का उपयोग कर सकता है।
मैंने एक अंतर्निहित परिवर्तनीय एन परिभाषित किया है, रिपोर्ट उदाहरण में पृष्ठों की संख्या, ताकि आप प्रत्येक पृष्ठ पर "पृष्ठ एन एन" कहने वाली स्ट्रिंग डाल सकें। मैंने दो पास किए, पहले पृष्ठ से प्राप्त एन का उपयोग करके पृष्ठों को गिनने वाले पहले व्यक्ति (जिसके दौरान एन को शून्य पर सेट किया गया था), और दूसरा वास्तव में उन्हें उत्पन्न करने के लिए।
कभी-कभी पहला पास एन की गणना करेगा, और फिर दूसरा पास पृष्ठों की एक अलग संख्या उत्पन्न करेगा (क्योंकि अब गैर-शून्य एन रिपोर्ट को बदल देगा)। मैंने एन को बसने तक पूरी तरह से गुजरने की कोशिश की। तब मुझे एहसास हुआ कि यह निराशाजनक था क्योंकि अगर यह तय नहीं हुआ तो क्या होगा?
यह तब सवाल उठता है, "क्या मैं कम से कम उपयोगकर्ता को पहचान और चेतावनी दे सकता हूं अगर पुनरावृत्ति कभी भी उनकी रिपोर्ट के पृष्ठों की संख्या के लिए एक स्थिर मूल्य पर व्यवस्थित नहीं हो सकती है?" सौभाग्य से इस समय तक मैं ट्यूरिंग, गोडेल, कम्प्यूटेबिलिटी इत्यादि के बारे में पढ़ने में दिलचस्पी लेता था और कनेक्शन बना देता था।
सालों बाद मैंने देखा कि एमएस एक्सेस कभी-कभी "5 का पृष्ठ 6" प्रिंट करता है, जो वास्तव में एक अद्भुत बात है।
उदाहरण 2: सी ++ compilers
संकलन प्रक्रिया का विस्तार टेम्पलेट्स शामिल है। टेम्पलेट परिभाषाओं को कई विशेषज्ञताओं से चुना जा सकता है ("cond" के रूप में सेवा करने के लिए पर्याप्त अच्छा) और वे भी रिकर्सिव हो सकते हैं। तो यह एक ट्यूरिंग पूर्ण (शुद्ध कार्यात्मक) मेटा-सिस्टम है, जिसमें टेम्पलेट परिभाषाएं भाषा हैं, प्रकार मान हैं, और संकलक वास्तव में एक दुभाषिया है। यह एक दुर्घटना थी।
परिणामस्वरूप किसी भी दिए गए सी ++ प्रोग्राम की जांच करना संभव नहीं है और कहें कि संकलक सिद्धांत के कार्यक्रम के सफल संकलन के साथ सिद्धांत रूप से समाप्त हो सकता है या नहीं।
कंपाइलर विक्रेताओं टेम्पलेट रिकर्सिव की स्टैक गहराई को सीमित करके इस के आसपास मिलता है। आप g ++ में गहराई को समायोजित कर सकते हैं।
स्थिर प्रकार सिस्टम केवल इसके मूल्य के बजाय चर के प्रकार के लिए जांच नहीं करते हैं? मुझे लगता है कि आपके वर्ग ने संकलित समय पर रनटाइम त्रुटियों को अस्वीकार करने के लिए एक स्थिर प्रकार चेकर की अपेक्षा करते समय प्रश्न को खराब कर दिया। – andandandand
@dmindreader - नहीं। अधिकांश कंपाइलर/प्रकार-सुरक्षित भाषाएं वास्तव में केवल प्रकारों की जांच करती हैं, लेकिन कुछ (कभी-कभी) स्थिर विश्लेषण के लिए मूल्यों की सीमा देखना संभव है। गौर करें कि रीशेर्पर या कवरिटी कैसे "संभावित शून्य मूल्य" चेतावनियां उत्पन्न करती है। –
मैं चिकित्सा उपकरणों को डिजाइन करने के लिए प्रयोग किया जाता था। मुझे एक बार बैटरी संचालित डिवाइस में शामिल करने के लिए कहा गया था, एक प्रकाश जो इंगित करेगा कि बैटरी मर गई थी। –