यदि हाँ, तो आप इसका उपयोग कहाँ और क्यों करेंगे?
यदि नहीं, तो कृपया स्पष्टीकरण दें कि C आपको क्यों स्वीकार्य नहीं है।
यदि हाँ, तो आप इसका उपयोग कहाँ और क्यों करेंगे?
यदि नहीं, तो कृपया स्पष्टीकरण दें कि C आपको क्यों स्वीकार्य नहीं है।
जवाबों:
मैं सी का उपयोग करूंगा यदि मैंने कुछ हार्बर ड्राइवरों को लागू किया है। और अगर मैं अपना खुद का ऑपरेटिंग सिस्टम कर्नेल या अपनी खुद की वर्चुअल मशीन लागू करता हूं तो मैं C का उपयोग करूंगा।
यदि आप Windows API, Linux, Mac OS X, Solaris इत्यादि के लिए हार्डवेयर या निम्न स्तर के OS APIs से निपटते हैं, तो निम्न-स्तरीय चीजों को करना एक बहुत अच्छी भाषा है ... एम्बेडेड सिस्टम में आमतौर पर C के लिए अच्छा समर्थन होता है। एक संकलक + विकास किट के साथ।
हां बिल्कुल। मैं सिस्टम या निम्न स्तर के संचार भागों के प्रदर्शन के महत्वपूर्ण टुकड़े लिखने के लिए C का उपयोग करूंगा। उदाहरण के लिए, मैं एरलांग परियोजना में NIF लिखने के लिए C का उपयोग सिर्फ इसलिए करूंगा क्योंकि यह इस तरह की नौकरी के लिए सही उपकरण (tm) है। या मैं पर्ल प्रोजेक्ट में समान भागों (XS) को लिखने के लिए C का उपयोग करूंगा।
मैं लगभग हर दिन पेशेवर रूप से सी का उपयोग करता हूं। वास्तव में, C उच्चतम स्तर की भाषा है जिसमें मैं नियमित रूप से कार्यक्रम करता हूं।
जहां मैं C का उपयोग करता हूं: मैं निम्न-स्तरीय लाइब्रेरी कोड लिखता हूं जिसमें यथासंभव कुशल होने की आवश्यकता होती है। मेरा गोंद कोड सी में लिखा गया है, आंतरिक कम्प्यूटेशनल छोरों को विधानसभा में लिखा गया है।
मैं सी का उपयोग क्यों करता हूं: यह असेंबली में जटिल तर्क संरचनाओं और त्रुटि स्थितियों को संभालने के लिए बहुत सरल है, और वास्तविक गणना शुरू करने से पहले उस तरह की स्थिति की जांच के लिए प्रदर्शन ओवरहेड अक्सर नगण्य है। क्योंकि सी एक सरल, अच्छी तरह से निर्दिष्ट भाषा है, मेरे पास संकलक टीम के साथ काम करने के लिए एक आसान समय है जब मैं अस्वीकार्य प्रदर्शन खतरों के साथ संकलित कोड को देखता हूं, तो कोड पीढ़ी को बेहतर बनाने के लिए काम करता हूं।
पोर्टेबिलिटी सी का एक और बड़ा गुण है। मेरा गोंद कोड मेरे द्वारा काम किए जाने वाले पुस्तकालयों के कई हार्डवेयर-विशिष्ट कार्यान्वयन में साझा किया गया है, जो वास्तव में नए प्लेटफार्मों के लिए समर्थन लाने को सरल करता है। अधिकांश प्लेटफार्मों में महीने की भाषा के स्वाद के लिए एक वर्चुअल मशीन या दुभाषिया नहीं होता है। कुछ प्लेटफार्मों में एक अच्छा C ++ कंपाइलर नहीं है। ऐसे बहुत कम प्लेटफ़ॉर्म हैं जिनमें एक प्रयोग करने योग्य C कंपाइलर की कमी है (और, क्योंकि मेरे कंपाइलर टीम के साथ मेरे अच्छे संबंध हैं, मेरे पास आमतौर पर एक कठिन समय नहीं है, जिसकी मुझे आवश्यकता है)।
हां, मैं एक गंभीर संसाधन-विवश एम्बेडेड सिस्टम में C का उपयोग करूंगा। मैं इसके बजाय C ++ का उपयोग कर सकता हूं क्योंकि यह सॉफ्टवेयर घटकों के बीच मजबूत इंटरफेस को बढ़ावा देना आसान बनाता है, लेकिन केवल अगर परियोजना पर काम करने वाले सभी इंजीनियर समझते हैं कि C ++ कोड आकार ब्लोट के लिए दुरुपयोग करना आसान है (वर्चुअल फ़ंक्शंस और टेम्पलेट से बचने के लिए चीजों के उदाहरण हैं। )।
मैंने एक C ++ प्रोग्रामर को 1K स्टैक पर 10K ऑब्जेक्ट बनाने की कोशिश करते देखा, अच्छा विचार नहीं।
virtual
फ़ंक्शन ठीक हैं क्योंकि वे "आप जो उपयोग नहीं करते हैं उसके लिए भुगतान नहीं करते हैं" सिद्धांत का पालन करते हैं, लेकिन स्मृति विवश वातावरण में, आप अपवादों और आरटीटीआई को अक्षम करना चाहते हैं।
मैं ज्यादातर एक्सपी हाइपरवाइजर के साथ काम करता हूं, इसमें जो लाइब्रेरियाँ हैं वे हैं और लिनक्स कर्नेल। मौके पर, मुझे एक डिवाइस ड्राइवर लिखना होगा (या फिर से लिखना होगा ताकि एनएक्सएक्स वर्चुअल मशीन एक डिवाइस को एचआरएनजी जैसे साझा कर सकें)। सी मेरी प्राथमिक भाषा है और मैं इससे काफी खुश हूं।
क्या मैं इसका उपयोग करके स्प्रेडशीट प्रोग्राम लिखने की कोशिश करूंगा? बिल्कुल नहीं। प्रत्येक उपकरण में इसके अनुप्रयोग होते हैं, और मुझे खुशी है कि मेरे पास कई उपकरण हैं।
मुझे C से प्यार है, लेकिन मैं हथौड़े से शिकंजा कसने की कोशिश नहीं करता।
यदि सी एक नई परियोजना के लिए एक समझदार विकल्प है, तो निश्चित रूप से। यदि नहीं, तो मैं कुछ और उपयोग करूँगा।
मैं कुछ परियोजनाओं के लिए करूंगा। निश्चित रूप से अगर मुझे एक एम्बेडेड सिस्टम लागू करना होगा, तो एक स्वायत्त विमान के नियंत्रक के लिए कहें। असेंबली के साथ कुछ हिस्सों पर निचले स्तर पर भी जा सकते हैं।
यदि यह परियोजना में फिट बैठता है, तो मुझे इससे कोई समस्या नहीं है।
यदि आप एक वेब-एप्लिकेशन विकसित करना चाहते हैं, तो हम्म, शायद नहीं (या मुझे बहुत मजबूत और तथ्य-समर्थित औचित्य देखने की आवश्यकता होगी)।
मैं अन्य भाषाओं से मुख्य रूप से विकसित अन्य परियोजनाओं से भी इसका उपयोग करूंगा जब एक अड़चन को स्पष्ट रूप से पहचान लिया गया है और देशी कोड का उपयोग करके एक अनुकूलन लागू किया जा सकता है। उदाहरण के लिए, एक जावा समाधान जिसे कुछ उन्नत रेंडरिंग के लिए गहन गणना करने की आवश्यकता होती है (जैसे, एक रेंडरिंग इंजन या कुछ और)। यदि आप एक समर्थित मंच नहीं हैं, तो आप जावा कार्यान्वयन के लिए डिफ़ॉल्ट हो सकते हैं, लेकिन कुछ समर्थित प्लेटफार्मों के लिए सी से एक मूल रूप से संकलित कार्यान्वयन प्रदान करते हैं, और एक अच्छा प्रदर्शन को बढ़ावा मिलता है।
हर एक भाषा में उपयोग की एक अच्छी जगह है। मैं अक्सर खुद को उच्च-स्तरीय भाषाओं में चीजों को लागू करने के लिए पाता हूं, और फिर धीरे-धीरे उन्हें सी-लैंड में ला रहा हूं, अगर मुझे उच्च-प्रदर्शन या यहां तक कि सिर्फ अधिक पोर्टेबल होने की आवश्यकता है। अस्तित्व में लगभग सब कुछ के लिए सी कंपाइलर हैं, और यदि आप एक एपीआई को लिखते हैं जो सार्वभौमिक रूप से उपलब्ध है (जैसे कि पोसिक्स), तो यह बहुत उपयोगी हो सकता है।
मैं अक्सर उन लोगों को बताता हूं जो आज प्रोग्रामिंग सीखने में रुचि रखते हैं, यह सुनिश्चित करना है कि किसी बिंदु पर, वे सी सीखते हैं और इसके साथ सहज हो जाते हैं। आप अपने आप को उन परिस्थितियों में पा सकते हैं जहां आपको इसकी आवश्यकता है। एक से अधिक मौकों पर, मुझे एक छोटे, स्टेटिकली-लिंक्ड "फास्ट रिबूट" प्रोग्राम को संकलित करना पड़ता है, और इसे एक सर्वर पर रैम डिस्क पर डालने के लिए एसपीपी का उपयोग करना होता है जहां डिस्क सबसिस्टम पूरी तरह से चला गया। (सस्ता, सस्ता सर्वर, कोई ऑनलाइन अतिरेक, और केवल एक छोटे कार्यक्रम को लोड करने की क्षमता। सी जाने का रास्ता है।)
इसके अलावा, यह सीखते हुए कि सी में अपने आप को बिना गोली के कैसे काम करना है, किसी की अन्य भाषाओं और वातावरण में कुशलतापूर्वक लिखने की क्षमता में महत्वपूर्ण योगदान दे सकता है। कम से कम यह मेरा अनुभव है।
हालांकि मैं निश्चित रूप से हर चीज के लिए, या यहां तक कि अधिकांश चीजों के लिए इसका उपयोग नहीं करता हूं, लेकिन इसका स्थान बहुत ही सार्वभौमिक है: हां, मैंने इसे अतीत में इस्तेमाल किया है और भविष्य में इसका उपयोग करूंगा (हालांकि मैं नहीं करता इस समय पता है)।
हां, मैं इसे हर समय करता हूं।
यदि आप कोई लाइब्रेरी नहीं कहते हैं, तो C से उत्पन्न कोड को OS समर्थन की आवश्यकता नहीं है। यह आपको उत्पन्न मशीन की भाषा पर भी ठीक नियंत्रण देता है। तो यह ड्राइवर या अन्य कोड लिखने के लिए बहुत अच्छा है जो कर्नेल स्थानों में रहता है, और अन्य विवश परिस्थितियां जैसे कई प्रकार के एम्बेडेड सिस्टम काम करते हैं। यह ओपन-सोर्स प्रोजेक्ट्स के लिए प्राथमिक भाषा भी है, जो मैं एक्स विंडोज, जीटीके + और क्लटर जैसे काम करता हूं।
जब आप C ++ में C में सब कुछ कर सकते हैं, तो अक्सर C ++ के तंत्र इसे कोड लिखने के लिए तेज और आसान बनाते हैं। मुझे OOP पसंद है और जिस तरह से C ++ क्लायंट्स कार्यक्षमता को बढ़ाते हैं, और मैं RAII से प्यार करता हूं। स्वचालित विध्वंसक आह्वान का सावधानीपूर्वक उपयोग जब कोई वस्तु दायरे से बाहर जाती है तो अधिकांश मेमोरी और संसाधन लीक को समाप्त कर देती है जो C प्रोग्रामिंग का बैन है। एसटीएल मूल रूप से अत्यधिक अनुकूलित एल्गोरिदम और डेटा संरचनाओं का एक विशाल पुस्तकालय है; यदि आप उन्हें C से उपयोग करना चाहते हैं, तो आपको उन्हें स्वयं लिखना होगा या उन्हें कहीं खरीदना होगा।
दुर्भाग्य से, जिन कारणों से मुझे समझ नहीं आ रहा है, किसी भी C ++ को चलाने के लिए Linux पर रनटाइम सिस्टम को एक विशेष साझा ऑब्जेक्ट लाइब्रेरी (Windows पर DLL के बराबर, dylib पर) की आवश्यकता होती है और यह तब नहीं मिलता है जब आप C प्रोग्राम चलाते हैं। इसलिए मैं अपने पसंदीदा मैक और विंडोज ट्रिक्स में से एक नहीं कर सकता, जो कि सी-आधारित एपीआई के साथ सी ++ आधारित साझा वस्तु को लिखना है, और सी प्रोग्राम से इसे कॉल करना है।
तो यहाँ मेरी निर्णय लेने की प्रक्रिया है:
एक अच्छी बात यह है कि क्योंकि C ++ C को संकलित कर सकता है, यदि आपको किसी विशेष स्थिति के लिए उत्पन्न कोड पर वास्तव में ठीक-ठीक नियंत्रण की आवश्यकता है, तो आप इसके लिए C लिख सकते हैं, और बाकी के लिए C ++, और इसे C ++ कंपाइलर के साथ संकलित कर सकते हैं। ।
अगर यह दोनों होना है
तो मैं सी का उपयोग करता हूं। शायद सी ++।
हाँ, वास्तव में मेरे पास हाल ही में है!
मुझे सी में प्रोग्रामिंग पसंद है। मैं अपनी अधिकांश प्रोग्रामिंग अजगर में करता हूं, लेकिन ऐसे समय होते हैं जब मुझे तेज कोड की आवश्यकता होती है और मैं वास्तव में लालित्य का आनंद लेता हूं जो भाषा की सादगी से आता है।
अब मैं जिस प्रोजेक्ट पर काम कर रहा हूं वह एक डेटाबेस है, जैसा कि आप कल्पना कर सकते हैं, प्रदर्शन महत्वपूर्ण है। फिलहाल मैं सी और कुछ अजगर का उपयोग कर रहा हूं, लेकिन यह अंततः मुख्य रूप से होगा, अगर पूरी तरह से सी नहीं।
हाँ। मैंने अपना अधिकांश कैरियर प्रोग्रामिंग C ++ में बिताया, लेकिन अब मैं अपना अधिकांश कोड रूबी में लिखता हूं और अगर मुझे प्रदर्शन की आवश्यकता है या निम्न स्तर के सामान तक पहुंच है, तो मैं एक C एक्सटेंशन लिखता हूं। यह भविष्य का आदमी है!
यदि मैं एक ऑपरेटिंग सिस्टम लिख रहा था तो मैं C का उपयोग करूंगा। चूँकि अगले बीस वर्षों में ऐसा नहीं होने वाला है, जब तक कि मैं लोट्टो से नहीं टकराता और कुछ और नहीं करता, लेकिन अपना खुद का कमाल का लिनक्स डिस्ट्रो बनाता हूँ, मैं शायद सिर्फ C #, Java, Python, इत्यादि से चिपका रहूँगा, आदि। बहुत लंबे समय में सी का उपयोग नहीं किया गया था, लेकिन मुझे हमेशा इसका उपयोग करने में मज़ा आया; मुझे लगता है कि, इन दिनों मेरा सिर ओओ के चारों ओर लिपटा हुआ है अगर मुझे वापस जाना है तो मुझे फिर से रोल करने में थोड़ा समय लगेगा।
C ++ प्लेटफार्मों भर में पोर्टेबल है और माइक्रोकंट्रोलर जैसे एम्बेडेड डिवाइस हैं। (C ++ को C, इसलिए माइक्रोकंट्रोलर के लिए संकलित किया जा सकता है।)
C अन्य भाषाओं के लिए भी पोर्टेबल (विदेशी कार्यों के रूप में) है। इसलिए, यदि मैं निम्न-स्तरीय पुस्तकालयों का कार्यक्रम करता हूं, तो मुझे C ++ की तुलना में अधिक संगतता चाहिए।
हास्केल प्लेटफार्मों भर में पोर्टेबल है (एआरएम जल्द ही आ रहा है) लेकिन माइक्रोकंट्रोलर जैसे एम्बेडेड डिवाइस नहीं हैं। इसकी गति C और C ++ के बराबर है; लेकिन क्योंकि यह क्रियाशील है, यह रनटाइम-स्टैक के बजाय कचरा-संग्राहक का उपयोग करता है, इसलिए यह अलग-अलग समय (C- कचरा एकत्र करने) और अलग-अलग स्थितियों (उप-रूटीन कॉल के बजाय जारी) में C की तुलना में तेज़ और धीमा हो सकता है।
मैं सबसे सार भाषा चुनता हूं, क्योंकि कार्यक्रम की गति भिन्न नहीं होती है, लेकिन विकास का समय और बग-दर। C और C ++ बहुत भिन्न हैं, लेकिन हास्केल के दृष्टिकोण से नहीं।
मैं अन्य भाषाओं को पसंद नहीं करता, भले ही मुझे एक या दो हाथ भरे हुए मालूम हों। ... कुछ मामलों को छोड़कर, अच्छी तरह से, मार ।
एंबेडेड सिस्टम में अक्सर कुछ किलोबाइट से अधिक रैम और शायद कुछ दर्जन किलोबाइट फ्लैश होते हैं, जिसमें कुछ मेगाहर्ट्ज का प्रोसेसर क्लॉक रेट होता है। सी एकमात्र विकल्प है जो इस तरह के नंगे धातु के वातावरण में किसी भी तरह का अर्थ रखता है।