मेटा-प्रोग्रामिंग कितना आम है? [बन्द है]


10

आपने कितनी बार या मेटा-प्रोग्रामिंग को प्रोजेक्ट्स में उपयोग करते देखा है? Uni में मैंने इसे कभी भी लागू नहीं देखा है, लेकिन मैंने इसे अपनी पिछली नौकरी पर देखा है (जब मैंने देखा कि मैं उड़ा दिया गया तो यह कितना प्रभावी था)।

लेकिन यह कितना आम है? क्या यह हर समय उपयोग किया जाता है, या कभी-कभार?


5
यह आम नहीं हो सकता है; हालांकि लिस्प में काफी आम है, लिस्प वह आम नहीं है - कॉमन लिस्प भी नहीं।
पौल

स्पष्ट या अस्पष्ट? जावा और सी # का उपयोग करते हुए एक चरम पर यकीनन मेटा-प्रोग्रामिंग है क्योंकि उनके संकलक आउटपुट भाषा फाइलें हैं जो तब संकलित या व्याख्या की जाती हैं। दूसरे के बारे में बस कोई भी उस भाषा में कोड उत्पन्न करने के लिए कोड नहीं लिखता है जिसके लिए उन्होंने एक कंपाइलर बनाया है।
21

मेटाप्रोग्रामिंग सर्वव्यापी है। ऑटोटूलस पर निर्भर कोई भी ओपनसोर्स प्रोजेक्ट मेटाप्रोग्रामिंग का उपयोग कर रहा है। Qt दुनिया में MOC, LLVM में tblgen, कई .NET प्रोजेक्ट्स में T4, जावास्क्रिप्ट का निर्माण करने वाले किसी भी वेब प्रोजेक्ट को बहुत अधिक और इतने पर।
SK-तर्क

जवाबों:


5

यदि आप प्रतिबिंब को एक तरह का मेटा-प्रोग्रामिंग मानते हैं, तो यह अपेक्षाकृत सामान्य है। कुछ लोगों के लिए भी जेनेरिक प्रोग्रामिंग (टेम्प्लेट और जेनेरिक) मेटा-प्रोग्रामिंग का एक रूप है, इसलिए यह और भी सामान्य है।

मेरी राय में, हालांकि, मेटा-प्रोग्रामिंग कुछ अधिक जटिल है, जिसमें वास्तविक कोड पीढ़ी शामिल है, और इसलिए काफी असामान्य भी है, यहां तक ​​कि स्क्रिप्टिंग भाषाओं में भी।


टेम्प्लेट मेटाप्रोग्रामिंग "वास्तविक कोड जनरेशन" क्यों नहीं है?!? C ++ टेम्पलेट ट्यूरिंग-पूर्ण हैं, और आप मनमाने ढंग से जटिल कोड उत्पन्न कर सकते हैं।
SK-तर्क

@ एसके-तर्क: मेरा मतलब है कि रनटाइम की मांग पर नया कोड उत्पन्न किया जा रहा है। टेम्पलेट्स को कंपाइलर द्वारा संसाधित किया जाता है, आप उन्हें एक शक्तिशाली प्रकार के precompiler मैक्रो के रूप में देख सकते हैं।
जादूगर

आप रनटाइम में कोड क्यों उत्पन्न करना चाहेंगे? मेटाप्रोग्रामिंग (जैसे कॉमन लिस्प, रैकेट, टेम्पलेट हास्केल, आदि) के सबसे शक्तिशाली रूप संकलन-समय में हैं।
एसके-तर्क

3

मुझे लगता है कि यह दृढ़ता से निर्भर करता है कि आप किस भाषा का उपयोग करते हैं। आम लिस्प लोग संभवतः इसका उचित उपयोग करते हैं - मेटा-ऑब्जेक्ट प्रोटोकॉल, स्वच्छ चीजों को पारदर्शी / ऑर्थोगोनल दृढ़ता के लिए अनुमति देता है, उदाहरण के लिए - और स्मॉलटेकर इसका अक्सर उपयोग करते हैं।


2

यह आम लिस्प परियोजनाओं में आमतौर पर और लगातार दिखाने के लिए जाता है। कुछ स्पष्टीकरण / अंतर्दृष्टि के लिए ऑन लिस्प और लेट ओवर लैम्बडा देखें ।

यदि आप उदाहरणों के बाद (और सीएल को जानते हैं), तो एंटीवेब रिपॉजिटरी देखें; कवर के तहत चल रहे मेटा-प्रोग्रामिंग का एक अच्छा सौदा है।


1

पिछले दो वर्षों से एक नए कार्य पर प्रोग्रामिंग का पहला बिट लगभग हमेशा कोड लिखने के लिए कोड लिख रहा है। वहाँ एक डेटाबेस के साथ बातचीत के साथ जुड़े बॉयलरप्लेट का एक टन है जो स्वचालित स्क्रिप्ट पीढ़ी को सरल बनाया जा सकता है। उन चीजों के बारे में सोचें जहां आपको ऑब्जेक्ट या कुछ ऐसे बनाने के लिए 3 तालिकाओं को क्वेरी करने की आवश्यकता है। अगर भविष्य में इनमें से 10 चीजें बदल सकती हैं, तो इसे खुद क्यों लिखें?

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.