2013-03-07 8 views
10

संरचनात्मक टाइपिंग के बारे में शोध करते समय मुझे निम्नलिखित पोस्ट how interfaces in Go are translated to method lookup tables at runtime का वर्णन करते हुए मिला। पोस्ट में वर्णित प्रक्रिया स्केल के वैकल्पिक संरचनात्मक प्रकार प्रणाली और जावा भाषा के व्हाइट ओक एक्सटेंशन के लिए वर्णित reflective and generative techniques से काफी अलग है।ओकैमल, स्कैला, और गो

क्या कोई गहन संसाधन है जो चर्चा करता है कि ओकैमल में संरचनात्मक टाइपिंग कैसे कार्यान्वित की जाती है? मैं विशेष रूप से ऑप्टिमाइज़ेशन या नाममात्र प्रकार के सिस्टम के साथ रन-टाइम प्रदर्शन तुलना की किसी भी चर्चा में रूचि रखता हूं।

+0

दिलचस्प छद्म। – didierc

उत्तर

8

आप जेक डोनहम द्वारा this blog post में ओकैम ऑब्जेक्ट आंतरिक का विस्तृत विवरण प्राप्त कर सकते हैं। इसका अर्थ यह है कि ऑब्जेक्ट समर्थन को अधिकतर an internal library के रूप में कार्यान्वित किया जाता है, जिसमें संकलक में केवल थोड़ी-थोड़ी तर्क होती है (और निश्चित रूप से टाइप सिस्टम में ऑब्जेक्ट टाइपिंग तर्क), अधिकतर कुशल संदेश प्रेषण के आसपास।

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