2009-10-21 6 views
11

मान लीजिए कि मैं एक कार्यात्मक भाषा के लिए एक दुभाषिया को लागू करना चाहता हूं। मैं ऐसा करने और उपयुक्त साहित्य उपलब्ध कराने में शामिल मुद्दों को समझना चाहता हूं। यह एक नई भाषा है जो प्रारंभिक डिजाइन चरणों में है, यही कारण है कि प्रश्न दायरे में व्यापक है।एक कार्यात्मक भाषा के लिए एक दुभाषिया डिजाइन करने में मुख्य मुद्दे क्या हैं?

इस चर्चा के उद्देश्य से हम मान सकते हैं कि भाषा का उद्देश्य महत्वपूर्ण नहीं है और इसकी कार्यात्मक विशेषताओं को भी बदला जा सकता है (यहां तक ​​कि भारी रूप से) यदि यह एक दुभाषिया लिखने में आसानी में महत्वपूर्ण अंतर डालता है।

एमआईटी वेबसाइट Structure and Interpretation of Computer Programs की एक ऑनलाइन प्रतिलिपि के साथ ही योजना का उपयोग कर एमआईटी 6.001 व्याख्यान videos, 1986 में हिमाचल प्रदेश में दर्ज इन भाषा डिजाइन का एक बेहतरीन परिचय फार्म है।

+2

मैं बस धीरे-धीरे अनुशंसा करता हूं कि आप अपने पिछले प्रश्नों के माध्यम से जाना चाहें और उनमें से प्रत्येक के लिए उपयुक्त एक उत्तर स्वीकार कर सकते हैं। – BobbyShaftoe

+2

यह वास्तव में एक समुदाय विकी होना चाहिए। –

+0

@ बॉबी - मैंने यह किया है। @ डेविड - मैं इसे एक समुदाय विकी कैसे बना सकता हूं? यदि आप ऐसा कर सकते हैं, तो कृपया आगे बढ़ें। मुझे विशेष रूप से लाइब्रेरियन या प्रतिष्ठा अंक प्राप्त करने के राजनीतिक पहलुओं में दिलचस्पी नहीं है। –

उत्तर

3

मैं अत्यधिक शुरुआती बिंदु के रूप में Structure and Interpretation of Computer Programs (SICP) की अत्यधिक अनुशंसा करता हूं। यह पुस्तक एक दुभाषिया (और एक कंपाइलर) लिखने का क्या अर्थ है, इसका विचार पेश करेगी, और आम तौर पर किसी को डिजाइन करने वाली भाषाओं के लिए पढ़ना आवश्यक है।

किसी कार्यात्मक भाषा के लिए एक दुभाषिया को कार्यान्वित करना किसी अन्य सामान्य उद्देश्य भाषा के लिए दुभाषिया को लागू करने से बहुत अलग नहीं होने की संभावना है। व्याख्यात्मक विश्लेषण, पार्सिंग, एएसटी निर्माण, अर्थात् विश्लेषण, प्लस निष्पादन (शुद्ध दुभाषिया के लिए) या कोड जनरेशन और ऑप्टिमाइज़ेशन (एक कंपाइलर के लिए, जावा/पर्ल/पायथन जैसे बाइटकोड तक संकलित) भी है। एसआईसीपी "आवेदक आदेश" और "सामान्य आदेश" मूल्यांकन के बीच अंतर पेश करेगा, जो आपके लिए शुद्ध कार्यात्मक संदर्भ में महत्वपूर्ण हो सकता है।

+0

ग्रेट। पुस्तक और व्याख्यान वीडियो दोनों ऑनलाइन हैं और कार्यात्मक प्रोग्रामिंग और भाषा डिजाइन के लिए एक शानदार परिचय बनाते हैं। –

0

मुख्य समस्या आपके द्वारा कार्यान्वित की जा रही भाषा के लिए एक अर्थशास्त्र है - उसके साथ, कार्यान्वयन सरल हो जाता है। अन्यथा, यह सवाल जवाब देने के लिए अविश्वसनीय रूप से व्यापक और कठिन है।

+0

मुझे एक पूर्ण "उत्तर" की आवश्यकता नहीं है। मैं संभावित नुकसान पर मुद्दों और सलाह के बारे में चर्चा की तलाश में हूं। –

1

किसी भी भाषा दुभाषिया या कंपाइलर के लिए, मुख्य मुद्दे समान हैं, मुझे लगता है।

आपको भाषा की कुछ बुनियादी विशेषताओं (अर्थशास्त्र, वाक्यविन्यास नहीं) तय करने की आवश्यकता है, और उस चीज़ के डिजाइन का बड़ा हिस्सा उस से मिलता है।

  • उदाहरण के लिए, क्या आपकी भाषा में एक प्रकार का सिस्टम है? यदि हां, तो प्रकारों के किस प्रकार के पास हैं? क्या यह स्थिर रूप से टाइप किया गया है, गतिशील रूप से टाइप किया गया है, बतख-टाइप किया गया है?

  • आप किस प्रकार के भाव समर्थन करने की योजना बना रहे हैं? क्या आपको संचालन के क्रम को परिभाषित करने की आवश्यकता है? आपके पास ऑपरेटर भी होंगे?

  • रन-टाइम प्रोग्राम का प्रतिनिधित्व करने के रूप में आप क्या उपयोग करेंगे? क्या आप टेक्स्ट को बाइट-कोड प्रतिनिधित्व, या एएसटी, या स्रोत टेक्स्ट के टोकनयुक्त रूप में रूपांतरित कर देंगे?

पाठ की वास्तविक पार्स (ANTLR और बाइसन, दो नाम हैं) से बाहर विरक्ति से कुछ लेने में मदद करने के लिए उपलब्ध उपकरणकिटें रहे हैं, लेकिन मैं कुछ भी है कि वास्तविक व्याख्या भाग के साथ मदद करता है के बारे में पता नहीं है कार्य का मुझे यकीन है कि कोई कुछ सुझाव देगा।

0

देखें मैं SICP के लिए एक अच्छा पूरक के रूप में प्रोग्रामिंग भाषाओं के अनिवार्य की सलाह देते हैं, खासकर यदि आप दुभाषिए में रुचि रखते हैं: सरकारी EOPL साइट। आप third edition देख सकते हैं - साइट अभी तक इसके लिए अपडेट नहीं की गई है।

संपादित करें: स्पैम रोकथाम मुझे लिंक के बीच चुनने के लिए तैयार कर रहा है, इसलिए आधिकारिक पृष्ठ अब बिना गरम हो गया है। हालांकि, यह आसानी से Google-सक्षम है।