कंप्यूटर विज्ञान, कंप्यूटर और कंप्यूटिंग का अध्ययन, जिसमें उनकी सैद्धांतिक और एल्गोरिथम नींव, हार्डवेयर और सॉफ्टवेयर शामिल हैं, और सूचना प्रसंस्करण के लिए उनका उपयोग। कंप्यूटर विज्ञान के अनुशासन में एल्गोरिदम और डेटा संरचनाओं का अध्ययन, कंप्यूटर और नेटवर्क डिजाइन, मॉडलिंग डेटा और सूचना प्रक्रियाएं, और कृत्रिम बुद्धि शामिल हैं। कंप्यूटर विज्ञान अपनी कुछ नींव गणित और इंजीनियरिंग से लेता है और इसलिए कतार सिद्धांत, संभाव्यता और सांख्यिकी, और इलेक्ट्रॉनिक सर्किट डिजाइन जैसे क्षेत्रों से तकनीकों को शामिल करता है। कंप्यूटर विज्ञान भी नए एल्गोरिदम, सूचना संरचनाओं और कंप्यूटर आर्किटेक्चर की अवधारणा, डिजाइन, माप और शोधन के दौरान परिकल्पना परीक्षण और प्रयोग का भारी उपयोग करता है।
कंप्यूटर विज्ञान को पांच अलग-अलग अभी तक परस्पर संबंधित विषयों के परिवार के हिस्से के रूप में माना जाता है: कंप्यूटर इंजीनियरिंग, कंप्यूटर विज्ञान, सूचना प्रणाली, सूचना प्रौद्योगिकी और सॉफ्टवेयर इंजीनियरिंग। इस परिवार को सामूहिक रूप से कंप्यूटिंग के अनुशासन के रूप में जाना जाने लगा है। ये पांच विषय इस अर्थ में परस्पर जुड़े हुए हैं कि कंप्यूटिंग उनके अध्ययन का उद्देश्य है, लेकिन वे अलग हैं क्योंकि प्रत्येक का अपना शोध परिप्रेक्ष्य और पाठ्यचर्या फोकस है। (1991 से एसोसिएशन फॉर कंप्यूटिंग मशीनरी [एसीएम], आईईईई कंप्यूटर सोसाइटी [आईईईई-सीएस], और एसोसिएशन फॉर इंफॉर्मेशन सिस्टम्स [एआईएस] ने इन पांच परस्पर संबंधित विषयों और दिशानिर्देशों के वर्गीकरण को विकसित और अद्यतन करने के लिए सहयोग किया है जो शैक्षणिक संस्थान दुनिया भर में अपने स्नातक, स्नातक और अनुसंधान कार्यक्रमों के लिए उपयोग करें।)
कंप्यूटर विज्ञान के प्रमुख उपक्षेत्रों में कंप्यूटर वास्तुकला, प्रोग्रामिंग भाषाओं और सॉफ्टवेयर विकास का पारंपरिक अध्ययन शामिल है। हालांकि, उनमें कम्प्यूटेशनल साइंस (वैज्ञानिक डेटा मॉडलिंग के लिए एल्गोरिथम तकनीकों का उपयोग), ग्राफिक्स और विज़ुअलाइज़ेशन, मानव-कंप्यूटर इंटरैक्शन, डेटाबेस और सूचना प्रणाली, नेटवर्क और सामाजिक और व्यावसायिक मुद्दे शामिल हैं जो कंप्यूटर विज्ञान के अभ्यास के लिए अद्वितीय हैं। . जैसा कि स्पष्ट हो सकता है, इनमें से कुछ उपक्षेत्र अन्य आधुनिक क्षेत्रों, जैसे जैव सूचना विज्ञान और कम्प्यूटेशनल रसायन विज्ञान के साथ अपनी गतिविधियों में ओवरलैप करते हैं। ये ओवरलैप कंप्यूटर वैज्ञानिकों के बीच अपने क्षेत्र के कई अंतःविषय कनेक्शनों को पहचानने और उन पर कार्य करने की प्रवृत्ति का परिणाम हैं।
कंप्यूटर विज्ञान का विकास
1960 के दशक की शुरुआत में कंप्यूटर विज्ञान एक स्वतंत्र विषय के रूप में उभरा, हालांकि इसके अध्ययन का उद्देश्य इलेक्ट्रॉनिक डिजिटल कंप्यूटर का आविष्कार लगभग दो दशक पहले हुआ था। कंप्यूटर विज्ञान की जड़ें मुख्य रूप से गणित, इलेक्ट्रिकल इंजीनियरिंग, भौतिकी और प्रबंधन सूचना प्रणाली के संबंधित क्षेत्रों में निहित हैं।
कंप्यूटर के विकास में गणित दो प्रमुख अवधारणाओं का स्रोत है- यह विचार कि सभी सूचनाओं को शून्य और एक के अनुक्रम के रूप में दर्शाया जा सकता है और एक "संग्रहीत कार्यक्रम" की अमूर्त धारणा। द्विआधारी संख्या प्रणाली में, संख्याओं को द्विआधारी अंक 0 और 1 के अनुक्रम द्वारा उसी तरह दर्शाया जाता है जैसे कि परिचित दशमलव प्रणाली में संख्याओं को 0 से 9 तक के अंकों का उपयोग करके दर्शाया जाता है। सापेक्ष सहजता जिसके साथ दो राज्य (जैसे, उच्च और कम वोल्टेज) को इलेक्ट्रिकल और इलेक्ट्रॉनिक उपकरणों में महसूस किया जा सकता है, जो स्वाभाविक रूप से बाइनरी डिजिट या बिट की ओर ले जाते हैं, जो कंप्यूटर सिस्टम में डेटा स्टोरेज और ट्रांसमिशन की मूल इकाई बन जाता है।
इलेक्ट्रिकल इंजीनियरिंग सर्किट डिजाइन की मूल बातें प्रदान करता है - अर्थात्, यह विचार कि सर्किट में विद्युत आवेग इनपुट को मनमाना आउटपुट उत्पन्न करने के लिए बूलियन बीजगणित का उपयोग करके जोड़ा जा सकता है। (19वीं शताब्दी में विकसित बूलियन बीजगणित ने शून्य और इकाई के द्विआधारी इनपुट मूल्यों के साथ एक सर्किट डिजाइन करने के लिए एक औपचारिकता की आपूर्ति की [झूठी या सच, क्रमशः, तर्क की शब्दावली में] शून्य और आउटपुट के रूप में किसी भी वांछित संयोजन को प्राप्त करने के लिए।) सूचना के भंडारण और संचरण के लिए इलेक्ट्रॉनिक, चुंबकीय और ऑप्टिकल मीडिया के आविष्कार के साथ-साथ ट्रांजिस्टर का आविष्कार और सर्किट का लघुकरण, इलेक्ट्रिकल इंजीनियरिंग और भौतिकी में प्रगति के परिणामस्वरूप हुआ।
प्रबंधन सूचना प्रणाली, जिसे मूल रूप से डेटा प्रोसेसिंग सिस्टम कहा जाता है, ने प्रारंभिक विचार प्रदान किए, जिससे विभिन्न कंप्यूटर विज्ञान अवधारणाएं जैसे सॉर्टिंग, सर्चिंग, डेटाबेस, सूचना पुनर्प्राप्ति और ग्राफिकल यूजर इंटरफेस विकसित हुए। बड़े निगमों में ऐसे कंप्यूटर होते थे जो ऐसी जानकारी संग्रहीत करते थे जो व्यवसाय चलाने की गतिविधियों के लिए केंद्रीय थी- पेरोल, लेखा, सूची प्रबंधन, उत्पादन नियंत्रण, शिपिंग और प्राप्त करना।
कम्प्यूटेबिलिटी पर सैद्धांतिक कार्य, जो 1930 के दशक में शुरू हुआ, ने इन अग्रिमों को संपूर्ण मशीनों के डिजाइन के लिए आवश्यक विस्तार प्रदान किया; एक मील का पत्थर ब्रिटिश गणितज्ञ एलन ट्यूरिंग द्वारा ट्यूरिंग मशीन (एक सैद्धांतिक कम्प्यूटेशनल मॉडल जो शून्य और एक की एक श्रृंखला के रूप में दर्शाए गए निर्देशों को पूरा करता है) और मॉडल की कम्प्यूटेशनल शक्ति के उनके प्रमाण के लिए 1936 का विनिर्देश था। एक और सफलता थी conसंग्रहीत-प्रोग्राम कंप्यूटर की अवधारणा, आमतौर पर हंगेरियन अमेरिकी गणितज्ञ जॉन वॉन न्यूमैन को श्रेय दिया जाता है। ये कंप्यूटर विज्ञान क्षेत्र के मूल हैं जो बाद में वास्तुकला और संगठन के रूप में जाने गए।
1950 के दशक में, अधिकांश कंप्यूटर उपयोगकर्ता या तो वैज्ञानिक अनुसंधान प्रयोगशालाओं में या बड़े निगमों में काम करते थे। पूर्व समूह ने जटिल गणितीय गणना (जैसे, मिसाइल प्रक्षेपवक्र) बनाने में मदद करने के लिए कंप्यूटर का उपयोग किया, जबकि बाद वाले समूह ने बड़ी मात्रा में कॉर्पोरेट डेटा (जैसे, पेरोल और इन्वेंट्री) का प्रबंधन करने के लिए कंप्यूटर का उपयोग किया। दोनों समूहों ने जल्दी ही जान लिया कि शून्य और एक की मशीनी भाषा में प्रोग्राम लिखना व्यावहारिक या विश्वसनीय नहीं था। इस खोज से 1950 के दशक की शुरुआत में असेंबली भाषा का विकास हुआ, जो प्रोग्रामर को निर्देशों के लिए प्रतीकों का उपयोग करने की अनुमति देता है (उदाहरण के लिए, जोड़ने के लिए जोड़ें) और चर (जैसे, एक्स)। एक अन्य प्रोग्राम, जिसे एक असेंबलर के रूप में जाना जाता है, ने इन प्रतीकात्मक कार्यक्रमों को एक समकक्ष बाइनरी प्रोग्राम में अनुवादित किया, जिसके कदम कंप्यूटर उठा सकते हैं, या "निष्पादित" कर सकते हैं।
लिंकिंग लोडर के रूप में जाने जाने वाले अन्य सिस्टम सॉफ़्टवेयर तत्वों को असेंबल कोड के टुकड़ों को संयोजित करने और उन्हें कंप्यूटर की मेमोरी में लोड करने के लिए विकसित किया गया था, जहां उन्हें निष्पादित किया जा सकता था। कोड के अलग-अलग टुकड़ों को जोड़ने की अवधारणा महत्वपूर्ण थी, क्योंकि इसने सामान्य कार्यों को करने के लिए कार्यक्रमों के "पुस्तकालयों" को पुन: उपयोग करने की अनुमति दी थी। सॉफ्टवेयर इंजीनियरिंग नामक कंप्यूटर विज्ञान क्षेत्र के विकास में यह पहला कदम था।
बाद में 1950 के दशक में, असेंबली भाषा इतनी बोझिल पाई गई कि उच्च-स्तरीय भाषाओं (प्राकृतिक भाषाओं के करीब) के विकास ने आसान, तेज प्रोग्रामिंग का समर्थन करना शुरू कर दिया। फोरट्रान वैज्ञानिक प्रोग्रामिंग के लिए मुख्य उच्च-स्तरीय भाषा के रूप में उभरा, जबकि COBOL व्यावसायिक प्रोग्रामिंग के लिए मुख्य भाषा बन गई। इन भाषाओं ने अपने साथ अलग-अलग सॉफ़्टवेयर की आवश्यकता को पूरा किया, जिन्हें कंपाइलर कहा जाता है, जो उच्च-स्तरीय भाषा कार्यक्रमों को मशीन कोड में अनुवाद करते हैं। जैसे-जैसे प्रोग्रामिंग भाषाएं अधिक शक्तिशाली और सारगर्भित होती गईं, ऐसे कंपाइलर बनाना जो उच्च गुणवत्ता वाले मशीन कोड बनाते हैं और जो निष्पादन गति और भंडारण खपत के मामले में कुशल होते हैं, एक चुनौतीपूर्ण कंप्यूटर विज्ञान समस्या बन गई। उच्च स्तरीय भाषाओं का डिजाइन और कार्यान्वयन कंप्यूटर विज्ञान क्षेत्र के केंद्र में है जिसे प्रोग्रामिंग भाषा कहा जाता है।
1960 के दशक की शुरुआत में कंप्यूटर के बढ़ते उपयोग ने पहले ऑपरेटिंग सिस्टम के विकास के लिए प्रोत्साहन प्रदान किया, जिसमें सिस्टम-रेजिडेंट सॉफ़्टवेयर शामिल था जो स्वचालित रूप से इनपुट और आउटपुट को नियंत्रित करता था और "जॉब" नामक कार्यक्रमों का निष्पादन करता था। बेहतर कम्प्यूटेशनल तकनीकों की मांग ने संख्यात्मक तरीकों और उनके विश्लेषण में रुचि का पुनरुत्थान किया, एक ऐसी गतिविधि जो इतनी व्यापक रूप से विस्तारित हुई कि इसे कम्प्यूटेशनल विज्ञान के रूप में जाना जाने लगा।
1970 और 80 के दशक में वैज्ञानिक मॉडलिंग और अन्य दृश्य गतिविधियों दोनों के लिए शक्तिशाली कंप्यूटर ग्राफिक्स उपकरणों का उदय हुआ। (कम्प्यूटरीकृत ग्राफिकल उपकरणों को 1950 के दशक की शुरुआत में पेपर प्लॉट और कैथोड-रे ट्यूब [सीआरटी] स्क्रीन पर क्रूड इमेज के प्रदर्शन के साथ पेश किया गया था।) महंगे हार्डवेयर और सॉफ्टवेयर की सीमित उपलब्धता ने क्षेत्र को 1980 के दशक की शुरुआत तक बढ़ने से रोक रखा था, जब बिटमैप ग्राफिक्स के लिए आवश्यक कंप्यूटर मेमोरी (जिसमें एक छवि छोटे आयताकार पिक्सल से बनी होती है) अधिक किफायती हो गई। बिटमैप तकनीक, उच्च-रिज़ॉल्यूशन डिस्प्ले स्क्रीन और ग्राफिक्स मानकों के विकास के साथ, जो सॉफ्टवेयर को कम मशीन-निर्भर बनाते हैं, ने क्षेत्र के विस्फोटक विकास को जन्म दिया है। इन सभी गतिविधियों के लिए समर्थन कंप्यूटर विज्ञान के क्षेत्र में विकसित हुआ जिसे ग्राफिक्स और विजुअल कंप्यूटिंग के रूप में जाना जाता है।
इस क्षेत्र से निकटता से संबंधित सिस्टम का डिज़ाइन और विश्लेषण है जो विभिन्न कम्प्यूटेशनल कार्यों को करने वाले उपयोगकर्ताओं के साथ सीधे बातचीत करता है। 1980 और 90 के दशक के दौरान इन प्रणालियों का व्यापक उपयोग हुआ, जब उपयोगकर्ताओं के साथ लाइन-संपादित इंटरैक्शन को ग्राफिकल यूजर इंटरफेस (जीयूआई) द्वारा बदल दिया गया था। GUI डिज़ाइन, जिसे ज़ेरॉक्स द्वारा अग्रणी बनाया गया था और बाद में Apple (Macintosh) द्वारा और अंत में Microsoft (Windows) द्वारा उठाया गया था, महत्वपूर्ण है क्योंकि यह वह है जो लोग देखते हैं और जब वे एक कंप्यूटिंग डिवाइस के साथ बातचीत करते हैं। सभी प्रकार के उपयोगकर्ताओं के लिए उपयुक्त यूजर इंटरफेस का डिजाइन कंप्यूटर विज्ञान क्षेत्र में विकसित हुआ है जिसे मानव-कंप्यूटर इंटरैक्शन (एचसीआई) के रूप में जाना जाता है।
कंप्यूटर आर्किटेक्चर और संगठन का क्षेत्र भी नाटकीय रूप से विकसित हुआ है क्योंकि 1950 के दशक में पहले स्टोर-प्रोग्राम कंप्यूटर विकसित किए गए थे। तथाकथित टाइम-शेयरिंग सिस्टम 1960 के दशक में उभरा, जिससे कई उपयोगकर्ता एक ही समय में विभिन्न टर्मिनलों से प्रोग्राम चला सकते थे जो कंप्यूटर से हार्ड-वायर्ड थे। 1970 के दशक में पहले वाइड-एरिया कंप्यूटर नेटवर्क (WAN) का विकास हुआ और बड़ी दूरी से अलग किए गए कंप्यूटरों के बीच उच्च गति पर सूचना स्थानांतरित करने के लिए प्रोटोकॉल। जैसे-जैसे इन गतिविधियों का विकास हुआ, वे नेटवर्किंग और संचार नामक कंप्यूटर विज्ञान के क्षेत्र में शामिल हो गए। इस क्षेत्र की एक बड़ी उपलब्धि इंटरनेट का विकास था।
यह विचार किनिर्देश, साथ ही डेटा, को कंप्यूटर की मेमोरी में संग्रहीत किया जा सकता था, एल्गोरिदम के सैद्धांतिक व्यवहार के बारे में मौलिक खोजों के लिए महत्वपूर्ण था। अर्थात्, "क्या गणना की जा सकती है/नहीं की जा सकती है?" जैसे प्रश्न। इन अमूर्त विचारों का उपयोग करके औपचारिक रूप से संबोधित किया गया है। ये खोजें कंप्यूटर विज्ञान क्षेत्र की उत्पत्ति थीं जिन्हें एल्गोरिदम और जटिलता के रूप में जाना जाता था। इस क्षेत्र का एक महत्वपूर्ण हिस्सा डेटा संरचनाओं का अध्ययन और अनुप्रयोग है जो विभिन्न अनुप्रयोगों के लिए उपयुक्त हैं। डेटा संरचनाएं, ऐसी संरचनाओं में डेटा डालने, हटाने और खोजने के लिए इष्टतम एल्गोरिदम के विकास के साथ, कंप्यूटर वैज्ञानिकों की एक प्रमुख चिंता है क्योंकि वे कंप्यूटर सॉफ़्टवेयर में बहुत अधिक उपयोग किए जाते हैं, विशेष रूप से कंपाइलर, ऑपरेटिंग सिस्टम, फ़ाइल सिस्टम में, और खोज इंजन।
1960 के दशक में चुंबकीय डिस्क भंडारण के आविष्कार ने डिस्क पर एक मनमानी जगह पर स्थित डेटा तक तेजी से पहुंच प्रदान की। इस आविष्कार ने न केवल अधिक चतुराई से डिज़ाइन किए गए फ़ाइल सिस्टम बल्कि डेटाबेस और सूचना पुनर्प्राप्ति प्रणालियों के विकास के लिए भी नेतृत्व किया, जो बाद में इंटरनेट पर बड़ी मात्रा में और व्यापक प्रकार के डेटा को संग्रहीत करने, पुनर्प्राप्त करने और प्रसारित करने के लिए आवश्यक हो गया। कंप्यूटर विज्ञान के इस क्षेत्र को सूचना प्रबंधन के रूप में जाना जाता है।
कंप्यूटर विज्ञान अनुसंधान का एक और दीर्घकालिक लक्ष्य कंप्यूटिंग मशीनों और रोबोटिक उपकरणों का निर्माण है जो ऐसे कार्यों को अंजाम दे सकते हैं जिन्हें आमतौर पर मानव बुद्धि की आवश्यकता के रूप में माना जाता है। इस तरह के कार्यों में चलना, देखना, सुनना, बोलना, प्राकृतिक भाषा को समझना, सोचना और यहां तक कि मानवीय भावनाओं को प्रदर्शित करना भी शामिल है। बुद्धिमान प्रणालियों का कंप्यूटर विज्ञान क्षेत्र, जिसे मूल रूप से कृत्रिम बुद्धिमत्ता (एआई) के रूप में जाना जाता है, वास्तव में 1940 के दशक में पहले इलेक्ट्रॉनिक कंप्यूटरों से पहले का है, हालांकि कृत्रिम बुद्धिमत्ता शब्द 1956 तक नहीं गढ़ा गया था।
21वीं सदी के शुरुआती भाग में कंप्यूटिंग में तीन विकास- मोबाइल कंप्यूटिंग, क्लाइंट-सर्वर कंप्यूटिंग और कंप्यूटर हैकिंग- ने कंप्यूटर विज्ञान में तीन नए क्षेत्रों के उद्भव में योगदान दिया: प्लेटफॉर्म-आधारित विकास, समानांतर और वितरित कंप्यूटिंग, और सुरक्षा और सूचना आश्वासन। प्लेटफ़ॉर्म-आधारित विकास मोबाइल उपकरणों, उनके ऑपरेटिंग सिस्टम और उनके अनुप्रयोगों की विशेष आवश्यकताओं का अध्ययन है। समानांतर और वितरित कंप्यूटिंग आर्किटेक्चर और प्रोग्रामिंग भाषाओं के विकास से संबंधित है जो एल्गोरिदम के विकास का समर्थन करते हैं जिनके घटक समय और स्थान का बेहतर उपयोग करने के लिए एक साथ और अतुल्यकालिक (क्रमिक रूप से) चल सकते हैं। सुरक्षा और सूचना आश्वासन कंप्यूटिंग सिस्टम और सॉफ्टवेयर के डिजाइन से संबंधित है जो डेटा की अखंडता और सुरक्षा के साथ-साथ उस डेटा की विशेषता वाले व्यक्तियों की गोपनीयता की रक्षा करता है।
अंत में, अपने पूरे इतिहास में कंप्यूटर विज्ञान की एक विशेष चिंता अद्वितीय सामाजिक प्रभाव है जो कंप्यूटर विज्ञान अनुसंधान और तकनीकी प्रगति के साथ है। उदाहरण के लिए, 1980 के दशक में इंटरनेट के उद्भव के साथ, सॉफ्टवेयर डेवलपर्स को सूचना सुरक्षा, व्यक्तिगत गोपनीयता और सिस्टम विश्वसनीयता से संबंधित महत्वपूर्ण मुद्दों को संबोधित करने की आवश्यकता थी। इसके अलावा, यह सवाल कि क्या कंप्यूटर सॉफ्टवेयर बौद्धिक संपदा का गठन करता है और संबंधित प्रश्न "इसका मालिक कौन है?" सॉफ्टवेयर और संबंधित कलाकृतियों पर लागू होने वाले लाइसेंसिंग और लाइसेंसिंग मानकों के एक नए कानूनी क्षेत्र को जन्म दिया। ये चिंताएँ और अन्य कंप्यूटर विज्ञान के सामाजिक और व्यावसायिक मुद्दों का आधार बनते हैं, और वे ऊपर पहचाने गए लगभग सभी अन्य क्षेत्रों में दिखाई देते हैं।
तो, संक्षेप में, कंप्यूटर विज्ञान का अनुशासन निम्नलिखित 15 अलग-अलग क्षेत्रों में विकसित हुआ है:
एल्गोरिदम और जटिलता
वास्तुकला और संगठन
कम्प्यूटेशनल विज्ञान
ग्राफिक्स और विजुअल कंप्यूटिंग
ह्यूमन कंप्यूटर इंटरेक्शन
सूचना प्रबंधन
बुद्धिमान प्रणाली
नेटवर्किंग और संचार
ऑपरेटिंग सिस्टम
समानांतर और वितरित कंप्यूटिंग
प्लेटफार्म आधारित विकास
प्रोग्रामिंग की भाषाएँ
सुरक्षा और सूचना आश्वासन
सॉफ्टवेयर इंजीनियरिंग
सामाजिक और व्यावसायिक मुद्दे
कंप्यूटर विज्ञान की मजबूत गणितीय और इंजीनियरिंग जड़ें बनी हुई हैं। कंप्यूटर विज्ञान स्नातक, मास्टर और डॉक्टरेट डिग्री प्रोग्राम नियमित रूप से उत्तर-माध्यमिक शैक्षणिक संस्थानों द्वारा पेश किए जाते हैं, और इन कार्यक्रमों के लिए छात्रों को उनके फोकस के क्षेत्र के आधार पर उपयुक्त गणित और इंजीनियरिंग पाठ्यक्रम पूरा करने की आवश्यकता होती है। उदाहरण के लिए, सभी स्नातक कंप्यूटर विज्ञान की बड़ी कंपनियों को असतत गणित (तर्क, संयोजन और प्राथमिक ग्राफ सिद्धांत) का अध्ययन करना चाहिए। कई कार्यक्रमों के लिए छात्रों को अपने अध्ययन के आरंभ में कलन, सांख्यिकी, संख्यात्मक विश्लेषण, भौतिकी और इंजीनियरिंग के सिद्धांतों में पाठ्यक्रम पूरा करने की आवश्यकता होती है।
कंप्यूटर विज्ञान को पांच अलग-अलग अभी तक परस्पर संबंधित विषयों के परिवार के हिस्से के रूप में माना जाता है: कंप्यूटर इंजीनियरिंग, कंप्यूटर विज्ञान, सूचना प्रणाली, सूचना प्रौद्योगिकी और सॉफ्टवेयर इंजीनियरिंग। इस परिवार को सामूहिक रूप से कंप्यूटिंग के अनुशासन के रूप में जाना जाने लगा है। ये पांच विषय इस अर्थ में परस्पर जुड़े हुए हैं कि कंप्यूटिंग उनके अध्ययन का उद्देश्य है, लेकिन वे अलग हैं क्योंकि प्रत्येक का अपना शोध परिप्रेक्ष्य और पाठ्यचर्या फोकस है। (1991 से एसोसिएशन फॉर कंप्यूटिंग मशीनरी [एसीएम], आईईईई कंप्यूटर सोसाइटी [आईईईई-सीएस], और एसोसिएशन फॉर इंफॉर्मेशन सिस्टम्स [एआईएस] ने इन पांच परस्पर संबंधित विषयों और दिशानिर्देशों के वर्गीकरण को विकसित और अद्यतन करने के लिए सहयोग किया है जो शैक्षणिक संस्थान दुनिया भर में अपने स्नातक, स्नातक और अनुसंधान कार्यक्रमों के लिए उपयोग करें।)
कंप्यूटर विज्ञान के प्रमुख उपक्षेत्रों में कंप्यूटर वास्तुकला, प्रोग्रामिंग भाषाओं और सॉफ्टवेयर विकास का पारंपरिक अध्ययन शामिल है। हालांकि, उनमें कम्प्यूटेशनल साइंस (वैज्ञानिक डेटा मॉडलिंग के लिए एल्गोरिथम तकनीकों का उपयोग), ग्राफिक्स और विज़ुअलाइज़ेशन, मानव-कंप्यूटर इंटरैक्शन, डेटाबेस और सूचना प्रणाली, नेटवर्क और सामाजिक और व्यावसायिक मुद्दे शामिल हैं जो कंप्यूटर विज्ञान के अभ्यास के लिए अद्वितीय हैं। . जैसा कि स्पष्ट हो सकता है, इनमें से कुछ उपक्षेत्र अन्य आधुनिक क्षेत्रों, जैसे जैव सूचना विज्ञान और कम्प्यूटेशनल रसायन विज्ञान के साथ अपनी गतिविधियों में ओवरलैप करते हैं। ये ओवरलैप कंप्यूटर वैज्ञानिकों के बीच अपने क्षेत्र के कई अंतःविषय कनेक्शनों को पहचानने और उन पर कार्य करने की प्रवृत्ति का परिणाम हैं।
कंप्यूटर विज्ञान का विकास
1960 के दशक की शुरुआत में कंप्यूटर विज्ञान एक स्वतंत्र विषय के रूप में उभरा, हालांकि इसके अध्ययन का उद्देश्य इलेक्ट्रॉनिक डिजिटल कंप्यूटर का आविष्कार लगभग दो दशक पहले हुआ था। कंप्यूटर विज्ञान की जड़ें मुख्य रूप से गणित, इलेक्ट्रिकल इंजीनियरिंग, भौतिकी और प्रबंधन सूचना प्रणाली के संबंधित क्षेत्रों में निहित हैं।
कंप्यूटर के विकास में गणित दो प्रमुख अवधारणाओं का स्रोत है- यह विचार कि सभी सूचनाओं को शून्य और एक के अनुक्रम के रूप में दर्शाया जा सकता है और एक "संग्रहीत कार्यक्रम" की अमूर्त धारणा। द्विआधारी संख्या प्रणाली में, संख्याओं को द्विआधारी अंक 0 और 1 के अनुक्रम द्वारा उसी तरह दर्शाया जाता है जैसे कि परिचित दशमलव प्रणाली में संख्याओं को 0 से 9 तक के अंकों का उपयोग करके दर्शाया जाता है। सापेक्ष सहजता जिसके साथ दो राज्य (जैसे, उच्च और कम वोल्टेज) को इलेक्ट्रिकल और इलेक्ट्रॉनिक उपकरणों में महसूस किया जा सकता है, जो स्वाभाविक रूप से बाइनरी डिजिट या बिट की ओर ले जाते हैं, जो कंप्यूटर सिस्टम में डेटा स्टोरेज और ट्रांसमिशन की मूल इकाई बन जाता है।
इलेक्ट्रिकल इंजीनियरिंग सर्किट डिजाइन की मूल बातें प्रदान करता है - अर्थात्, यह विचार कि सर्किट में विद्युत आवेग इनपुट को मनमाना आउटपुट उत्पन्न करने के लिए बूलियन बीजगणित का उपयोग करके जोड़ा जा सकता है। (19वीं शताब्दी में विकसित बूलियन बीजगणित ने शून्य और इकाई के द्विआधारी इनपुट मूल्यों के साथ एक सर्किट डिजाइन करने के लिए एक औपचारिकता की आपूर्ति की [झूठी या सच, क्रमशः, तर्क की शब्दावली में] शून्य और आउटपुट के रूप में किसी भी वांछित संयोजन को प्राप्त करने के लिए।) सूचना के भंडारण और संचरण के लिए इलेक्ट्रॉनिक, चुंबकीय और ऑप्टिकल मीडिया के आविष्कार के साथ-साथ ट्रांजिस्टर का आविष्कार और सर्किट का लघुकरण, इलेक्ट्रिकल इंजीनियरिंग और भौतिकी में प्रगति के परिणामस्वरूप हुआ।
प्रबंधन सूचना प्रणाली, जिसे मूल रूप से डेटा प्रोसेसिंग सिस्टम कहा जाता है, ने प्रारंभिक विचार प्रदान किए, जिससे विभिन्न कंप्यूटर विज्ञान अवधारणाएं जैसे सॉर्टिंग, सर्चिंग, डेटाबेस, सूचना पुनर्प्राप्ति और ग्राफिकल यूजर इंटरफेस विकसित हुए। बड़े निगमों में ऐसे कंप्यूटर होते थे जो ऐसी जानकारी संग्रहीत करते थे जो व्यवसाय चलाने की गतिविधियों के लिए केंद्रीय थी- पेरोल, लेखा, सूची प्रबंधन, उत्पादन नियंत्रण, शिपिंग और प्राप्त करना।
कम्प्यूटेबिलिटी पर सैद्धांतिक कार्य, जो 1930 के दशक में शुरू हुआ, ने इन अग्रिमों को संपूर्ण मशीनों के डिजाइन के लिए आवश्यक विस्तार प्रदान किया; एक मील का पत्थर ब्रिटिश गणितज्ञ एलन ट्यूरिंग द्वारा ट्यूरिंग मशीन (एक सैद्धांतिक कम्प्यूटेशनल मॉडल जो शून्य और एक की एक श्रृंखला के रूप में दर्शाए गए निर्देशों को पूरा करता है) और मॉडल की कम्प्यूटेशनल शक्ति के उनके प्रमाण के लिए 1936 का विनिर्देश था। एक और सफलता थी conसंग्रहीत-प्रोग्राम कंप्यूटर की अवधारणा, आमतौर पर हंगेरियन अमेरिकी गणितज्ञ जॉन वॉन न्यूमैन को श्रेय दिया जाता है। ये कंप्यूटर विज्ञान क्षेत्र के मूल हैं जो बाद में वास्तुकला और संगठन के रूप में जाने गए।
1950 के दशक में, अधिकांश कंप्यूटर उपयोगकर्ता या तो वैज्ञानिक अनुसंधान प्रयोगशालाओं में या बड़े निगमों में काम करते थे। पूर्व समूह ने जटिल गणितीय गणना (जैसे, मिसाइल प्रक्षेपवक्र) बनाने में मदद करने के लिए कंप्यूटर का उपयोग किया, जबकि बाद वाले समूह ने बड़ी मात्रा में कॉर्पोरेट डेटा (जैसे, पेरोल और इन्वेंट्री) का प्रबंधन करने के लिए कंप्यूटर का उपयोग किया। दोनों समूहों ने जल्दी ही जान लिया कि शून्य और एक की मशीनी भाषा में प्रोग्राम लिखना व्यावहारिक या विश्वसनीय नहीं था। इस खोज से 1950 के दशक की शुरुआत में असेंबली भाषा का विकास हुआ, जो प्रोग्रामर को निर्देशों के लिए प्रतीकों का उपयोग करने की अनुमति देता है (उदाहरण के लिए, जोड़ने के लिए जोड़ें) और चर (जैसे, एक्स)। एक अन्य प्रोग्राम, जिसे एक असेंबलर के रूप में जाना जाता है, ने इन प्रतीकात्मक कार्यक्रमों को एक समकक्ष बाइनरी प्रोग्राम में अनुवादित किया, जिसके कदम कंप्यूटर उठा सकते हैं, या "निष्पादित" कर सकते हैं।
लिंकिंग लोडर के रूप में जाने जाने वाले अन्य सिस्टम सॉफ़्टवेयर तत्वों को असेंबल कोड के टुकड़ों को संयोजित करने और उन्हें कंप्यूटर की मेमोरी में लोड करने के लिए विकसित किया गया था, जहां उन्हें निष्पादित किया जा सकता था। कोड के अलग-अलग टुकड़ों को जोड़ने की अवधारणा महत्वपूर्ण थी, क्योंकि इसने सामान्य कार्यों को करने के लिए कार्यक्रमों के "पुस्तकालयों" को पुन: उपयोग करने की अनुमति दी थी। सॉफ्टवेयर इंजीनियरिंग नामक कंप्यूटर विज्ञान क्षेत्र के विकास में यह पहला कदम था।
बाद में 1950 के दशक में, असेंबली भाषा इतनी बोझिल पाई गई कि उच्च-स्तरीय भाषाओं (प्राकृतिक भाषाओं के करीब) के विकास ने आसान, तेज प्रोग्रामिंग का समर्थन करना शुरू कर दिया। फोरट्रान वैज्ञानिक प्रोग्रामिंग के लिए मुख्य उच्च-स्तरीय भाषा के रूप में उभरा, जबकि COBOL व्यावसायिक प्रोग्रामिंग के लिए मुख्य भाषा बन गई। इन भाषाओं ने अपने साथ अलग-अलग सॉफ़्टवेयर की आवश्यकता को पूरा किया, जिन्हें कंपाइलर कहा जाता है, जो उच्च-स्तरीय भाषा कार्यक्रमों को मशीन कोड में अनुवाद करते हैं। जैसे-जैसे प्रोग्रामिंग भाषाएं अधिक शक्तिशाली और सारगर्भित होती गईं, ऐसे कंपाइलर बनाना जो उच्च गुणवत्ता वाले मशीन कोड बनाते हैं और जो निष्पादन गति और भंडारण खपत के मामले में कुशल होते हैं, एक चुनौतीपूर्ण कंप्यूटर विज्ञान समस्या बन गई। उच्च स्तरीय भाषाओं का डिजाइन और कार्यान्वयन कंप्यूटर विज्ञान क्षेत्र के केंद्र में है जिसे प्रोग्रामिंग भाषा कहा जाता है।
1960 के दशक की शुरुआत में कंप्यूटर के बढ़ते उपयोग ने पहले ऑपरेटिंग सिस्टम के विकास के लिए प्रोत्साहन प्रदान किया, जिसमें सिस्टम-रेजिडेंट सॉफ़्टवेयर शामिल था जो स्वचालित रूप से इनपुट और आउटपुट को नियंत्रित करता था और "जॉब" नामक कार्यक्रमों का निष्पादन करता था। बेहतर कम्प्यूटेशनल तकनीकों की मांग ने संख्यात्मक तरीकों और उनके विश्लेषण में रुचि का पुनरुत्थान किया, एक ऐसी गतिविधि जो इतनी व्यापक रूप से विस्तारित हुई कि इसे कम्प्यूटेशनल विज्ञान के रूप में जाना जाने लगा।
1970 और 80 के दशक में वैज्ञानिक मॉडलिंग और अन्य दृश्य गतिविधियों दोनों के लिए शक्तिशाली कंप्यूटर ग्राफिक्स उपकरणों का उदय हुआ। (कम्प्यूटरीकृत ग्राफिकल उपकरणों को 1950 के दशक की शुरुआत में पेपर प्लॉट और कैथोड-रे ट्यूब [सीआरटी] स्क्रीन पर क्रूड इमेज के प्रदर्शन के साथ पेश किया गया था।) महंगे हार्डवेयर और सॉफ्टवेयर की सीमित उपलब्धता ने क्षेत्र को 1980 के दशक की शुरुआत तक बढ़ने से रोक रखा था, जब बिटमैप ग्राफिक्स के लिए आवश्यक कंप्यूटर मेमोरी (जिसमें एक छवि छोटे आयताकार पिक्सल से बनी होती है) अधिक किफायती हो गई। बिटमैप तकनीक, उच्च-रिज़ॉल्यूशन डिस्प्ले स्क्रीन और ग्राफिक्स मानकों के विकास के साथ, जो सॉफ्टवेयर को कम मशीन-निर्भर बनाते हैं, ने क्षेत्र के विस्फोटक विकास को जन्म दिया है। इन सभी गतिविधियों के लिए समर्थन कंप्यूटर विज्ञान के क्षेत्र में विकसित हुआ जिसे ग्राफिक्स और विजुअल कंप्यूटिंग के रूप में जाना जाता है।
इस क्षेत्र से निकटता से संबंधित सिस्टम का डिज़ाइन और विश्लेषण है जो विभिन्न कम्प्यूटेशनल कार्यों को करने वाले उपयोगकर्ताओं के साथ सीधे बातचीत करता है। 1980 और 90 के दशक के दौरान इन प्रणालियों का व्यापक उपयोग हुआ, जब उपयोगकर्ताओं के साथ लाइन-संपादित इंटरैक्शन को ग्राफिकल यूजर इंटरफेस (जीयूआई) द्वारा बदल दिया गया था। GUI डिज़ाइन, जिसे ज़ेरॉक्स द्वारा अग्रणी बनाया गया था और बाद में Apple (Macintosh) द्वारा और अंत में Microsoft (Windows) द्वारा उठाया गया था, महत्वपूर्ण है क्योंकि यह वह है जो लोग देखते हैं और जब वे एक कंप्यूटिंग डिवाइस के साथ बातचीत करते हैं। सभी प्रकार के उपयोगकर्ताओं के लिए उपयुक्त यूजर इंटरफेस का डिजाइन कंप्यूटर विज्ञान क्षेत्र में विकसित हुआ है जिसे मानव-कंप्यूटर इंटरैक्शन (एचसीआई) के रूप में जाना जाता है।
कंप्यूटर आर्किटेक्चर और संगठन का क्षेत्र भी नाटकीय रूप से विकसित हुआ है क्योंकि 1950 के दशक में पहले स्टोर-प्रोग्राम कंप्यूटर विकसित किए गए थे। तथाकथित टाइम-शेयरिंग सिस्टम 1960 के दशक में उभरा, जिससे कई उपयोगकर्ता एक ही समय में विभिन्न टर्मिनलों से प्रोग्राम चला सकते थे जो कंप्यूटर से हार्ड-वायर्ड थे। 1970 के दशक में पहले वाइड-एरिया कंप्यूटर नेटवर्क (WAN) का विकास हुआ और बड़ी दूरी से अलग किए गए कंप्यूटरों के बीच उच्च गति पर सूचना स्थानांतरित करने के लिए प्रोटोकॉल। जैसे-जैसे इन गतिविधियों का विकास हुआ, वे नेटवर्किंग और संचार नामक कंप्यूटर विज्ञान के क्षेत्र में शामिल हो गए। इस क्षेत्र की एक बड़ी उपलब्धि इंटरनेट का विकास था।
यह विचार किनिर्देश, साथ ही डेटा, को कंप्यूटर की मेमोरी में संग्रहीत किया जा सकता था, एल्गोरिदम के सैद्धांतिक व्यवहार के बारे में मौलिक खोजों के लिए महत्वपूर्ण था। अर्थात्, "क्या गणना की जा सकती है/नहीं की जा सकती है?" जैसे प्रश्न। इन अमूर्त विचारों का उपयोग करके औपचारिक रूप से संबोधित किया गया है। ये खोजें कंप्यूटर विज्ञान क्षेत्र की उत्पत्ति थीं जिन्हें एल्गोरिदम और जटिलता के रूप में जाना जाता था। इस क्षेत्र का एक महत्वपूर्ण हिस्सा डेटा संरचनाओं का अध्ययन और अनुप्रयोग है जो विभिन्न अनुप्रयोगों के लिए उपयुक्त हैं। डेटा संरचनाएं, ऐसी संरचनाओं में डेटा डालने, हटाने और खोजने के लिए इष्टतम एल्गोरिदम के विकास के साथ, कंप्यूटर वैज्ञानिकों की एक प्रमुख चिंता है क्योंकि वे कंप्यूटर सॉफ़्टवेयर में बहुत अधिक उपयोग किए जाते हैं, विशेष रूप से कंपाइलर, ऑपरेटिंग सिस्टम, फ़ाइल सिस्टम में, और खोज इंजन।
1960 के दशक में चुंबकीय डिस्क भंडारण के आविष्कार ने डिस्क पर एक मनमानी जगह पर स्थित डेटा तक तेजी से पहुंच प्रदान की। इस आविष्कार ने न केवल अधिक चतुराई से डिज़ाइन किए गए फ़ाइल सिस्टम बल्कि डेटाबेस और सूचना पुनर्प्राप्ति प्रणालियों के विकास के लिए भी नेतृत्व किया, जो बाद में इंटरनेट पर बड़ी मात्रा में और व्यापक प्रकार के डेटा को संग्रहीत करने, पुनर्प्राप्त करने और प्रसारित करने के लिए आवश्यक हो गया। कंप्यूटर विज्ञान के इस क्षेत्र को सूचना प्रबंधन के रूप में जाना जाता है।
कंप्यूटर विज्ञान अनुसंधान का एक और दीर्घकालिक लक्ष्य कंप्यूटिंग मशीनों और रोबोटिक उपकरणों का निर्माण है जो ऐसे कार्यों को अंजाम दे सकते हैं जिन्हें आमतौर पर मानव बुद्धि की आवश्यकता के रूप में माना जाता है। इस तरह के कार्यों में चलना, देखना, सुनना, बोलना, प्राकृतिक भाषा को समझना, सोचना और यहां तक कि मानवीय भावनाओं को प्रदर्शित करना भी शामिल है। बुद्धिमान प्रणालियों का कंप्यूटर विज्ञान क्षेत्र, जिसे मूल रूप से कृत्रिम बुद्धिमत्ता (एआई) के रूप में जाना जाता है, वास्तव में 1940 के दशक में पहले इलेक्ट्रॉनिक कंप्यूटरों से पहले का है, हालांकि कृत्रिम बुद्धिमत्ता शब्द 1956 तक नहीं गढ़ा गया था।
21वीं सदी के शुरुआती भाग में कंप्यूटिंग में तीन विकास- मोबाइल कंप्यूटिंग, क्लाइंट-सर्वर कंप्यूटिंग और कंप्यूटर हैकिंग- ने कंप्यूटर विज्ञान में तीन नए क्षेत्रों के उद्भव में योगदान दिया: प्लेटफॉर्म-आधारित विकास, समानांतर और वितरित कंप्यूटिंग, और सुरक्षा और सूचना आश्वासन। प्लेटफ़ॉर्म-आधारित विकास मोबाइल उपकरणों, उनके ऑपरेटिंग सिस्टम और उनके अनुप्रयोगों की विशेष आवश्यकताओं का अध्ययन है। समानांतर और वितरित कंप्यूटिंग आर्किटेक्चर और प्रोग्रामिंग भाषाओं के विकास से संबंधित है जो एल्गोरिदम के विकास का समर्थन करते हैं जिनके घटक समय और स्थान का बेहतर उपयोग करने के लिए एक साथ और अतुल्यकालिक (क्रमिक रूप से) चल सकते हैं। सुरक्षा और सूचना आश्वासन कंप्यूटिंग सिस्टम और सॉफ्टवेयर के डिजाइन से संबंधित है जो डेटा की अखंडता और सुरक्षा के साथ-साथ उस डेटा की विशेषता वाले व्यक्तियों की गोपनीयता की रक्षा करता है।
अंत में, अपने पूरे इतिहास में कंप्यूटर विज्ञान की एक विशेष चिंता अद्वितीय सामाजिक प्रभाव है जो कंप्यूटर विज्ञान अनुसंधान और तकनीकी प्रगति के साथ है। उदाहरण के लिए, 1980 के दशक में इंटरनेट के उद्भव के साथ, सॉफ्टवेयर डेवलपर्स को सूचना सुरक्षा, व्यक्तिगत गोपनीयता और सिस्टम विश्वसनीयता से संबंधित महत्वपूर्ण मुद्दों को संबोधित करने की आवश्यकता थी। इसके अलावा, यह सवाल कि क्या कंप्यूटर सॉफ्टवेयर बौद्धिक संपदा का गठन करता है और संबंधित प्रश्न "इसका मालिक कौन है?" सॉफ्टवेयर और संबंधित कलाकृतियों पर लागू होने वाले लाइसेंसिंग और लाइसेंसिंग मानकों के एक नए कानूनी क्षेत्र को जन्म दिया। ये चिंताएँ और अन्य कंप्यूटर विज्ञान के सामाजिक और व्यावसायिक मुद्दों का आधार बनते हैं, और वे ऊपर पहचाने गए लगभग सभी अन्य क्षेत्रों में दिखाई देते हैं।
तो, संक्षेप में, कंप्यूटर विज्ञान का अनुशासन निम्नलिखित 15 अलग-अलग क्षेत्रों में विकसित हुआ है:
एल्गोरिदम और जटिलता
वास्तुकला और संगठन
कम्प्यूटेशनल विज्ञान
ग्राफिक्स और विजुअल कंप्यूटिंग
ह्यूमन कंप्यूटर इंटरेक्शन
सूचना प्रबंधन
बुद्धिमान प्रणाली
नेटवर्किंग और संचार
ऑपरेटिंग सिस्टम
समानांतर और वितरित कंप्यूटिंग
प्लेटफार्म आधारित विकास
प्रोग्रामिंग की भाषाएँ
सुरक्षा और सूचना आश्वासन
सॉफ्टवेयर इंजीनियरिंग
सामाजिक और व्यावसायिक मुद्दे
कंप्यूटर विज्ञान की मजबूत गणितीय और इंजीनियरिंग जड़ें बनी हुई हैं। कंप्यूटर विज्ञान स्नातक, मास्टर और डॉक्टरेट डिग्री प्रोग्राम नियमित रूप से उत्तर-माध्यमिक शैक्षणिक संस्थानों द्वारा पेश किए जाते हैं, और इन कार्यक्रमों के लिए छात्रों को उनके फोकस के क्षेत्र के आधार पर उपयुक्त गणित और इंजीनियरिंग पाठ्यक्रम पूरा करने की आवश्यकता होती है। उदाहरण के लिए, सभी स्नातक कंप्यूटर विज्ञान की बड़ी कंपनियों को असतत गणित (तर्क, संयोजन और प्राथमिक ग्राफ सिद्धांत) का अध्ययन करना चाहिए। कई कार्यक्रमों के लिए छात्रों को अपने अध्ययन के आरंभ में कलन, सांख्यिकी, संख्यात्मक विश्लेषण, भौतिकी और इंजीनियरिंग के सिद्धांतों में पाठ्यक्रम पूरा करने की आवश्यकता होती है।
Nice
ReplyDelete