प्रोग्रामिंग भाषाओं की तुलना
सी: वह भाषा जिस पर बाकी सब कुछ चलता है
सी बाकी सभी चीजों के नीचे की भाषा है: कर्नेल, ड्राइवर, आपके पायथन सर्वर चलाने वाले दुभाषिए, आपकी वेबसाइटों के पीछे डेटाबेस इंजन। ऑप्स टीमों के लिए, सी वह चीज़ नहीं है जिसे आप हर दिन लिखते हैं और वह चीज़ अधिक है जिसे आपको धाराप्रवाह रूप से पढ़ना चाहिए, क्योंकि सीवीई राइट-अप, स्टैक ट्रेस और कोर डंप सी की शब्दावली में अपना काम करते हैं। यह हमारी सी-बनाम-सी++ तुलना के पीछे समर्पित लेख है।
मुख्य बिंदु
- मॉडल ईमानदार है: मॉलोक/फ्री के माध्यम से मैन्युअल मेमोरी, पॉइंटर्स पर अंकगणित, और बग श्रेणी के बजाय विशिष्ट-स्तरीय सत्य के रूप में अपरिभाषित व्यवहार; जो अनुशासन C को तेज़ बनाता है वही अनुशासन लापरवाह C को महँगा बनाता है।
- अपरिभाषित व्यवहार घूमने वाला खतरा है: सीमा से बाहर अनुक्रमण, हस्ताक्षरित अतिप्रवाह, उपयोग-बाद-मुक्त कक्षाएं जो सीधे मेमोरी-सुरक्षा सीवीई परिवारों से मेल खाती हैं (दशकों के सीवीई डेटा में लगभग एक-एक करके प्लग किया गया); फ़ज़र्स (एएफएल-लिबफ़ुज़र-क्लास टूल) और सैनिटाइज़र अनुमानों को रेप्रो स्थितियों में बदल देते हैं।
- डिबग टूलिंग विश्व स्तरीय है और जानने लायक है: जीडीबी, वालग्रिंड/मेमचेक, एड्रेस सैनिटाइजर और इसके परिजन (यूबीएसएन, टीएसएन) परीक्षण के समय बग के वर्गों को पकड़ते हैं जो उत्पादन स्टैक ट्रेस का केवल संकेत देते हैं; यही कारण है कि जिस भी सी-हैवी टीम के साथ हम काम करते हैं, उसमें 'सीआई में सैनिटाइज़र के साथ निर्माण' एक घरेलू नियम है।
- सी पढ़ना एक ऑप्स कौशल है: सीवीई संदर्भ कार्यों और प्रकारों की घोषणा करता है, सेवा सेगफॉल्ट जीडीबी शब्दावली में बैकट्रेस उत्पन्न करता है, और पोर्ट-ट्री-क्लास स्रोतों से पैकेज बिल्ड कंपाइलर चेतावनियां दिखाता है जो जंक से गुणवत्ता को अलग करता है; पाठक को वर्षों तक चुपचाप लाभ मिलता रहता है।
- एबीआई संयोजी ऊतक है: प्रत्येक 'विदेशी फ़ंक्शन इंटरफ़ेस' (पायथन का सीटाइप, रस्ट का एफएफआई, गो का सीजीओ) सी-आकार का है क्योंकि सी पुस्तकालय सीमाओं की सामान्य भाषा बन गया है; वह भूमिका डेवलपर फैशन की परवाह किए बिना सी को प्रासंगिक बनाए रखती है।
- जब C अभी भी लिखने के लिए सही उपकरण है: कर्नेल, ड्राइवर, एम्बेडेड फ़र्मवेयर, और अंतरतम लूप जहां कैश व्यवहार हावी है; अन्यत्र भाषा तुलना (असुरक्षित सी घटकों को सुरक्षित रूप से फिर से लिखने के लिए जंग, ऑप्स टूलींग के लिए जाएं) ईमानदार आधुनिक विकल्पों को कवर करती हैं।
क्षेत्रीय टिप्पणी
सी बग जिसने हमें सैनिटाइज़र को संस्थागत बनाने के लिए मजबूर किया, उसे स्टैक-ट्रेस लोककथाओं द्वारा खोजने में तीन सप्ताह लगे और एड्रेससैनिटाइज़र के तहत तीन मिनट लगे: कंपाइलर पारिस्थितिकी तंत्र पहले से ही जानता है कि मनुष्यों को सुबह 2 बजे स्कैन नहीं करना चाहिए।
अक्सर पूछे जाने वाले प्रश्न
क्या हमें C में नया इंफ्रास्ट्रक्चर लिखना चाहिए?
लगभग कभी भी पूरी तरह से नहीं: जहां अधिकतम नियंत्रण मायने रखता है, कर्नेल और ड्राइवर सी रहते हैं; सेवाएँ और टूलींग आज पायथन/गो/रस्ट को तैनात करते हैं; सुरक्षित-किनारों वाला सी-कोर व्यावहारिक आधुनिक आकार है।
इतने सारे सीवीई के लिए सी को दोषी क्यों ठहराया जाता है?
क्योंकि मेमोरी-सुरक्षा बग ठीक वहीं रहते हैं जहां यूबी रहता है और क्योंकि दुनिया के महत्वपूर्ण कोड का इतना बड़ा हिस्सा सी है। प्रबंधक 'सक्रिय विकास' प्रथाओं के अनुसार सुरक्षित मेमोरी टूल, फ़ज़िंग और लक्षित पुनर्लेखन के माध्यम से इसे कम करते हैं।
व्यवस्थापक C को प्रभावी ढंग से पढ़ना कैसे सीख सकते हैं?
वास्तविक सेवा स्रोत को अलग करें: छोटे कोडबेस वाले पैकेज (कर्ल एक अच्छी शुरुआत है), फिक्स के खिलाफ सीवीई रिपोर्ट पढ़ें, और एक परीक्षण बॉक्स पर जीडीबी के साथ अभ्यास करें। प्रवाह में कुछ सप्ताहांत और वास्तविक कलाकृतियाँ शामिल हैं।
क्या आधुनिक सी (सी17/सी23) कहानी को बदलने के लिए पर्याप्त भिन्न है?
वृद्धिशील: मानक सावधानीपूर्वक विकसित होता है, लेकिन मेमोरी मॉडल और यूबी परिदृश्य लंबे समय से चली आ रही वास्तविकता बने हुए हैं; टूलींग, मानक मंथन नहीं, वह जगह है जहां सुरक्षा प्रगति हुई है।
प्रोग्रामिंग भाषाओं की तुलना में Kinetikatech कैसे सहायता करता है
यही हमारा रोज़ का काम है: सिस्टम कार्य, स्क्रिप्टिंग और सेवाओं के लिए भाषाओं की तुलना, उत्पादन में वास्तव में क्या मायने रखती है: सुरक्षा गारंटी, कच्ची गति, आप किसे काम पर रख सकते हैं, और परिणामी सेवाओं को तैनात करना और पैच करना कितना दर्दनाक है। हमारी सर्वर प्रबंधन और वेबसाइट रखरखाव सेवा इसे शुरू से अंत तक कवर करती है: आकलन, कार्यान्वयन, 24/7 निगरानी और 30 मिनट में आपात प्रतिक्रिया।