2010-11-05 16 views
6

सभी,सी के लिए वैकल्पिक, सी ++?

इतने सारे प्रोग्रामिंग भाषाओं/ऑपरेटिंग सिस्टम/डिवाइस ड्राइवर हैं अर्थात सॉफ्टवेअर कि C और C++ का उपयोग कर बनाया जाता है। मैं सोच रहा था कि क्या सी और सी ++ केवल 2 निम्न स्तर की प्रोग्रामिंग भाषाएं थीं जिन्हें सभी कंपनियों को कभी भी अपना खुद का उत्पाद बनाना था? यदि वहां हैं, तो सी और सी ++ को अन्य विकल्पों पर इतना वरीयता क्यों मिलती है?

+0

ऐप्पल अपने ओएस – pastjean

+6

के महान हिस्सों के लिए ओब्जे-सी का उपयोग करता है http://en.wikipedia.org/wiki/Low-level_programming_language आपको और जानने की क्या आवश्यकता है? यहाँ क्यों पूछो? –

+0

"निम्न स्तर की प्रोग्रामिंग भाषाएं" परिभाषित करें? क्या आप संकलित भाषाओं बनाम व्याख्या की गई भाषा का मतलब है? – EboMike

उत्तर

3

अन्य निम्न-स्तरीय भाषाएं हैं, लेकिन सी को 'लोकप्रियता स्नोबॉल' प्रभाव का लाभ मिला।

यह किसी भी उचित पोर्टेबल भाषा के रूप में उतना ही कुशल है, इसलिए यह सिस्टम प्रोग्रामिंग के लिए एक अच्छा विकल्प है। एक बार जब आप एक ऑपरेटिंग सिस्टम बनाते हैं, तो इसके साथ उसी सिस्टम के लिए टूल बनाने का अर्थ होता है, इसलिए 80 और 9 0 के दशक में बहुत से प्रोग्रामर इसका खुलासा कर चुके हैं। इस प्रकार यह लिंगुआ फ़्रैंका बन गया कि सभी सिस्टम प्रोग्रामर परिचित थे।

या तो अपनी क्षमता या अपनी पोर्टेबिलिटी समझौता किए बिना अपेक्षाकृत कम आप सी पर सुधार करने के लिए क्या कर सकते हैं नहीं है, तो कोई स्पष्ट निम्न स्तर पर इसके खिलाफ प्रतिस्पर्धा करने के लिए जगह नहीं थी।

+0

यही वह है जिसे मैं समझना चाहता था। वेब प्रोग्रामिंग भाषाओं या ऑब्जेक्ट उन्मुख प्रोग्रामिंग की बात आती है तो बहुत प्रतिस्पर्धा हुई है। लेकिन प्रक्रियात्मक भाषाओं के मामले में, किसी कारण से, सी हमेशा कॉर्पोरेट फर्मों के लिए लाइटलाइट में रही है। –

+0

* "अपेक्षाकृत कम है कि आप इसकी दक्षता या इसकी पोर्टेबिलिटी समझौता किए बिना सी में सुधार करने के लिए कर सकते हैं, इसलिए निम्न स्तर पर इसके खिलाफ प्रतिस्पर्धा करने के लिए कोई स्पष्ट जगह नहीं थी।" * वाक्यविन्यास। मैं सी के बारे में सोच रहा हूं "घोषणाएं प्रकारों के लिए उपयोग को दर्शाती हैं"। यह भयंकर है। मैं इसे स्केल, गो, हास्केल, या एमएल जैसे पोस्टफिक्स प्रकार वाक्यविन्यास के साथ बदल दूंगा; उदाहरण के लिए, 'var x: int = 5; ',' var dptr: ** double; ',' def sort (a: * int, len: int, cmp_lt: (int, int) -> बूल): इकाई; ' । आईएमओ, सुधार बहुत अधिक होगा, और परिवर्तन प्रदर्शन या पोर्टेबिलिटी पर * नहीं * प्रभाव होगा। – Harrison

+0

आप उस वाक्यविन्यास को इंगित नहीं कर सकते हैं और कह सकते हैं कि यह सी सिंटैक्स से काफी बेहतर है कि लोगों को स्विच करना चाहिए। यहां तक ​​कि अगर यह स्पष्ट रूप से, निष्पक्ष रूप से बेहतर था, एक बार सी में एक पैरहल है जिसे बदलने के लिए पर्याप्त कारण नहीं है। एस्पेरांतो बनाम अंग्रेजी, ड्वोरक बनाम QWERTY पर विचार करें। यदि वह वाक्यविन्यास आधे या कुछ में संकलन के समय को काट सकता है, तो आप लोगों को स्विच करने के लिए मिल सकते हैं। –

2

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

अधिकतर अन्य भाषाओं (सी ++ सहित कुछ हद तक, जब तक कि आप स्वयं को इसके पक्ष में सीमित न करें) में बहुत सारे अनावश्यक सामान लेते हैं, जबकि अनुप्रयोग प्रोग्रामिंग के लिए एक पूर्ण देवता, बस रास्ते में आते हैं सिस्टम स्तर की सामग्री के लिए।

बेशक, आप असेंबली कोड का भी उपयोग कर सकते हैं लेकिन सी कंपेलरों की गुणवत्ता के साथ आजकल शायद ही कभी जरूरी है।

+0

सी ++ में आपको इसके सी सबसेट में शामिल करने की आवश्यकता नहीं है। सी में ऐसी कई सुविधाएं उपलब्ध नहीं हैं जो किसी भी कीमत को लागू नहीं करती हैं: निर्माण और विनाश (आरएआईआई), टेम्पलेट्स (वे स्मृति में लागत लगा सकते हैं, लेकिन गति में नहीं), वर्चुअल फ़ंक्शंस फ़ंक्शन पॉइंटर्स की तुलना में खराब नहीं होते हैं .. –

0

सी # के बारे में कैसे? सी # का उपयोग कर कई विंडोज अनुप्रयोगों का निर्माण किया जाता है।

पर्ल/पायथन के बारे में कैसे? विंडोज और लिनक्स पर कई एप्लिकेशन उन भाषाओं का उपयोग करके निर्माण करते हैं।

डी के बारे में कैसे? हमेशा उपयोग करने के लिए एक अच्छी भाषा है, लेकिन यह दुख की बात है कि यह देशी सी ++ के साथ जितना अच्छा है उतना अच्छा नहीं बोलता है।

+6

ओपी विशेष रूप से सिस्टम और डिवाइस ड्राइवरों के लिए निम्न स्तर की भाषाओं के बारे में पूछ रहा था, ऐप भाषा नहीं। –

0

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

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

+0

'ए' और' बी' भाषाएं? कृपया उद्धरण? सी बीसीपीएल से आया जो सीपीएल से आया था। जब तक आप विनोदी नहीं हो। – paxdiablo

+0

http://www.livinginternet.com/i/iw_unix_c.htm आप सही हैं कि यह उस से आया था, लेकिन पहली भाषाएं थीं जिन्हें ए कहा जाता था, और जिसे बी कहा जाता था। वे सी से पहले आए थे, और मुझे यकीन है कि मैंने खर्च किया है Google पर अधिक समय, आप शायद यह पता लगा सकते हैं कि उन्होंने आश्चर्यजनक भाषा के बजाय इसे सी क्यों कहा (कोई कटाक्ष नहीं है)। यह सिर्फ भाषा के नामों का क्रम है। – Jim

+0

"1 9 6 9 और 1 9 73 के बीच एटी एंड टी बेल लैब्स में सी का प्रारंभिक विकास हुआ; [2] रिची के अनुसार, सबसे रचनात्मक अवधि 1 9 72 में हुई थी। इसे" सी "नाम दिया गया था क्योंकि इसकी विशेषताएं" बी "नामक एक पूर्व भाषा से ली गई थीं। ", जो केन थॉम्पसन के अनुसार बीसीपीएल प्रोग्रामिंग भाषा का एक अलग संस्करण था।" विकिपीडिया से http://en.wikipedia.org/wiki/C_%28programming_language%29#Early_developments – Jim

7

ओएस विकास के लिए उपयुक्त कई "मध्यम-स्तर" भाषाएं हैं, लेकिन सी और कुछ हद तक सी ++ सबसे लोकप्रिय हैं। इसके लिए कई कारण हैं, जिनमें शामिल हैं:

  • यूनिक्स के कार्यान्वयन के रूप में सी की प्रारंभिक सफलता ने व्यापक रूप से अपनाया।

  • महान विकास उपकरण (कंपाइलर्स, लिंट, संपादक, मेमोरी लीक विश्लेषण, प्रोफाइल, कोड जनरेटर, विज्ञापन मतली) की विशाल उपलब्धता सी को और अधिक आकर्षक बनाता है।

  • सी के निकटता "सार मशीन" स्तर पर निकटता; विपरीत, कहते हैं, पास्कल, जिसमें काफी अधिक रनटाइम ओवरहेड है। उच्च प्रदर्शन सॉफ्टवेयर लिखते समय यह वांछनीय है। कभी-कभी हार्डवेयर को इसके निकटता के लिए सी को "पोर्टेबल असेंबलर" कहा जाता है।

+2

+1 आपका पहला बुलेट सही उत्तर है। सी = यूनिक्स, सी # = माइक्रोसॉफ्ट, ओबीजेसी = आईफोन। मंच भाषा को लोकप्रिय बनाता है। – tidwall

+1

@jojaba: माइक्रोसॉफ्ट अभी भी वास्तविक ओएस (AFAIK) के लिए सी है, जैसा मैकोज़क्स कर्नेल है, भले ही ऊपरी परतों को सी #/ओबीजेसी –

+0

@ डेविड के साथ लागू किया गया हो: आपका अधिकार। और मेरा मतलब यह नहीं था कि प्रत्येक संबंधित कंपनी या प्रौद्योगिकी के लिए ओएस भाषा में लिखा गया है, बल्कि यह सीढ़ी पर एक भाषा को स्थानांतरित करने में मदद करने के लिए एक लोकप्रिय मंच लेता है। अगर ऐप्पल ने आईफोन जारी नहीं किया है, तो मुझे संदेह है कि टैग 'उद्देश्य-सी' एसओ में टैग 'सी' से अधिक होगा। (शुद्ध अटकलें) – tidwall

6

कभी-कभी डिवाइस ड्राइवरों जैसे निम्न स्तर के सॉफ्टवेयर विकसित करने के लिए फर्थ का उपयोग किया जाता है। उदाहरण के लिए, सन स्पैर आधारित सर्वर के लिए बूट प्रोम फर्थ में लिखा जाता था। विवरण के लिए http://en.wikipedia.org/wiki/Open_Firmware देखें।

+0

+1 मैं फर्थ पोस्ट करने वाला था :-) – pmg

+0

यह सिर्फ वैसे ही SPARC नहीं है। मुझे लगता है कि ऐप्पल ने यह किया था, जैसा कि कुछ आईबीएम पीएसरीज़ बॉक्स (एईक्स) स्मृति से किया था। – paxdiablo

+0

@ पक्सडीब्लो, आप बिल्कुल सही हैं, कुछ ऐप्पल और आईबीएम सिस्टम ओपन फर्मवेयर का उपयोग करते हैं। यह एसपीएआरसी सिस्टम पर था जहां मुझे इसका सामना करना पड़ा, इसलिए, यही कारण है कि यह दिमाग में आया। – corriganjc

3

मुझे कुछ लोग जानते हैं जो D में सिस्टम प्रोग्रामिंग करते हैं। यह सी #, आदि से कम स्तर है लेकिन आधुनिक भाषाओं के कई लाभ थे।

+0

डी जीसी पर भारी निर्भर करता है। इसके साथ निम्न स्तर के कोड लिखना कल्पना करना मुश्किल है। – rustyx

+0

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

3

अमूर्त के निम्न स्तर की तुलना में इससे भी अधिक, सी की प्रमुख विशेषता और (सी ++ RTTI विकलांग के साथ) है कि सिस्टम सॉफ्टवेयर के लिए लागू है कि वे किसी भी क्रम पुस्तकालय की आवश्यकता नहीं है।

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

सी एक मानक पुस्तकालय नहीं बल्कि एक क्रम पुस्तकालय है, तो आप सी में मानक पुस्तकालय लागू कर सकते हैं, और आप भी इसका इस्तेमाल अन्य भाषाओं के लिए क्रम पुस्तकालयों लिखने के लिए कर सकते हैं। सी ++ के लिए डिट्टो (आरटीटीआई अक्षम के साथ)।

2

एडीए, पास्कल, विधानसभा, फोरट्रान, वगैरह वगैरह यहां तक ​​कि जब आप निम्न स्तर भाषाओं के लिए चर्चा को सीमित कर रहे हैं, तो आप अभी भी विकल्पों की एक बहुत कुछ है। ऐसी कई कंपनियां हैं जो बहुत सी सी या सी ++ काम नहीं करती हैं (उदाहरण के लिए, अमेरिकी सेना एडा का उपयोग करके काफी मात्रा में काम करती है)।

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

1

सी यूनिक्स के प्रारंभिक दिनों से लिंगुआ-फ़्रैंका रहा है। इतने सारे मौजूदा सी कोड हैं, इतनी सांस्कृतिक जड़, कि लोग सिर्फ भाषा का उपयोग करते हैं। यह उससे अधिक है: सी है इसलिए अच्छी तरह डिज़ाइन किया गया: इसकी सादगी में, सीखने की गति में, संकलन की गति, कोडिंग की गति, चलने की गति; अपनी बाइबल जैसी ट्यूटोरियल पुस्तक में, ठोस ओपन-सोर्स कोड की भारी मात्रा में हम अभी भी उपयोग करते हैं और हैक करते हैं, और सूची जारी है। यह सिर्फ उपयोगी भाषा है, जैसे कोई दबाव-स्वतंत्र, गुरुत्वाकर्षण-स्वतंत्र हीरा-स्पार्कल्ड मिलियन डॉलर का पेन, स्वर्गदूतों के उंगली-प्रिंट के साथ एक पेंसिल को प्रतिस्थापित कर सकता है।

सी ++ के लिए, यह लगभग सी के रूप में सरल नहीं है। इसके विपरीत: व्याकरण, अंधेरे कोनों, सीखने की वक्र, उचित आधुनिक कोड और अन्य के संदर्भ में यह लगभग किसी भी अन्य भाषा की तुलना में तर्कसंगत रूप से अधिक जटिल है। मानदंड। कोई सोचता है कि यह जटिलता भाषा को मार डालेगी, और वास्तव में कई लोग दशकों के लिए यह कह रहे हैं।जावा इस आधार पर पैदा हुआ था। लेकिन यहां हम आज हैं, भाषा के जन्म के लगभग तीस साल बाद, और यह अभी भी लाइव है और स्टैक ओवरफ्लो पर 10 सबसे लोकप्रिय टैगों में लात मार रहा है। ऐसे कई लोग हैं जो भावुक भाषा के बारे में हैं, वास्तव में उनमें से हैं।

अनुमोदित, यह स्पष्ट नहीं करता कि सी ++ आज लोकप्रिय भाषा के रूप में क्यों संपन्न हो रहा है। मुझे लगता है कि यह स्वतंत्रता सी ++ आपको कई अलग-अलग प्रोग्रामिंग प्रतिमानों का समर्थन करने में देती है। इस प्रकार सी ++ प्रोग्रामिंग को सी के रूप में कम स्तर के रूप में, समान दक्षता के साथ, और अन्य सहायक भाषाओं के रूप में उच्च स्तर के रूप में प्रोग्रामिंग का समर्थन करता है, उचित सहायक पुस्तकालयों को देखते हैं। मैं आपको this interview with Bjarne Stroustrup पढ़ने की सलाह देता हूं।

सी और सी ++ निश्चित रूप से निम्न स्तर के प्रोग्रामिंग के लिए एकमात्र विकल्प नहीं हैं। लेकिन वे एक विकल्प हैं जो प्रतिरोध करना बहुत मुश्किल है। सर्वोत्तम विकल्प, यदि मैं साहसपूर्वक सुझाव दे सकता हूं, अगर केवल उनके ठोस, लंबे इतिहास के लिए संकेत मिलता है कि वे दोनों यहां रहने के लिए हैं; और ठोस कोड के प्रदर्शन के लिए वहां मौजूद चीजें दर्शाती हैं जो आप इन भाषाओं के साथ कर सकते हैं। मौजूदा सॉफ़्टवेयर मांगों का समर्थन नेट पर बहुत से सक्रिय बोर्डों, बहुत से भर्ती कंपनियों - और सभी लाइव, लात मारने वाली भाषाओं में से सभी का वादा करता है।

+1

यदि आपको लगता है कि सी अच्छी डिजाइन का चमकदार उदाहरण है, तो आपने हाल ही में किसी भी फ़ंक्शन पॉइंटर सिंटैक्स को सिखाने की कोशिश नहीं की है। (मुझे गलत मत समझो, मैं सी का उपयोग करता हूं और मुझे यह पसंद है - लेकिन इसमें बहुत सारे मस्तिष्क हैं।) – Porculus

+0

@ पर्कुलस बधाई, आपको सी के सिंटैक्स में अजीबता मिली। और अब आप जानते हैं कि किसी भी भाषा में इसके वाक्य रचनात्मक ग्लिच हैं। लेकिन सी एक _simple भाषा है, फिर भी, और यह उन क्षेत्रों को कम कर देता है जिनमें सिंटैक्स अजीबता हो सकती है। – wilhelmtell

+0

इसके अलावा: हाँ, मुझे अभी भी लगता है कि सी एक ** चमकदार ** अच्छी भाषा डिजाइन का उदाहरण है। (आप जोर भूल गए हैं)। बजेर्न स्ट्राउस्ट्रप ने कहा कि दो प्रकार की भाषाएं हैं: वे लोग शिकायत करते हैं और जो कोई भी इसका उपयोग नहीं करता है। इसलिए वहाँ। – wilhelmtell

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