2011 में सी प्रोग्रामिंग [बंद]


19

कई चंद्रमा पहले मैंने एक जीवित के लिए सी कोड में कटौती की, मुख्य रूप से एक पीओपी 3 सर्वर को बनाए रखते हुए जो ओएस (लिनक्स, * बीएसडी, एचपीयूएक्स, वीएमएस ...) की एक विस्तृत श्रृंखला का समर्थन करता था।

मैं अपने सी कौशल को जंग को चमकाने की योजना बना रहा हूं और सी में एक सरल फोर्थ कोडिंग करके भाषा कार्यान्वयन के बारे में थोड़ा सीखता हूं।

लेकिन मैं सोच रहा हूँ कि कैसे (या चाहे?) 2000 के बाद से सी दुनिया में चीजें बदल गई हैं। जब मुझे लगता है कि सी, मुझे लगता है ...

  1. comp.lang.c
  2. जहाँ भी संभव हो ANSI सी (लेकिन C89 C99 के रूप में व्यापक रूप से समर्थित नहीं है)
  3. gcc -Wall -ansi -pedantic स्थैतिक विश्लेषण उपकरण के बदले में
  4. Emacs
  5. ctags
  6. Autoconf + बनाते हैं (और VMS, HP-UX आदि अच्छाई के लिए बिंदु 2 देखें)

क्या पिछले ग्यारह वर्षों से C में जो कोई भी लिख रहा है वह मुझे बताए कि क्या (अगर कुछ भी ;-)) पिछले कुछ वर्षों में बदल गया है?

(अन्य समाचार में, पवित्र बकवास, मैं एक दशक से अधिक समय से ऐसा कर रहा हूं)।


मैंने comp.lang.c पर भी पूछा है: group.google.com/group/comp.lang.c/browse_thread/thread/…
डंकन बायने

3
ठीक है, वहाँ emacs के बजाय vi है, लेकिन मैं वहाँ नहीं जाऊँगा। मुझे आश्चर्य होगा अगर कोई अभी भी comp.lang.c को पोस्ट करता है, और यहां तक ​​कि ओ सीज़ेड सी प्रतियोगिता भी स्थिर है ( www0.us.ioccc.org/main.html )। दुख की बात है - अगली नई प्रतियोगिता अक्षरों के मोटे-मोटे तारों के लिए है, जो कुछ पाठ-संदेश वाक्यांश, लोल।
जे एलस्टन

जवाबों:


10

"वाह, 10 साल पहले की सी प्रोग्रामिंग क्या थी?" जैसे समय के बारे में सोचना मेरे लिए वास्तव में कठिन है, लेकिन मैं कुछ चीजों के बारे में बात कर सकता हूं जो मुझे पता है कि मैं अलग तरह से कर रहा हूं।

  • हालांकि आप आमतौर पर किसी भी नासमझ बग पर विशेष रूप से नासमझ बग पर मदद के लिए comp.lang.c पर पीटर सेबाच जैसे किसी को भी बुला सकते हैं, लेकिन आपको संदेह है कि भाषा संबंधित हो सकती है, यदि स्टैक ओवरफ्लो पर सभी सी प्रोग्रामिंग सवालों के असाधारण जवाब नहीं मिलते हैं।

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

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

  • जीसीसी में हमेशा नए एक्सटेंशन होते हैं, उनमें से कुछ सूक्ष्म होते हैं , इसलिए अगर पोर्टेबिलिटी एक बड़ी चिंता है तो एक अच्छा विचार है। नौसिखिया / जंग खाए प्रोग्रामर के लिए, कभी-कभी 'छिपी' भाषा सुविधाओं के साथ एक्सटेंशन को भ्रमित करना आसान होता है।

  • CCAN उभरा है (CPAN के बारे में सोचें, लेकिन C के लिए) और उतारना शुरू कर रहा है। वहाँ बहुत सारे उपयोगी रत्न हैं, जिनमें TAP का एक अनुकूलन शामिल है जो एक भयानक परीक्षण उपकरण है। सी में स्ट्रिंग अभी भी चूसते हैं, लेकिन उनके साथ निपटने में मदद करने के लिए पुस्तकालयों की संख्या और गुणवत्ता पिछले दस वर्षों में निश्चित रूप से बढ़ गई है।

  • बिल्ड कॉन्फ़िगरेशन के लिए SCons और CMake लोकप्रियता में वृद्धि कर रहे हैं। Autoconf / Automake / Libtool अभी भी व्यापक रूप से उपयोग किए जाते हैं, लेकिन बहुत से लोग M4 द्वारा थोड़ा सीमित महसूस करते हैं। फिर भी, यदि यह वह प्रणाली है जिसका आप उपयोग करना चाहते हैं, तो ऑटोकॉन्फ़ मैक्रो संग्रह अभी भी जीवित है और अच्छी तरह से है।

  • आज स्पष्ट रूप से अधिक संपादक उपलब्ध हैं। मुझे अभी तक एक "आईडीई" नहीं मिला है जो सी के साथ काम करने के दौरान मेरे रास्ते में नहीं आया था, लेकिन ऐसा शायद इसलिए है क्योंकि मैं एक पुराना, crotchety, सादगी पीने वाला सादगी के लिए प्रचारक हूं।

कुल मिलाकर, हालांकि, मैं यह नहीं कहूंगा कि जीवन (जहां तक ​​C जाता है) 10 साल पहले की तुलना में गहराई से अलग है। लेकिन, कई मायनों में, यह वास्तव में थोड़ा आसान है। हालांकि यह अनुभव करने के लिए उपकरण के लिए विशेषता मुश्किल है।


15

glib "नया मानक पुस्तकालय" हो सकता है। यह बहुत कुछ महसूस करता है कि मानक-प्लेटफ़ॉर्म-थ्रेडिंग और नेटवर्किंग, कंटेनर डेटा संरचनाओं आदि से बहुत कुछ महसूस होता है, यह हर जगह लागू नहीं होता है, लेकिन यदि आप इसका उपयोग कर सकते हैं, तो यह बहुत समय बचाता है।


मुझे लगता है कि आप GNU C लाइब्रेरी (GLibC)
Lekensteyn

7
नहीं, मैं भ्रमित नहीं हूं।
ज़वराबा

1
यह पूरी तरह से मान्य उत्तर है, मुझे यकीन नहीं है कि इसे क्यों वोट दिया गया था। ग्लिब का जन्म उलरिच ड्रेपर से बहुत से निराश होने के कारण हुआ था और कैसे 'संरक्षित' ग्लिब है।
टिम पोस्ट

1
ग्लिब को पूरी तरह से गनोम से अब अलग कर दिया गया है, हालांकि। मैं एसोसिएशन के बारे में बहस नहीं कर रहा हूं, बस व्यावहारिक रूप से आप GNOME और यहां तक ​​कि GTK + को पूरी तरह से अनदेखा कर सकते हैं। इसमें बहुत सारी (?) कमांड लाइन और गैर-संवादात्मक कार्यक्रम लिखे गए हैं।
detly

3
मुझे
ग्लिब

4
  1. StackOverflow ;)
  2. मैं मुख्य रूप से माइक्रोचिप के माइक्रोकंट्रोलर्स के लिए फर्मवेयर लिखने के लिए सी का उपयोग करता हूं, और चूंकि उनका कंपाइलर जीसीसी आधारित है इसलिए मैं सी 99 का उपयोग करता हूं (लेकिन मैं अतिरिक्त सुविधाओं के साथ पागल नहीं होता हूं, मुख्य रूप से यह लूप वेरिएबल और स्टैक पर डायनेमिक सरणियों के दायरे को प्रतिबंधित करने के लिए है)। जब मैं पायथन एक्सटेंशन लिखता हूं, तो मैं C89 से चिपक जाता हूं, जब किसी को MSVC के साथ संकलन करने की आवश्यकता होती है। मुझे नहीं पता कि बाकी सभी क्या उपयोग करते हैं।
  3. स्प्लिंट (C89 पर काम करता है, C99 नहीं), और क्लैंग के स्थिर विश्लेषक - हालांकि, चूंकि दोनों मैक्रो-भारी फर्मवेयर कोड पर चोक करते हैं, इसलिए मुझे उनके साथ बड़े पैमाने पर अनुभव नहीं है। वास्तव में, LLVM का अधिकांश सामान एक सी गीक के लिए काफी दिलचस्प है।
  4. ठीक है, यह सिर्फ पवित्र युद्ध चारा है: पी
  5. कभी Ctags का उपयोग नहीं किया, लेकिन मैं Doxygen के लिए आंशिक हूं।
  6. भगवान मैं Autoconf से नफरत है। मैं इससे बहुत नफरत करता हूं। मैं कभी नहीं, कभी खरोंच से एक Autoconf गेंद कीचड़ शिल्प करने में कामयाब रहा। अगर एक परियोजना पहले से ही एक थी, तो मैं अभी जो कुछ भी पहले से ही है, उसे समाप्त करूँगा। अगर मैं कुछ नया लिख ​​रहा हूँ, तो मैं शेख़ी बजाता हूँ और बड़बड़ाता हूँ और विकल्पों की तलाश करता हूँ, हालाँकि अगर मुझे ऐसा लगता है कि मैं एक ऐसा व्यक्ति हूँ जिसे मैंने पाया है। पिछली बार जब मैं इस चक्र से गुज़रा, तो मैं SCons पर बस गया, जिसका मैं फिर से उपयोग कर सकता हूं।

1
मैं स्टेटिक विश्लेषण के लिए Cppcheck का भी सुझाव दूंगा
ग्रेग हेवगिल

10
बिंदु संख्या 6 के बारे में: "मैंने दूसरे दिन 'डाई गन्नू ऑटोटूलस' नामक पुस्तक देखी, मैं सोच रहा था कि 'हेक यस!' जब तक मुझे एहसास हुआ कि शीर्षक जर्मन में था ”।
Cercerilla

2

2) और 3) बदल गए हैं। C99 मुख्यधारा है, C90 अधिक से अधिक अप्रचलित है। gcc -Wall -std=c99 -pedantic

इसके अलावा, दो सबसे उल्लेखनीय परिवर्तन जो पहले से ही अन्य उत्तरों में संबोधित नहीं किए गए हैं:

  • C11। आईएसओ 9899: 2011
  • मिश्रा सी: 2004।

1

सी प्रोग्रामिंग भाषा ने अपने सबसे हालिया अध्ययन / सर्वेक्षण में डॉ। डॉब की पत्रिका पर शीर्ष 2 या 3 प्रोग्रामिंग भाषाओं में इसे बनाया।

भाषा को लागू करने के लिए, C का उपयोग Google पर एक नई भाषा को लागू करने के लिए किया जाता है, जिसे Go (golang.org) कहा जाता है।

मैंने हाल के वर्षों में C के usenet समूह का अनुसरण नहीं किया है। मैं अक्सर इसके फ़्रीनोड आईआरसी चैनल पर जाता हूं। यह बहुत से सक्रिय और बारंबार है।

सी में नए कार्यक्रम लिखे जा रहे हैं, लेकिन उन्हें वैसा प्रचार नहीं मिल रहा है, जैसा कि इस वर्ष, 1999 में होगा।

ये कुछ ऐसी चीजें हैं जो दिमाग में सबसे ऊपर आती हैं। और भी बहुत कुछ हो सकता है, लेकिन मुझे उम्मीद है कि आप अपने प्रोग्रामर टोपी के संपर्क में बने रहेंगे, हालाँकि आपने टोपी के C मॉडल को फ्रीक्वेंसी नहीं दी होगी :)


0

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

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