Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C भाषा का इतिहास (History of C Language)


C भाषा का विकास

पूर्ववर्ती भाषाएं

  • ALGOL (1958): संरचित प्रोग्रामिंग की नींव
  • BCPL (1967): मार्टिन रिचर्ड्स - टाइपलेस, सिस्टम प्रोग्रामिंग
  • B (1969): केन थॉम्पसन - BCPL का सरलीकरण, UNIX PDP-7 के लिए

C का जन्म (1972)

  • डेनिस रिची ने बेल लैब्स में विकसित किया
  • PDP-11 पर UNIX ऑपरेटिंग सिस्टम के लिए
  • B की कमियों को दूर किया: डेटा प्रकार, पॉइंटर्स, स्ट्रक्चर्स
  • 1973: UNIX कर्नेल C में पुनर्लिखित (पहला पोर्टेबल OS कर्नेल)

महत्वपूर्ण मील के पत्थर

वर्षघटना
1969UNIX विकास शुरू (असेंबली में)
1972C भाषा विकास
1973UNIX कर्नेल C में पुनर्लिखित
1978K&R C: "The C Programming Language" पुस्तक (डेनिस रिची + ब्रायन कर्निघन)
1983ANSI C मानकीकरण शुरू (X3J11 समिति)
1989ANSI C मानक (C89/C90)
1990ISO C90 (अंतर्राष्ट्रीय मानक)
1999C99 मानक: VLA, इंलाइन, // कमेंट्स, stdint.h, complex.h
2011C11 मानक: थ्रेड्स, एटॉमिक्स, जेनेरिक सिलेक्शन, बाउंड्स चेकिंग
2018C18 (C17): बग फिक्स, कोई नई सुविधा नहीं
2024C23 मानक: typeof, लैम्ब्डा एक्सप्रेशन, nullptr, एट्रिब्यूट्स, मॉड्यूल्स

प्रमुख परियोजनाएं C में लिखी गईं

  • ऑपरेटिंग सिस्टम: UNIX, Linux, Windows कर्नेल, macOS/iOS (XNU), Android
  • डेटाबेस: Oracle (1983 असेंबली से C), MySQL, PostgreSQL, SQLite
  • भाषाएं: Python (CPython), Ruby, Perl, PHP, Lua, JavaScript इंजन (V8, SpiderMonkey)
  • एम्बेडेड: लगभग सभी माइक्रोकंट्रोलर फर्मवेयर
  • कंपाइलर: GCC, LLVM/Clang, MSVC
  • नेटवर्किंग: TCP/IP स्टैक, वेब सर्वर (nginx, Apache)

C की डिजाइन फिलॉसफी

  1. सरलता: छोटा कीवर्ड सेट, न्यूनतम रनटाइम
  2. दक्षता: हार्डवेयर के करीब, शून्य-ओवरहेड सिद्धांत
  3. पोर्टेबिलिटी: प्लेटफॉर्म-स्वतंत्र, केवल कंपाइलर बदलें
  4. लचीलापन: प्रोग्रामर पर भरोसा, अनिर्धारित व्यवहार से बचने की जिम्मेदारी प्रोग्रामर की
  5. स्थिरता: दशकों पुराना कोड आज भी कंपाइल होता है
  6. आधुनिक C

    C आज भी सक्रिय रूप से विकसित हो रहा है। C23 में आधुनिक सुविधाएं जोड़ी गई हैं जबकि पिछड़ी संगतता बनाए रखी गई है।

    C23 नई सुविधाएं (चयनित)

    • typeof(expr) - अभिव्यक्ति का प्रकार
    • लैम्ब्डा एक्सप्रेशन: [](int x){ return x*2; }
    • nullptr - टाइप-सेफ नल पॉइंटर
    • [[attributes]] - मानक एट्रिब्यूट सिंटैक्स
    • #embed - बाइनरी संसाधन सम्मिलित करना
    • auto चर (C++ स्टाइल)
    • constexpr - कंपाइल-टाइम स्थिरांक
  1. C भाषा में कैरेक्टर ऑपरेशन्स को समझें C भाषा में कैरेक्टर ऑपरेशन्स को समझें

    C प्रोग्रामिंग भाषा में कैरेक्टर (A-Z या a-z), अंक (0-9), व्हाइट स्पेस, या विशेष प्रतीक हो सकते हैं। घोषणा (Declaration) C प्रोग्रामिंग में कैरेक्टर ऑपरेशन्स के लिए घोषणा निम्नलिखित है: char a = A; // कैरेक्टर कॉन्स्टेंट का उपयोग करके कैरेक्टर इनपुट/आउटपुट फंक्शन्स कैरेक्टर इनपुट/आउटपुट फंक्शन्स

  1. C भाषा में यूनियन टू पॉइंटर (Union to Pointer) C भाषा में यूनियन टू पॉइंटर (Union to Pointer)

    यूनियन (Union) क्या है? यूनियन एक यूजर-डिफाइंड डेटा प्रकार है जो एक ही मेमोरी स्थान को विभिन्न डेटा प्रकारों के सदस्यों के लिए साझा करने की अनुमति देता है। किसी भी समय केवल एक सदस्य ही मान रख सकता है। यूनियन की घोषणा union यूनियन_नाम { डेटा_प्रकार सदस्य1; डेटा_प्रकार सदस्य2; // ... };

  1. C भाषा में पॉइंटर एक्सेस करने की अवधारणा C भाषा में पॉइंटर एक्सेस करने की अवधारणा

    पॉइंटर घोषणा, प्रारंभिकरण और एक्सेस 1. सामान्य चर int qty = 179; // मेमोरी में: पता 1000 पर मान 179 संग्रहीत 2. पॉइंटर घोषणा int *p; // p एक पॉइंटर चर है जो int का पता रख सकता है 3. पॉइंटर प्रारंभिकरण int qty = 175; int *p; p = &qty; // एड्रेस-ऑफ ऑपरेटर (&) से पता प्राप्त करें मेमोरी आर