C संकलक का इतिहास क्या है?


23

जब हम कहते हैं कि "डेनिस रिची ने सी भाषा विकसित की है", तो क्या हमारा मतलब है कि उसने एक संकलक ('पहले से विकसित' अन्य भाषा का उपयोग करके) बनाया है जो सी भाषा में लिखे गए स्रोत कोड को संकलित कर सकता है? यदि हाँ, तो पहले सी कंपाइलर लिखने के लिए वह किस भाषा का उपयोग करता था? मैं समझता हूं कि एक संकलक एक कार्यक्रम है और हम वर्तमान में उपलब्ध सी संकलक का उपयोग करके सी भाषा के लिए एक और संकलक बना सकते हैं। क्या वो सही है?

जवाबों:


23

से विकी :

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

विकि से भी :

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

पहला सी कंपाइलर भी उनके द्वारा विधानसभा में लिखा गया था।

बेल-लैब का यह पृष्ठ आपके अधिकांश प्रश्नों का उत्तर देता है।


पहला लिंक टूट गया है।
महमूद होसाम

IIRC, C, B नामक पूर्व भाषा पर आधारित था, और Unix एक पुराने ऑपरेटिंग सिस्टम पर आधारित था जिसे Multics कहा जाता था। यह एक स्पष्ट अनुमान होगा कि इनका उपयोग बूटस्ट्रैप विकास के लिए किया गया था - लेकिन मैंने जो पढ़ा है, वह गलत अनुमान है। यूनिक्स का प्रारंभिक विकास कोडांतरक में था, जब तक कि सी ने इसे नहीं लिया, उदाहरण के लिए।
स्टीव

2
IIRC, B BCPL का एक स्ट्रिप-डाउन संस्करण था, जो एक प्रारंभिक सिस्टम प्रोग्रामिंग भाषा थी। मुझे लगता है कि बहुत से शुरुआती यूनिक्स काम को बी का उपयोग करके वर्णित किया गया था , लेकिन मुझे यकीन नहीं है कि इसके लिए कभी एक वास्तविक यूनिक्स संकलक था (संभवतः एक क्रॉस-कंपाइलर जो किसी और चीज़ पर चलता था)।
TMN

आउच। । । असेंबली लैंग्वेज में कंपाइलर लिखना।
बजे

6
@ कंप्यूटर किसी बिंदु पर, किसी को असेंबली में एक कंपाइलर लिखना होता है - आप एचएलएल में कंपाइलर के लिए अपना रास्ता कैसे बनाते हैं?
रिचर्ड गड्सडेन

9

इतिहास पाठ के लिए इसे देखें: http://www.livinginternet.com/i/iw_unix_c.htm

जब पीडीपी -11 कंप्यूटर बेल लैब्स में आया, तो डेनिस रिची ने सी नामक एक नई भाषा बनाने के लिए बी का निर्माण किया, जिसे संक्षिप्त सिंटैक्स के लिए थॉम्पसन का स्वाद विरासत में मिला, और इसमें उच्च-स्तरीय कार्यक्षमता का शक्तिशाली मिश्रण था और ऑपरेटिंग प्रोग्राम को चलाने के लिए आवश्यक विस्तृत विशेषताएं थीं। प्रणाली। यूनिक्स के अधिकांश घटकों को अंततः सी में फिर से लिखा गया, जिसका समापन 1973 में कर्नेल के साथ हुआ

यह भी दिलचस्प हो सकता है: http://cm.bell-labs.com/cm/cs/who/dmr/chist.html


1
AFAIK, "पर बनाया गया" के रूप में "डिजाइन के आधार पर डिजाइन" , के रूप में "संकलित का उपयोग कर" नहीं
वार्टेक

8

डेनिस रिची बूटस्ट्रैपिंग का इस्तेमाल करते थे । बूटस्ट्रैपिंग सरल विचार है, जहां आप असेंबली में प्रारंभिक, सरल कंपाइलर विकसित करते हैं, फिर आप इस सरल कंपाइलर का उपयोग अपने टारगेट लैंग्वेज (एक सबसेट) में लिखी अपनी लक्षित भाषा को संकलित करने के लिए करते हैं। इस तरह से रिची ने बहुत जल्दी अंतिम 1120 सी संकलक बनाया ।


2

इस लेख को आपके प्रश्न का उत्तर देना चाहिए:

http://www.faqs.org/docs/artu/c_evolution.html

C का इतिहास B भाषा से जुड़ा है, जिसके लिए केन थॉम्पसन ने एक दुभाषिया विकसित किया। रिची ने सी विकास के पहले चरणों के लिए इसका इस्तेमाल किया।


2

सी को नए प्लेटफॉर्म के लिए सभी असेंबली कोड को फिर से लिखने के बिना यूनिक्स को अन्य प्लेटफार्मों पर पोर्ट करने की अनुमति देने के लिए डिज़ाइन किया गया था।

इसलिए आम कहावत है कि "C पोर्टेबल असेम्बलर है"। यह दर्शाता है कि C जानबूझकर एक सीपीयू (1970 के आसपास से) के करीब है जो कि अमूर्त स्तर पर है और यही कारण है कि ज्यादातर एम्बेडेड सॉफ्टवेयर किसी प्रकार के सी में लिखे गए हैं।

इसलिए, C, यूनिक्स के साथ अंतरंग रूप से जुड़ा हुआ है, और यूनिक्स के लोगों ने पहले सी कंपाइलर को काम करने के लिए पहले लिखा था जो उन्हें आवश्यक था।

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

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