2010-06-17 9 views
27

मैंने लिस्पी पर मैककार्थी के 1 9 60 के पेपर को पढ़ा है और उपयोगकर्ता द्वारा परिभाषित मैक्रोज़ या सामान्य ऑर्डर मूल्यांकन के समान कुछ भी संदर्भ नहीं मिला है। मैं सोच रहा था जब मैक्रो पहले प्रोग्रामिंग भाषा के इतिहास में दिखाई दिया है (और भी लिस्प इतिहास में):मैक्रोज़ (उपयोगकर्ता परिभाषित कोड परिवर्तन) का विचार कब प्रकट हुआ?

  • जब उपयोगकर्ता परिभाषित कोड परिवर्तन के विचार (पहले व्याख्या या संकलन) पहले वर्णित किया गया था (सैद्धांतिक रूप से)?
  • लिस्प-जैसे मैक्रोज़ ("लिस्प-जैसे" मेरा मतलब है "कोड-रूपांतरण करने के लिए एक पठनीय ट्यूरिंग-पूर्ण भाषा का उपयोग करके" का पहला प्रोग्रामिंग भाषा कार्यान्वयन क्या था? (गैर-लिस्पस सहित - उदाहरण के लिए फर्थ काफी पुराना है, लेकिन मुझे यकीन नहीं है कि पहले फर्थ कार्यान्वयन में पहले से ही "तत्काल" था)
  • इनमें से कौन सी पहली उच्च स्तरीय प्रोग्रामिंग भाषा थी (असेंबलर भाषाएं बहिष्कृत करें ...)
  • मैक्रोज़ रखने वाली पहली लिस्प बोली क्या थी?

धन्यवाद!

उत्तर

9
से The Evolution of Lisp (स्टील/गेब्रियल)

:

3,3 मैक्रो

मैक्रो ऐसा लगता है कि 1 9 63 में टिमोथी पी। हार्ट द्वारा लिस्पी में एक लघु एमआईटी एआई मेमो [हार्ट, 1 9 63],

में पेश किया गया प्रतीत होता है

टिमोथी पी हार्ट, MACRO Definitions for LISP अक्टूबर 1963

10

मुझे लगता है कि विचार Post systems पर वापस जाता है, स्ट्रिंग्स के साथ पुनः लिखना ("यदि आप यह स्ट्रिंग देखते हैं, तो उस स्ट्रिंग के साथ इसे बदलें")। पोस्ट सिस्टम ट्यूरिंग-सक्षम हैं, और इस प्रकार कुछ भी गणना कर सकते हैं (प्रोग्राम ग्रंथों सहित!)। इन पर एमिल पोस्ट का पेपर 1 9 43 का दिनांक है, लेकिन माना जाता है कि उन्होंने 1 9 20 के दशक में मूल अवधारणा को किया था।

The General Purpose Macro Processor, पहले व्यापक रूप से उपयोग किए जाने वाले लोगों में से एक, शुरुआती 60 के दशक में उपलब्ध था।

TRAC इसी अवधि के लिए एक और प्रारंभिक मैक्रो प्रोसेसर है। History of Computer Languages (TRAC) का कहना है कि इसे 1 9 5 9 में डिजाइन किया गया था।

ये दोनों ट्यूरिंग-सक्षम मैक्रो प्रोसेसर हैं।

SNOBOL इसी अवधि से भी तिथियां हैं।

तथ्य यह है कि शुरुआती 60 के दशक में बहुत सामान्य प्रयोजन मैक्रो प्रोसेसर का निर्माण किया जा रहा था, मुझे संकेत मिलता है कि प्रेरणा प्रदान करने के लिए पहले विशेष उद्देश्य वाले मैक्रो प्रोसेसर बनाए गए थे। मुझे यकीन है कि इस बिंदु से पहले असेंबलरों में मैक्रो प्रोसेसर का उपयोग किया जा रहा था, लेकिन मेरे पास विशिष्ट सबूत नहीं हैं।

मुझे पता है कि COBOL को तथाकथित COPY libs कहा जाता है, जो मैक्रोज़ के बीच एक क्रॉस हैं और फ़ाइलों को शामिल करते हैं। मुझे नहीं पता कि यह कब COBOL में पेश किया गया था, लेकिन लैंगेज 1 9 58 में वापस चला गया।

यह ध्यान देने योग्य है कि LISP मैक्रोज़ को पेड़-टू-पेड़ रीराइट्स का एक विशेष मामला माना जा सकता है ("अगर आप एक एस-अभिव्यक्ति देखते हैं जो इस तरह दिखता है, इसे एक एस-अभिव्यक्ति द्वारा प्रतिस्थापित करें जो ऐसा लगता है ")। पेड़ को तारों के रूप में आसानी से मॉडलिंग किया जा सकता है (देखें: "LISP" :) और इस प्रकार LISP मैक्रोज़ स्ट्रिंग रीराइटिंग का एक विशेष मामला है।

पेड़-पुनर्लेखन का सामान्यीकृत मामला अब Program Transformation Systems का आधार है, जो प्रोग्राम टेक्स्ट पर बड़े पैमाने पर परिवर्तन कर सकता है।

+0

धन्यवाद - मैं कोडांतरक मैक्रो और पोस्ट प्रणाली के बारे में भूल गया था। यह बहुत उपयोगी है - और मैं "पहली उच्च स्तरीय भाषा" को शामिल करने के लिए अपने प्रश्न को भी संपादित करूंगा - जो अभी तक स्पष्ट नहीं है कि यह COBOL था या नहीं। – Jay

16

जहां लिस्प में पेश कैसे मैक्रो के लिए देखने के लिए, FEXPRs और FSUBRs का उल्लेख के लिए आप देखना चाहिए जो आधुनिक लिस्प मैक्रो की पूर्ववर्तियों (या अधिक सही, FEXPRs उपयोगकर्ता परिभाषित मैक्रो की पूर्ववर्तियों हैं)।इनका उल्लेख कई स्थानों पर किया गया है - उदाहरण के लिए, मैककार्थी के History of Lisp के From LISP 1 to LISP 1.5 अनुभाग में। लेकिन वास्तव में, इससे पहले भी इसका उल्लेख किया गया है: LISP I PROGRAMMER'S MANUAL (1 9 60 से) के पी .8 में आप FEXPR और FSUBR का विवरण देख सकते हैं।

बीटीडब्लू, यह स्ट्रिंग-आधारित सिस्टम के साथ लिस्प मैक्रोज़ की तुलना करने के लिए थोड़ा सा फर्जी है। पेड़ ट्रांसफार्मर बनाम स्ट्रिंग मैनिप्लेशंस का उपयोग करने का लाभ यह एक पूरी तरह से अलग प्रणाली बनाने के लिए काफी महत्वपूर्ण है। लिस्प मैक्रोज़ का एक अन्य महत्वपूर्ण पहलू यह है कि वे स्थानीय रूपांतरण बनाम वैश्विक कार्यक्रम परिवर्तन (इसके लिए पढ़ने के लिए सबसे स्पष्ट पेपर फ़ेलिसेन के On the Expressive Power of Programming Languages) हैं। और निश्चित रूप से यहां एक पूरा क्षेत्र है - FEXPRs से लेकर आधुनिक, अधिक अच्छी तरह से व्यवहार किए गए मैक्रोज़, फिर योजना में स्वच्छ मैक्रोज़ (जो एक प्रतिनिधित्व के साथ सौदा है जो प्रतीकात्मक पार्स पेड़ों की तुलना में समृद्ध है), फिर मैक्रोज़ का संयोजन और एक मॉड्यूल प्रणाली, वाक्य रचना विस्तार चरणों, आदि आदि आदि पढ़ने का एक कुछ वर्षों के लिए यहाँ शायद काफी सामान है ...

संबंधित मुद्दे