क्या आप किसी सॉफ्टवेयर प्रोजेक्ट के लिए आज C का उपयोग करेंगे? [बन्द है]


18

यदि हाँ, तो आप इसका उपयोग कहाँ और क्यों करेंगे?

यदि नहीं, तो कृपया स्पष्टीकरण दें कि C आपको क्यों स्वीकार्य नहीं है।


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

हाँ- पाठ्यक्रमों के लिए घोड़े।
मार्टिर्न वेरबर्ग

इसका क्या मतलब है?
लुका मैटिस

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

2
नहीं, लेकिन केवल इसलिए कि आज मैं किसी भी प्रोजेक्ट पर काम नहीं कर रहा हूं जिसके लिए सी एक अच्छी भाषा का विकल्प होगा। कल फिर मुझसे पूछ लेना।
जेम्स मैकनेलिस

जवाबों:


38

C सिस्टम प्रोग्रामिंग के लिए एक बेहतरीन भाषा है

मैं सी का उपयोग करूंगा यदि मैंने कुछ हार्बर ड्राइवरों को लागू किया है। और अगर मैं अपना खुद का ऑपरेटिंग सिस्टम कर्नेल या अपनी खुद की वर्चुअल मशीन लागू करता हूं तो मैं C का उपयोग करूंगा।

यदि आप Windows API, Linux, Mac OS X, Solaris इत्यादि के लिए हार्डवेयर या निम्न स्तर के OS APIs से निपटते हैं, तो निम्न-स्तरीय चीजों को करना एक बहुत अच्छी भाषा है ... एम्बेडेड सिस्टम में आमतौर पर C के लिए अच्छा समर्थन होता है। एक संकलक + विकास किट के साथ।


4
क्या आप इंगित कर सकते हैं कि "मैक ओएस कहां है"? मैंने सोचा था कि मैक ओएस डार्विन है: en.wikipedia.org/wiki/Darwin_%28operating_system%29
LennyProgrammers

1
@ स्टेफेन फुरलानी: LOL - हाँ, यह एक तरह की समझ है। :-) ज़िनिक्स, डायनेक्स और ए / यूएक्स जैसे कई मृत यूनीक्स हैं, और वर्तमान संस्करण हम में से अधिकांश एचपी-यूएक्स की तरह नहीं देखते हैं। परिवार का पेड़ उतना ही जटिल और पेचीदा है जितना कि यूरोपीय शाही परिवार।
बॉब मर्फी

4
C सिस्टम प्रोग्रामिंग के लिए एक भयानक भाषा है। हम जानते हैं कि मॉरिस वर्म के बाद से 20 वर्षों से भी अधिक समय से, और कोई भी किसी भी परियोजना के लिए किसी भी सुरक्षा आवश्यकताओं के साथ किसी भी परियोजना का उपयोग कर रहा है, विशेष रूप से ऑपरेटिंग सिस्टम या नेटवर्क-फेसिंग अनुप्रयोगों के लिए, आपराधिक लापरवाही के आरोपों का सामना करना चाहिए।
मेसन व्हीलर

2
@ मेसन व्हीलर: हमें इसके बजाय क्या उपयोग करना चाहिए?
स्टीव एस

1
@ मेसन व्हीलर: हम्म ... मैंने पास्कल को अतीत में खारिज कर दिया है, लेकिन शायद यह एक और (करीब) रूप लेने का समय है। क्या आपके पास अन्य सुझाव हैं?
स्टीव एस

17

हां बिल्कुल। मैं सिस्टम या निम्न स्तर के संचार भागों के प्रदर्शन के महत्वपूर्ण टुकड़े लिखने के लिए C का उपयोग करूंगा। उदाहरण के लिए, मैं एरलांग परियोजना में NIF लिखने के लिए C का उपयोग सिर्फ इसलिए करूंगा क्योंकि यह इस तरह की नौकरी के लिए सही उपकरण (tm) है। या मैं पर्ल प्रोजेक्ट में समान भागों (XS) को लिखने के लिए C का उपयोग करूंगा।


16

मैं लगभग हर दिन पेशेवर रूप से सी का उपयोग करता हूं। वास्तव में, C उच्चतम स्तर की भाषा है जिसमें मैं नियमित रूप से कार्यक्रम करता हूं।

जहां मैं C का उपयोग करता हूं: मैं निम्न-स्तरीय लाइब्रेरी कोड लिखता हूं जिसमें यथासंभव कुशल होने की आवश्यकता होती है। मेरा गोंद कोड सी में लिखा गया है, आंतरिक कम्प्यूटेशनल छोरों को विधानसभा में लिखा गया है।

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

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


6
लगता है जैसे तुम एक बहुत ही मजेदार काम है!
पॉल नाथन

यह मेरा ड्रीम जॉब है।
rsmahanti

5

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

मैंने एक C ++ प्रोग्रामर को 1K स्टैक पर 10K ऑब्जेक्ट बनाने की कोशिश करते देखा, अच्छा विचार नहीं।


2
वास्तव में virtualफ़ंक्शन ठीक हैं क्योंकि वे "आप जो उपयोग नहीं करते हैं उसके लिए भुगतान नहीं करते हैं" सिद्धांत का पालन करते हैं, लेकिन स्मृति विवश वातावरण में, आप अपवादों और आरटीटीआई को अक्षम करना चाहते हैं।
मैथ्यू एम।

मुझे ऐसा लगता है कि मैं हमेशा सी ++ में केवल सिंगलटन ऑब्जेक्ट्स बना रहा हूं ताकि परिधीय इंटरफेस प्रदान किया जा सके। मुझे लगता है कि लोग एम्बेडेड सिस्टम में C ++ ओवर सी चुनते हैं क्योंकि उन्हें लगता है कि C ++ "बेहतर" है।
एरिक

5

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

क्या मैं इसका उपयोग करके स्प्रेडशीट प्रोग्राम लिखने की कोशिश करूंगा? बिल्कुल नहीं। प्रत्येक उपकरण में इसके अनुप्रयोग होते हैं, और मुझे खुशी है कि मेरे पास कई उपकरण हैं।

मुझे C से प्यार है, लेकिन मैं हथौड़े से शिकंजा कसने की कोशिश नहीं करता।

यदि सी एक नई परियोजना के लिए एक समझदार विकल्प है, तो निश्चित रूप से। यदि नहीं, तो मैं कुछ और उपयोग करूँगा।


4

मैं कुछ परियोजनाओं के लिए करूंगा। निश्चित रूप से अगर मुझे एक एम्बेडेड सिस्टम लागू करना होगा, तो एक स्वायत्त विमान के नियंत्रक के लिए कहें। असेंबली के साथ कुछ हिस्सों पर निचले स्तर पर भी जा सकते हैं।

यदि यह परियोजना में फिट बैठता है, तो मुझे इससे कोई समस्या नहीं है।

यदि आप एक वेब-एप्लिकेशन विकसित करना चाहते हैं, तो हम्म, शायद नहीं (या मुझे बहुत मजबूत और तथ्य-समर्थित औचित्य देखने की आवश्यकता होगी)।

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


आप वेब-अप्लीकेशन के लिए इसका उपयोग करने का एक कारण चाहते हैं? मेमकाटेड सी में लिखा गया है, और यह कई वेब अनुप्रयोगों का एक मुख्य हिस्सा है। इसके अलावा, मेरे एक सहकर्मी ने सी में एक सोशल नेटवर्किंग साइट से संबंधित कोड का एक टुकड़ा लिखा - एक बार यह एल्गोरिथम जटिल है, जिसमें डेटा आर्थिक रूप से उपलब्ध रैम के आकार की सीमा निर्धारित करता है, और उन प्रश्नों को हैंडल करता है जो प्रति पृष्ठ औसत 23 बार चलते हैं। , हमने 4-दिन के सी एप्लिकेशन के साथ, प्रोग्रामर के वेतन के 4 महीने के सर्वर की बचत की।
५:१० बजे qdot

@qdot: यह एक वैध कारण है। वहाँ भी एक कारण है कि सी और सी ++ वेब देव के लिए अच्छे फ्रेमवर्क क्यों हैं। यदि सामान्य वेब-ऐप या वेबसाइट को विकसित करने की आवश्यकता है तो बस मेरी पहली पसंद नहीं होगी। मेम्केड जैसे ढांचे के मामले में, यह स्पष्ट रूप से सही अर्थ देता है। इसी तरह C में सर्वर होने से समझ बन सकती है। इसलिए शायद नहीं। Memcached (और एक वेब-ऐप के एक कम्प्यूटेशनल गहन भाग का आपका विशिष्ट सी कार्यान्वयन) वेब देव के लिए सी के पूरी तरह से मान्य उपयोग हैं। लेकिन आपको ऐसा करने के लिए एक अच्छे C प्रोग्रामर की आवश्यकता है। बस कोई है जो इसे रास्ते में नहीं उठाएगा, या समस्याओं की उम्मीद नहीं करेगा।
प्रातः

और अगर अन्य लोगों के पास इन जैसे अन्य वैध कारण हैं, तो कृपया उन्हें यहां पोस्ट करें! यह पाठकों के लिए उपयोगी है।
हेयर स्टाइल

यदि आप C का उपयोग करते हैं, तो आप पहली बार में शानदार प्रदर्शन, अच्छे सीखने के अनुभव, और अस्पष्टीकृत समस्याओं के टन की उम्मीद करते हैं। मैंने सिर्फ C का उपयोग करने के लिए लोगों को प्रोत्साहित करने की कोशिश की, क्योंकि यह जल्दी से महत्वपूर्ण हो जाता है जब आप "एक-में-एक मिलियन" PHP / Ruby / पायथन डेवलपर होने से आगे बढ़ते हैं और बड़ी गणना समस्याओं के खिलाफ अपने सिर को खरोंचना शुरू करते हैं।
at:०५ को .:५५

@qdot: वास्तव में। बहुत सारे लोगों को शर्म नहीं आती कि वे वास्तव में C को वास्तव में जानते हैं।
१०

4

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

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

इसके अलावा, यह सीखते हुए कि सी में अपने आप को बिना गोली के कैसे काम करना है, किसी की अन्य भाषाओं और वातावरण में कुशलतापूर्वक लिखने की क्षमता में महत्वपूर्ण योगदान दे सकता है। कम से कम यह मेरा अनुभव है।

हालांकि मैं निश्चित रूप से हर चीज के लिए, या यहां तक ​​कि अधिकांश चीजों के लिए इसका उपयोग नहीं करता हूं, लेकिन इसका स्थान बहुत ही सार्वभौमिक है: हां, मैंने इसे अतीत में इस्तेमाल किया है और भविष्य में इसका उपयोग करूंगा (हालांकि मैं नहीं करता इस समय पता है)।


4

हां, मैं इसे हर समय करता हूं।

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

जब आप C ++ में C में सब कुछ कर सकते हैं, तो अक्सर C ++ के तंत्र इसे कोड लिखने के लिए तेज और आसान बनाते हैं। मुझे OOP पसंद है और जिस तरह से C ++ क्लायंट्स कार्यक्षमता को बढ़ाते हैं, और मैं RAII से प्यार करता हूं। स्वचालित विध्वंसक आह्वान का सावधानीपूर्वक उपयोग जब कोई वस्तु दायरे से बाहर जाती है तो अधिकांश मेमोरी और संसाधन लीक को समाप्त कर देती है जो C प्रोग्रामिंग का बैन है। एसटीएल मूल रूप से अत्यधिक अनुकूलित एल्गोरिदम और डेटा संरचनाओं का एक विशाल पुस्तकालय है; यदि आप उन्हें C से उपयोग करना चाहते हैं, तो आपको उन्हें स्वयं लिखना होगा या उन्हें कहीं खरीदना होगा।

दुर्भाग्य से, जिन कारणों से मुझे समझ नहीं आ रहा है, किसी भी C ++ को चलाने के लिए Linux पर रनटाइम सिस्टम को एक विशेष साझा ऑब्जेक्ट लाइब्रेरी (Windows पर DLL के बराबर, dylib पर) की आवश्यकता होती है और यह तब नहीं मिलता है जब आप C प्रोग्राम चलाते हैं। इसलिए मैं अपने पसंदीदा मैक और विंडोज ट्रिक्स में से एक नहीं कर सकता, जो कि सी-आधारित एपीआई के साथ सी ++ आधारित साझा वस्तु को लिखना है, और सी प्रोग्राम से इसे कॉल करना है।

तो यहाँ मेरी निर्णय लेने की प्रक्रिया है:

  1. क्या मैं डिवाइस ड्राइवर जैसी विवश स्थिति में काम कर रहा हूं? सी का उपयोग करें।
  2. क्या मैं लिनक्स लाइब्रेरी लिख रहा हूँ, किसी और को इस्तेमाल करना पड़ेगा? सी का उपयोग करें।
  3. क्या मैं कोड के अंदर काम कर रहा हूं जो पहले से ही C में लिखा गया है? सी का उपयोग करें।
  4. क्या मैं एक मैक या विंडोज लाइब्रेरी, या एक लिनक्स लाइब्रेरी लिख रहा हूँ जिसका मैं केवल उपयोग करूँगा? C ++ में इंटर्नल्स लिखें, लेकिन नाजुक बाइनरी इंटरफेस समस्या से बचने के लिए केवल एक सी इंटरफेस का खुलासा करें।
  5. C ++ का उपयोग करें।

एक अच्छी बात यह है कि क्योंकि C ++ C को संकलित कर सकता है, यदि आपको किसी विशेष स्थिति के लिए उत्पन्न कोड पर वास्तव में ठीक-ठीक नियंत्रण की आवश्यकता है, तो आप इसके लिए C लिख सकते हैं, और बाकी के लिए C ++, और इसे C ++ कंपाइलर के साथ संकलित कर सकते हैं। ।


आप C ++ के साथ मॉलॉक मुद्दे के कारण "C कंपाइलर के साथ यह सब संकलित नहीं कर सकते हैं" - आपको C ++ में डालना होगा, लेकिन C में नहीं, यदि आप C कोड में डाले गए हैं तो बिल्कुल ठीक है, जो पूरी तरह से कानूनी लेकिन कष्टप्रद है ।
वैकल्पिक

1
@mathepic: हाँ, C ++ कई बातों के बारे में C की तुलना में स्पष्ट रूप से स्पष्ट है, जिसमें टाइप किए गए पॉइंटर्स को शून्य बिंदु निर्दिष्ट करना शामिल है। हालाँकि, मैं सी + + के साथ सी फाइलों को संकलित करके, कुछ विरासत परियोजनाओं में बग को ठीक कर रहा हूं। मैं सी-कंपाइलर को कोड में पूरी तरह से कानूनी होने के कारण सूक्ष्म कीड़े को उजागर करने के लिए भुगतान करने के लिए एक छोटी सी कीमत होने के लिए टाइप-कास्टिंग कर रहा हूं, सी
बॉब मर्फी

3

हां, लेकिन परियोजना पर निर्भर करता है। सी कुछ निम्न-स्तरीय परियोजनाओं या सबसे बड़े समाधान के हिस्से के लिए बहुत अच्छा है।

उदाहरण के लिए। Bussines तर्क के लिए ठीक है, लेकिन उपयोगकर्ता इंटरफ़ेस के लिए नहीं।


2

अगर यह दोनों होना है

  • तेज़ और
  • पोर्टेबल

तो मैं सी का उपयोग करता हूं। शायद सी ++।


फास्ट और पोर्टेबल, जो जावा या सी # भी हो सकता है।
जोनास

11
@ जोनास: नहीं। पोर्टेबल का मतलब सिर्फ 'विंडोज़ या लाइनक्स' नहीं है; ;-)
स्टीवन ए। लोव

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

2
@ जोनास: इसे पढ़ें; ध्यान दें, और फिर से, "पोर्टेबल" का मतलब केवल खिड़कियां / लिनक्स नहीं है। सवाल पूछता है कि आप सी का उपयोग कब करेंगे; इसका उत्तर है: जब हर जगह तेजी से दौड़ना होता है । मैं जावा और सी # से प्यार करता हूं, लेकिन वे स्लेजहैमर हैं, और पुराने / एम्बेडेड सिस्टम में रनटाइम नहीं हैं। उनमें से कई के पास एक रनटाइम रखने के लिए जगह भी नहीं है!
स्टीवन ए। लोव

2
@ जोनास: मैं आपके जुनून की सराहना करता हूं, लेकिन "नए प्लेटफॉर्म" विषय नहीं हैं। मुझे आपको एक और विशिष्ट उदाहरण देना है, यह देखने के लिए कि क्या मदद करता है: युद्ध के मैदान पर टैंकों के लिए आग पर नियंत्रण का समर्थन प्रदान करने वाले माइक्रोप्रोसेसर में सी कंपाइलर हैं। वे नहीं, और न ही वे कभी नहीं होगा, एक JVM है।
स्टीवन ए। लोव

2

हाँ, वास्तव में मेरे पास हाल ही में है!

मुझे सी में प्रोग्रामिंग पसंद है। मैं अपनी अधिकांश प्रोग्रामिंग अजगर में करता हूं, लेकिन ऐसे समय होते हैं जब मुझे तेज कोड की आवश्यकता होती है और मैं वास्तव में लालित्य का आनंद लेता हूं जो भाषा की सादगी से आता है।

अब मैं जिस प्रोजेक्ट पर काम कर रहा हूं वह एक डेटाबेस है, जैसा कि आप कल्पना कर सकते हैं, प्रदर्शन महत्वपूर्ण है। फिलहाल मैं सी और कुछ अजगर का उपयोग कर रहा हूं, लेकिन यह अंततः मुख्य रूप से होगा, अगर पूरी तरह से सी नहीं।


2

हाँ!

C एक निम्न स्तर की भाषा है और ऐसी स्थिति है जो C लगभग एकमात्र विकल्प है जैसे कि मैं माइक्रो-कंट्रोलर प्रोग्राम करने के लिए C का उपयोग करता हूं, या समानांतर, सीरियल या मॉडेम जैसे क्लासिक पोर्ट से उपकरणों के साथ बातचीत करने के लिए कुछ कोड को एक साथ रखा है!


2

हाँ। मैंने अपना अधिकांश कैरियर प्रोग्रामिंग C ++ में बिताया, लेकिन अब मैं अपना अधिकांश कोड रूबी में लिखता हूं और अगर मुझे प्रदर्शन की आवश्यकता है या निम्न स्तर के सामान तक पहुंच है, तो मैं एक C एक्सटेंशन लिखता हूं। यह भविष्य का आदमी है!


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

1

यदि मैं एक ऑपरेटिंग सिस्टम लिख रहा था तो मैं C का उपयोग करूंगा। चूँकि अगले बीस वर्षों में ऐसा नहीं होने वाला है, जब तक कि मैं लोट्टो से नहीं टकराता और कुछ और नहीं करता, लेकिन अपना खुद का कमाल का लिनक्स डिस्ट्रो बनाता हूँ, मैं शायद सिर्फ C #, Java, Python, इत्यादि से चिपका रहूँगा, आदि। बहुत लंबे समय में सी का उपयोग नहीं किया गया था, लेकिन मुझे हमेशा इसका उपयोग करने में मज़ा आया; मुझे लगता है कि, इन दिनों मेरा सिर ओओ के चारों ओर लिपटा हुआ है अगर मुझे वापस जाना है तो मुझे फिर से रोल करने में थोड़ा समय लगेगा।


0

C ++ प्लेटफार्मों भर में पोर्टेबल है और माइक्रोकंट्रोलर जैसे एम्बेडेड डिवाइस हैं। (C ++ को C, इसलिए माइक्रोकंट्रोलर के लिए संकलित किया जा सकता है।)

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

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


मैं सबसे सार भाषा चुनता हूं, क्योंकि कार्यक्रम की गति भिन्न नहीं होती है, लेकिन विकास का समय और बग-दर। C और C ++ बहुत भिन्न हैं, लेकिन हास्केल के दृष्टिकोण से नहीं।

मैं अन्य भाषाओं को पसंद नहीं करता, भले ही मुझे एक या दो हाथ भरे हुए मालूम हों। ... कुछ मामलों को छोड़कर, अच्छी तरह से, मार


0

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

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