मैं कुछ (कार्यों की मशीन सीखने) कि अधिमानतः एक कार्यात्मक प्रोग्रामिंग भाषा, और भी आत्मनिरीक्षण, विशेष रूप से कुछ अच्छी तरह से विनयशील प्रारूप में कार्यक्रम के लिए अपने कोड की जांच करने की क्षमता चाहते हैं की एक डिजाइन स्केच रहा हूँ, और अधिमानतः रनटाइम पर संकलित मशीन जेनरेट कोड प्राप्त करने की क्षमता भी, और मैं सोच रहा हूं कि इसे लिखने के लिए सबसे अच्छी भाषा क्या है। पाठ्यक्रम के लिस्प में मजबूत आत्मनिरीक्षण क्षमताएं हैं, लेकिन स्थैतिक रूप से टाइप की गई भाषाओं में भी फायदे हैं; जिन पर मैं विचार कर रहा हूं वे हैं:
क्या आप सामान्य दुभाषिया या कंपाइलर जैसे स्रोत कोड को पार्स नहीं कर सकते हैं? आपको आत्मनिरीक्षण की आवश्यकता क्यों है?
एफ # - नेट प्लेटफार्म की एक अच्छी कहानी है, आप रन टाइम पर बाइट कोड पढ़ सकते हैं और बाइट कोड भी छोड़ सकते हैं और इसे संकलित कर सकते हैं; मुझे लगता है कि एफ # से इन सुविधाओं तक पहुंचने में कोई समस्या नहीं है।
एफ # में एक प्राथमिक उद्धरण तंत्र है लेकिन आप केवल कुछ अभिव्यक्तियों को उद्धृत कर सकते हैं, न कि अन्य प्रकार के कोड, विशेष रूप से परिभाषाएं टाइप करें। इसके अलावा, इसका मूल्यांकन तंत्र वास्तविक संकलन की तुलना में तीव्रता के आदेश धीमा है, इसलिए यह मूल रूप से पूरी तरह से बेकार है। आप टाइप परिभाषाओं का विश्लेषण करने के लिए प्रतिबिंब का उपयोग कर सकते हैं, लेकिन फिर, यह काफी प्राथमिक है।
आप बाइट कोड पढ़ सकते हैं लेकिन इसे संकलित किया गया है इसलिए बहुत सारी जानकारी और संरचना खो गई है।
एफ # में लेक्सिंग और पार्सिंग तकनीक भी है (सबसे विशेष रूप से fslex, fsyacc और FParsec) लेकिन यह ओकैमल के रूप में परिपक्व नहीं है।
हास्केल, ओकैम - क्या इन्हें बाइट कोड या पार्स पेड़ के माध्यम से समान सुविधाएं हैं?
हास्केल में टेम्पलेट हास्केल है लेकिन मैंने कभी इसका उपयोग करने वाले किसी के बारे में कभी नहीं सुना है (त्याग?)।
ओकैमल में इसकी कैमल्प 4 मैक्रो सिस्टम है और कुछ लोग इसका उपयोग करते हैं लेकिन यह poorly documented है।
लेक्सिंग और पार्सिंग के लिए, हास्केल में कुछ पुस्तकालय हैं (सबसे विशेष रूप से पारसी) और ओकैमल में many libraries है।
क्या अन्य भाषाएं भी मुझे देखनी चाहिए?
गणित जैसी भाषाओं को फिर से लिखना एक स्पष्ट विकल्प होगा क्योंकि वे इसे कोड में हेरफेर करने के लिए तुच्छ बनाते हैं। Pure भाषा रुचि का हो सकता है।
आप मेटाओकैमल को अपनी रन-टाइम संकलन क्षमताओं के लिए भी विचार कर सकते हैं।
आपको आत्मनिरीक्षण की आवश्यकता क्यों है? –
पढ़ने की तरफ, यह आवश्यक है क्योंकि कल्पना प्रणाली की एक केंद्रीय विशेषता मानव लिखित कोड का विश्लेषण करने की क्षमता है। लेखन पक्ष पर, आवश्यक नहीं लेकिन अच्छा, क्योंकि ऐसे मामलों में जहां मशीन जेनरेट कोड अक्सर चलाया जाता है, इसे संकलित करने से यह तेज़ी से चल जाएगा। – rwallace
अच्छा सवाल, मैं वास्तव में हाल ही में इस बारे में सोच रहा हूं। मेरा दिन का काम सामान्य लिसप है और मैंने आत्मनिरीक्षण का उपयोग करके ग्राफविज़ कॉल ग्राफ़ को स्वचालित रूप से उत्पन्न करने के लिए कुछ चीजें की हैं और मैं सोच रहा हूं कि हैकेल के पास कुछ ऐसा करने के लिए मेरे लिए पर्याप्त शक्तिशाली है या नहीं। – asm