C प्रीप्रोसेसर की उत्पत्ति क्या है?


30

C प्रीप्रोसेसर C से जुड़ा हुआ है, लेकिन इसमें मुख्य भाषा से पूरी तरह से अलग सिंटैक्स है:

  • वाक्यात्मक रूप से महत्वपूर्ण व्हाट्सएप (पंक्ति का अंत एक बयान को समाप्त करता है, मैक्रो के बाद गैप प्रतिस्थापन सूची की शुरुआत निर्धारित करता है)

  • कीवर्ड-आधारित ब्लॉक ब्रेडेड ब्लॉक के elifबजाय , के बजायelse if

  • =मूल्य-परिभाषा के लिए घोषणा-प्रतिबिंबित-उपयोग के बजाय कीवर्ड-एलईडी परिभाषाएं

  • एक वैकल्पिक स्ट्रिंग सिंटैक्स के संकेत ( #include <>बनाम #include "")

  • आलसी मूल्यांकन (सी, जाहिर की, लेकिन 6.10.3.1 के रूप में पढ़ा जा सकता है जिसका अर्थ है कि मायने रखती है कुछ स्थानों में, साथ ही मैक्रो विस्तार का एक विशिष्ट क्रम)

यह वास्तव में सी की तरह नहीं दिखता है! तकनीकी तौर पर यह है अपनी ही भाषा, लेकिन यह हमेशा सेल्सियस के करीब-अभिन्न अंग के रूप में इस्तेमाल किया गया है और यह बहुत ही अजीब है कि यह इसके साथ वाक्य रचना को एकीकृत नहीं होता लगता है।

विकिपीडिया अपने इतिहास के बारे में बात नहीं करता है; पोर्टलैंड पैटर्न रिपॉजिटरी इसे एक उत्तीर्ण उल्लेख देता है , लेकिन इस तथ्य से परे विस्तार में नहीं जाता है कि इसे सी के इतिहास के साथ सी। डेनिस रिची की वेबसाइट के अलावा अन्य लोगों द्वारा डिजाइन किया गया था, शायद इसका जवाब था, लेकिन दुर्भाग्य से नहीं अधिक समय के लिए उपलब्ध।

एक मैक्रो इंजन के रूप में, यह स्पष्ट रूप से क्रम भाषा है, जो की व्याख्या करता है से बहुत अलग अर्थ विज्ञान है कुछ मतभेद हैं, लेकिन नहीं दृश्य डिजाइन पहलुओं (यह भी आधुनिक आँखों चाहे वह मूल रूप से होने के रूप में इरादा था करने के लिए स्पष्ट नहीं है कि सक्षम की तरह का मज़ा है कि इसके प्रतिस्थापन प्रणाली की अनुमति देता है, या क्या यह "सिर्फ" शक्तिशाली ऑप्टिमाइज़र से पहले एक समय में इनलाइन कार्यों के लिए एक समीचीन तरीका है)। ऐसा लगता है कि आखिरकार C ++ टेम्प्लेट्स के करीब क्या हुआ, मैक्रोज़ के प्रति अधिक तार्किक विकास हुआ होगा, यदि सी-लाइक शब्दार्थ वास्तव में शुरुआती बिंदु था, लेकिन सिंटैक्स के लिए इस से कम ठोस सबूत हैं।

क्या हमारे पास इस बात का कोई रिकॉर्ड है कि इसे इस तरह से क्यों बनाया गया था, या रचनाकारों के प्रभाव क्या थे?



@ माइक omg धन्यवाद, मैंने वास्तव में सोचा था कि साइट की सामग्री हमेशा के लिए खो गई थी क्योंकि उसके पास संग्रह में एक ब्राउज़ करने योग्य प्रविष्टि नहीं है।
लेउशेंको

@MikeSupportsMonica मैं पूछने वाला था कि क्या किसी के पास लिंक है। धन्यवाद।
klutt

जवाबों:


17

से http://www.jslint.com/chistory.html (डेनिस एम रिची द्वारा 'सी भाषा का विकास "):

1972-3 के आसपास कई अन्य परिवर्तन हुए, लेकिन सबसे महत्वपूर्ण था प्रीप्रोसेसर की शुरूआत, आंशिक रूप से एलन स्नाइडर [स्नाइडर 74] के आग्रह पर।, लेकिन BCPL और PL / I में उपलब्ध फ़ाइल-समावेश तंत्र की उपयोगिता की मान्यता में भी। इसका मूल संस्करण अत्यधिक सरल था, और इसमें केवल फाइलें और सरल स्ट्रिंग प्रतिस्थापन शामिल थे: #include और #define of पैरामीटर स्क्रीम। इसके तुरंत बाद, इसे बढ़ाया गया था, ज्यादातर माइक लेस्क और फिर जॉन रेसर द्वारा, मैक्रोज़ को तर्कों और सशर्त संकलन के साथ शामिल करने के लिए। प्रीप्रोसेसर को मूल रूप से भाषा के लिए एक वैकल्पिक सहायक माना जाता था। दरअसल, कुछ वर्षों तक, इसे तब तक लागू नहीं किया गया जब तक कि स्रोत कार्यक्रम में इसकी शुरुआत में एक विशेष संकेत नहीं था। यह रवैया कायम रहा, और बाकी भाषा के साथ प्रीप्रोसेसर की वाक्य रचना के अधूरे एकीकरण और शुरुआती संदर्भ पुस्तिकाओं में इसके विवरण की गड़बड़ी को समझाता है।

यह खाते के अनुभाग 4 में [स्नाइडर 74] संदर्भ से जुड़ा हुआ प्रतीत होता है, जो ऊपर उद्धरण में जुड़ा हुआ है कि एलन स्नाइडर एक पोर्टेबल पर काम कर रहा था (आज कोई "पुन: प्राप्त करने योग्य" कह सकता है) सी संकलक। शायद यह एक प्रीप्रोसेसर के लिए पूछने की प्रेरणा थी।

मुझे कोई अतिरिक्त विवरण नहीं मिल पाया है, हालांकि, सी प्रीप्रोसेसर के डिजाइन पर, भाषा के रूप में।


1
ध्यान दें कि स्नाइडर एमआईटी से बेल लैब्स में आया था, जहां MIDAS असेंबलर ने DEFINE, IFDEF और IFNDEF स्टेटमेंट दिए हैं। संयोग?
लार्स ब्रिंकहॉफ

0

मैं बस यह जोड़ सकता हूं कि विधानसभा भाषाओं के लिए मैक्रो असेंबलर प्री-प्रोसेसर होना बहुत आम था जो सीपीपी के समान दिखता है।

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