समस्या
अन्य प्रोग्रामिंग भाषाओं की तुलना में C प्रोग्रामिंग की सीमाएं क्या हैं?
C भाषा की मुख्य सीमाएं
1. ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) का अभाव
- विरासत (Inheritance) समर्थित नहीं
- बहुरूपता (Polymorphism) नहीं
- एनकैप्सुलेशन (Encapsulation) नहीं
- डेटा एब्स्ट्रैक्शन (Data Abstraction) सीमित
2. त्रुटि पहचान (Error Detection)
- कंपाइलर हर लाइन पर त्रुटि नहीं पकड़ता
- बग्स पूरे कोड लिखने के बाद ही पता चलते हैं
- रनटाइम त्रुटियां (सेगमेंटेशन फॉल्ट, मेमोरी लीक) डीबग करना कठिन
3. नेमस्पेस (Namespace) नहीं
- नाम टकराव (name collisions) आम
- बड़े प्रोजेक्ट्स में फ़ंक्शन/चर नाम प्रबंधन कठिन
- C++ के
namespace, Java केpackageजैसी सुविधा नहीं
4. सीमित डेटा एब्स्ट्रैक्शन
- बड़े डेटा सेट हैंडल करने की क्षमता सीमित
- कोई अंतर्निहित उच्च-स्तरीय डेटा संरचना नहीं (लिस्ट, मैप, सेट)
- सब कुछ मैन्युअल रूप से लागू करना पड़ता है
5. एक्सेप्शन हैंडलिंग नहीं
try-catchजैसा तंत्र नहीं- त्रुटि हैंडलिंग के लिए रिटर्न कोड या
errnoपर निर्भर - संसाधन सफाई (cleanup) मैन्युअल
6. कंस्ट्रक्टर/डिस्ट्रक्टर नहीं
- ऑब्जेक्ट प्रारंभिकरण/सफाई के लिए स्वचालित तंत्र नहीं
- RAII (Resource Acquisition Is Initialization) पैटर्न असंभव
7. वास्तविक दुनिया की समस्याओं के लिए कम उपयुक्त
- लो-लेवल सिस्टम प्रोग्रामिंग के लिए डिज़ाइन किया गया
- हाई-लेवल एप्लिकेशन डेवलपमेंट में बोझिल
- GUI, वेब, नेटवर्किंग के लिए लाइब्रेरी पर निर्भर
8. सुरक्षा कमजोरियां
- बफर ओवरफ्लो संभावित
- पॉइंटर अंकगणित खतरनाक
- कोई बाउंड्स चेकिंग नहीं
- फॉर्मेट स्ट्रिंग भेद्यता
C प्रोग्राम की मूल संरचना
/* दस्तावेज़ीकरण अनुभाग */
प्रीप्रोसेसर निर्देश
ग्लोबल घोषणा
main() {
स्थानीय घोषणा
निष्पादन योग्य कथन
}
रिटर्न_टाइप फ़ंक्शन_नाम(आर्गुमेंट_लिस्ट) {
स्थानीय घोषणा
निष्पादन योग्य कथन
}
उदाहरण: वृत्त की परिधि
/* लेखक: ट्यूटोरियल्सपॉइंट
उद्देश्य: वृत्त की परिधि ज्ञात करने का प्रोग्राम */
#include <stdio.h>
#include <conio.h>
#define PI 3.1415
main() {
float c, r;
clrscr();
printf("वृत्त की त्रिज्या दर्ज करें: ");
scanf("%f", &r);
c = 2 * PI * r;
printf("परिधि = %f", c);
getch();
}
आउटपुट
वृत्त की त्रिज्या दर्ज करें: 4
परिधि = 25.132000
फिर भी C क्यों लोकप्रिय है?
उपरोक्त सीमाओं के बावजूद, C निम्न कारणों से व्यापक रूप से उपयोग किया जाता है:- प्रदर्शन: मशीन कोड के करीब, न्यूनतम ओवरहेड
- पोर्टेबिलिटी: लगभग हर प्लेटफॉर्म पर कंपाइलर उपलब्ध
- नियंत्रण: हार्डवेयर/मेमोरी पर पूर्ण नियंत्रण
- फाउंडेशन: OS, एम्बेडेड सिस्टम, कंपाइलर, इंटरप्रेटर C में लिखे गए
- सीखने का मूल्य: कंप्यूटर साइंस फंडामेंटल समझने के लिए सर्वश्रेष्ठ