France Terminale Computer Science (specialty)
अध्याय: 6
1. History of computing
Key events
- कंप्यूटर का इतिहास: गियर से वेब तक – कंप्यूटिंग गिनने के औज़ारों से बढ़कर प्रोग्राम पर चलने वाली मशीनों तक पहुँची। पास्कल ने 1642 में गियर वाला कैलकुलेटर बनाया। बैबेज ने प्रोग्राम से चलने वाली मशीन डिज़ाइन की और एडा लवलेस ने 1843 में पहले प्रोग्राम का विचार लिखा। 1936 में एलन ट्यूरिंग ने एक सार्वभौमिक मशीन बताई। पहले बड़े इलेक्ट्रॉनिक कंप्यूटर, जैसे ENIAC (1945), कमरे भर के थे; प्रोग्रामिंग भाषाओं (फ़ोर्ट्रान 1957, C 1972) ने उन्हें चलाना आसान बनाया। चिप ने कंप्यूटर छोटे किए: पर्सनल कंप्यूटर 1970 के दशक के अंत और 1980 के दशक में आए। ARPANET (1969) इंटरनेट बना और वर्ल्ड वाइड वेब 1991 में खुला। कॉड के रिलेशनल मॉडल (1970) ने डेटाबेस को मज़बूत आधार दिया। लिनक्स (1991) जैसे ओपन-सोर्स सॉफ़्टवेयर ने कोड बाँटना संभव किया। इस कहानी को कई वैज्ञानिकों ने गढ़ा।
2. Data structures
Lists, stacks, queues, dictionaries · Trees, BSTs, graphs · Object-oriented programming
- डेटा संरचना: ऐरे, लिस्ट, स्टैक, क्यू और ट्री – डेटा संरचना मेमोरी में डेटा को ऐसे जमाने का तरीका है कि प्रोग्राम उसे अच्छे से इस्तेमाल कर सके। ऐरे चीज़ों को क्रमांकित डिब्बों में रखता है ताकि सूचकांक से तुरंत पहुँच हो। लिंक्ड लिस्ट नोड्स को पॉइंटर से जोड़ती है, इसलिए बीच में डालना आसान है। स्टैक LIFO (अंतिम आया, पहले गया) और क्यू FIFO (पहले आया, पहले गया) पर चलते हैं। डिक्शनरी कुंजी (key) से मान खोजती है और ट्री डेटा को स्तरों में रखता है ताकि खोज तेज़ हो।
- ग्राफ़ सिद्धांत: बिंदु, रेखाएँ और नेटवर्क – ग्राफ़ शीर्षों (बिंदुओं) का समूह है जिन्हें किनारे (रेखाएँ) जोड़ते हैं। किसी शीर्ष की घात उसे छूने वाले किनारों की संख्या है, और सभी घातों का योग किनारों का दुगुना होता है। ऑयलर पथ हर किनारे का एक बार उपयोग करता है और तभी संभव है जब 0 या 2 शीर्ष विषम घात के हों। वृक्ष ऐसा जुड़ा ग्राफ़ है जिसमें चक्र नहीं और n − 1 किनारे हैं। भारित ग्राफ़ सड़कें और नेटवर्क दिखाते हैं; क्रुस्कल और प्रिम विधियाँ न्यूनतम विस्तृत वृक्ष ढूँढती हैं।
- ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग (OOP) – ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में प्रोग्राम ऑब्जेक्ट्स से बनता है। क्लास एक ब्लूप्रिंट है जो बताता है कि उसके ऑब्जेक्ट्स के पास कौन-सा डेटा (एट्रिब्यूट) और कौन-से काम (मेथड) होंगे। हर ऑब्जेक्ट क्लास से बनता है और अपना डेटा ख़ुद रखता है। चार बड़े विचार हैं: एनकैप्सुलेशन (डेटा को मेथड के पीछे छिपाना), इनहेरिटेंस (नई क्लास पुरानी को दोबारा इस्तेमाल करे), पॉलीमॉर्फ़िज़्म (एक ही मेथड हर ऑब्जेक्ट के लिए सही ढंग से चले) और एब्स्ट्रैक्शन (ज़रूरी चीज़ ही दिखाना)।
3. Databases
Relational model, SQL, DBMS
- संबंधपरक डेटाबेस: तालिकाएँ, पंक्तियाँ, स्तंभ और कीज़ – डेटा को कई अलग फ़ाइलों में रखने से डेटा दोहराता है, कॉपियाँ आपस में मेल नहीं खातीं और खोजना कठिन होता है, इसलिए हम DBMS से चलने वाला डेटाबेस उपयोग करते हैं। संबंधपरक मॉडल में डेटा रिलेशन कहलाने वाली तालिकाओं में रहता है। स्तंभ एट्रिब्यूट है, पंक्ति ट्यूपल है, और किसी स्तंभ के मान्य मानों का समूह उसका डोमेन है। स्तंभों की संख्या डिग्री है; पंक्तियों की संख्या कार्डिनैलिटी। कैंडिडेट की वह स्तंभ (या समूह) है जो हर पंक्ति को अलग पहचान सके; चुनी गई प्राइमरी की है और बाकी अल्टरनेट की। फ़ॉरेन की एक तालिका का वह स्तंभ है जो दूसरी तालिका की प्राइमरी की की ओर इशारा करके उन्हें जोड़ता है।
4. Systems and networks
SoC, processes, routing, secure communication
- ऑपरेटिंग सिस्टम – ऑपरेटिंग सिस्टम (OS) मुख्य सिस्टम सॉफ़्टवेयर है जो उपयोगकर्ता और हार्डवेयर के बीच रहकर सारे संसाधन संभालता है। इसके कार्य: प्रोसेस प्रबंधन (प्रोग्रामों में CPU बाँटना), मेमोरी प्रबंधन (RAM देना और वापस लेना), फ़ाइल प्रबंधन, उपकरण प्रबंधन (ड्राइवरों से) और सुरक्षा (पासवर्ड, अनुमति)। उपयोगकर्ता OS से यूज़र इंटरफ़ेस से बात करता है: कमांड लाइन (CLI), ग्राफ़िकल (GUI), टच, आवाज़ या हावभाव। उदाहरण: Windows, Linux, macOS, Android, iOS।
5. Languages and programming
Recursion, modularity, paradigms, computability
- रिकर्शन: ख़ुद को पुकारने वाले फ़ंक्शन – रिकर्शन (recursion) तब होता है जब कोई फ़ंक्शन किसी प्रश्न को हल करने के लिए उसी प्रश्न के छोटे रूप पर ख़ुद को पुकारता है। हर रिकर्सिव फ़ंक्शन में एक आधार स्थिति (base case) चाहिए, जहाँ वह रुककर सीधे उत्तर देता है, और एक रिकर्सिव स्थिति जो आधार स्थिति की ओर बढ़ती है। हर पुकार को कॉल स्टैक पर अपना स्टैक फ़्रेम मिलता है; पुकार लौटने पर फ़्रेम हट जाता है।
6. Algorithms
Tree/graph algorithms, divide and conquer, dynamic programming, text search
- समस्या समाधान का परिचय – कंप्यूटर से समस्या हल करने के चरण: समस्या का विश्लेषण (इनपुट, आउटपुट, नियम), एल्गोरिद्म बनाना (सीमित, स्पष्ट, क्रमबद्ध चरण), प्रोग्रामिंग भाषा में कोड करना, अलग-अलग इनपुट से जाँचना (टेस्ट), और डीबग (गलतियाँ ढूँढकर हटाना)। एल्गोरिद्म को फ़्लोचार्ट (अंडाकार = शुरू/रुको, समांतर चतुर्भुज = इनपुट/आउटपुट, आयत = प्रक्रिया, हीरा = निर्णय, तीर = दिशा) या स्यूडोकोड (सरल संरचित भाषा) में दिखाते हैं। विघटन बड़ी समस्या को छोटी उप-समस्याओं में तोड़ता है।