वस्तु-उन्मुख प्रोग्रामिंग भाषाओं के विकास का इतिहास। प्रोग्रामिंग भाषाओं का इतिहास। संरचित और मॉड्यूलर प्रोग्रामिंग

परिचय

प्रगति कंप्यूटर तकनीकएल्गोरिदम प्रोग्रामिंग भाषाओं को लिखने के लिए नए विविध साइन सिस्टम के उद्भव की प्रक्रिया को निर्धारित किया। ऐसी भाषा के प्रकट होने का अर्थ प्रोग्राम कोड को सरल बनाना है। हर दिन हमारी दुनिया अधिक मोबाइल और सूचनात्मक हो जाती है। अधिक से अधिक अधिक कंप्यूटरहमारे दैनिक जीवन में आते हैं और उनके साथ हमारे संचार को सुविधाजनक बनाने के लिए, विभिन्न प्रोग्रामिंग भाषाओं का उपयोग करके नए सॉफ्टवेयर बनाए जाते हैं। इस पाठ्यक्रम का उद्देश्य प्रोग्रामिंग के उद्भव के इतिहास और प्रोग्रामिंग भाषा बनाने के मूल सिद्धांतों और दृष्टिकोणों का अध्ययन करना है।

हालांकि, यह भाषा ज्यादातर कम्प्यूटेशनल गति और किसी भी प्रकार के स्वचालित कंपाइलर की कुख्यात कमी दोनों में कमियों से ग्रस्त थी। इस प्रकार, इस भाषा ने फिर से प्रोग्रामर को बारीकियों के कारण होने वाली झुंझलाहट के लिए जंजीर में डाल दिया। हार्डवेयर. यह महत्वपूर्ण विवरण आधुनिक की जड़ बन जाएगा आधुनिक भाषाएँप्रोग्राम जो मुख्य रूप से मानव-पठनीय भाषा से बाइनरी मशीन कोड में स्वचालित अनुवाद पर निर्भर करते हैं। प्रोग्रामिंग भाषाओं के विकास में यह महत्वपूर्ण क्षण निम्न-स्तरीय आदिम कोड और अधिक के बीच एक संक्रमण बिंदु के रूप में कार्य करता है कठिन भाषाअधिक उच्च स्तर.


भाग 1. प्रोग्रामिंग का इतिहास। प्रोग्रामिंग भाषाएं बनाते समय बुनियादी सिद्धांत और दृष्टिकोण

1.1 प्रोग्रामिंग इतिहास की शुरुआत

प्राचीन काल से, ऐसे उपकरण बनाने का प्रयास किया गया है जो गणना की प्रक्रिया को गति और सुविधा प्रदान करते हैं। यहां तक ​​​​कि प्राचीन यूनानियों और रोमनों ने भी खातों के समान एक उपकरण का उपयोग किया - अबेकस। ऐसे उपकरणों को प्राचीन पूर्व के देशों में भी जाना जाता था। XV सदी में। जर्मन वैज्ञानिकों डब्ल्यू। स्किकार्ड (1623), जी। लीबनिज़ (1673) और फ्रांसीसी वैज्ञानिक बी। पास्कल (1642) ने मैकेनिकल कंप्यूटिंग डिवाइस बनाए - प्रसिद्ध जोड़ने वाली मशीन के अग्रदूत। सदियों से कंप्यूटर में सुधार हुआ है। लेकिन साथ ही, "प्रोग्राम और प्रोग्रामिंग" की अवधारणा को लागू नहीं किया गया था।

यह भाषा मुख्य रूप से उच्च-स्तरीय गणनाओं के लिए विकसित की गई थी, जैसे कि आधिकारिक सैन्य और हवाई नेविगेशन परियोजनाओं के लिए आवश्यकताएं। इसलिए, यह भाषा बड़ी संख्या में गणितीय डेटा को संसाधित करने में कुशल थी। इन दिशाओं में से एक ऐसे कार्यक्रमों का निर्माण था जो व्यवसाय-उन्मुख लेनदेन को संसाधित कर सकते थे। हालाँकि, इस भाषा की अपनी डेटा प्रकार की सीमाएँ भी थीं, क्योंकि यह केवल संख्यात्मक और पाठ्य डेटा तक ही सीमित थी।

हालांकि, यह देखना आसान है कि लिस्प के अपरंपरागत वाक्यविन्यास ने इसे एक अत्यधिक विशिष्ट और विशिष्ट भाषा बना दिया है। "बेक्सु-नौर फॉर्म" के रूप में लिखा गया, इस कोडिंग सिस्टम में एक अच्छी तरह से संरचित व्याकरण का उपयोग शामिल था। यह वास्तव में इतना प्रभावशाली था कि अल्गोल भाषा को जल्द ही "नई भाषाओं को जन्म दिया" की भीड़ द्वारा "प्रतिस्थापित" किया जाएगा। उच्च स्तरीय प्रोग्रामिंग भाषाओं के विकास में गंभीर प्रारंभिक प्रयासों के बावजूद, इनका विकास प्राथमिक भाषाएंएक सीमित क्षेत्र के साथ औसत उपयोगकर्ता के जीवन के दौरान शायद ही इस क्षेत्र में प्रवेश किया हो।

XIX सदी की शुरुआत में। (1830), चार्ल्स बैबेज, एक अंग्रेजी वैज्ञानिक, कैम्ब्रिज विश्वविद्यालय में गणित के प्रोफेसर, फ्रांस में जनसंख्या जनगणना के प्रसंस्करण के परिणामों का विश्लेषण करते हुए, सैद्धांतिक रूप से गणना करने की प्रक्रिया की जांच की और कंप्यूटर वास्तुकला के मूल सिद्धांतों की पुष्टि की। एक विश्लेषणात्मक इंजन की परियोजना पर काम करना - "मशीन फॉर कैलकुलेटिंग डिफरेंसेस", सी। बैबेज ने आधुनिक कंप्यूटरों के संगठन और संचालन के कई विचारों और सिद्धांतों की भविष्यवाणी की, विशेष रूप से प्रोग्राम कंट्रोल के सिद्धांत और एक याद किए गए प्रोग्राम। विज्ञान के लिए सामान्य जुनून ने वैज्ञानिक और एडा लवलेस (1815--1852) को कई वर्षों का फलदायी सहयोग दिया। 1843 में उन्होंने व्याख्यान से मेनाब्रिया के लेख का अनुवाद किया

संरचित और मॉड्यूलर प्रोग्रामिंग

हालांकि, व्यावहारिक भाषाओं की एक नई श्रृंखला के आगमन के साथ यह बदल जाएगा। ये नई भाषाएं अपने साथ मानक कंप्यूटिंग अवधारणाओं की एक लहर लेकर आई हैं जो भाषा डिजाइन और परिनियोजन का एक अभिन्न अंग बन जाएंगी। कंप्यूटर प्रोग्रामिंग. हालांकि, इस भाषा में कुछ सीमाएं, जैसे "गतिशील सरणियों" की कमी, ने एक नई, अधिक उन्नत भाषा की खोज को प्रेरित किया।

एक्सेल में सूत्र बनाएं और उनका उपयोग करें

प्रोग्रामिंग समुदाय के दिल में यह बढ़ता हुआ शून्य अब तक की सबसे प्रभावशाली भाषाओं में से एक को जन्म देगा। "मॉड्यूलेशन" सीधे "ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग" प्रतिमान के नए कंप्यूटिंग आर्किटेक्चर में प्रकट हुआ था। इस प्रणाली के भीतर, कई "मॉड्यूल" में अद्वितीय "फ़ंक्शंस", समूहीकृत कथन शामिल होंगे जो एक विशिष्ट कार्य करते हैं जिसे कई कार्यक्रमों में आसानी से पुन: उपयोग किया जा सकता है। ये भाषाएं दो मुख्य शाखाओं के साथ एक एकल कम्प्यूटेशनल सिद्धांत पर केंद्रित थीं।

सी। बैबेज, जहां विस्तृत टिप्पणियों के रूप में (वॉल्यूम के संदर्भ में वे मुख्य पाठ से अधिक थे) उन्होंने विश्लेषणात्मक इंजन की प्रोग्रामिंग के मुख्य सिद्धांतों को तैयार किया। उसने बैबेज की मशीन के लिए पहला कार्यक्रम (1843) विकसित किया, उसे आविष्कार में उपयोग करने की आवश्यकता के बारे में आश्वस्त किया बायनरी सिस्टमदशमलव के बजाय रेकनिंग ने प्रोग्रामिंग सिद्धांतों को विकसित किया है जिसमें कुछ शर्तों के तहत कमांड के समान अनुक्रम को दोहराना शामिल है। यह वह थी जिसने "कार्य कक्ष" और "चक्र" शब्दों का प्रस्ताव दिया था।

ये "वर्ग" "ऑब्जेक्ट्स" के लिए टेम्प्लेट के रूप में काम करते हैं, जो मानकीकृत टेम्पलेट के विनिमेय उदाहरण हैं। उदाहरण के लिए, एक कार को "वर्ग" माना जा सकता है जबकि किसी दी गई कार को "ऑब्जेक्ट" माना जा सकता है क्योंकि इसमें विभिन्न गुण और व्यवहार होते हैं। इन ऑब्जेक्ट्स की विशेषताओं को इंस्टेंस वेरिएबल्स नामक विशेष चर के भीतर परिभाषित किया जाता है, जबकि किसी दिए गए "ऑब्जेक्ट" के विशिष्ट व्यवहार को उदाहरण के "विधियों" के रूप में परिभाषित किया जाता है।

मॉड्यूलर "ऑब्जेक्ट्स" के इस उपयोग ने प्रोग्रामर को जटिल कार्यक्रमों के लिए व्यक्तिगत बयानों को फिर से परिभाषित करने की दोहराव प्रक्रिया से दूर होने की अनुमति दी, और इससे भी महत्वपूर्ण बात यह है कि उन्हें शाब्दिक वाक्यविन्यास पर कम और व्यावहारिक अनुप्रयोगों पर अधिक ध्यान केंद्रित करने की अनुमति दी, जो ये भाषाएं डिजाइन के लिए उपयोग कर सकती हैं। . चार्ल्स बैबेज की विश्लेषणात्मक इंजन की क्रांतिकारी अवधारणा द्वारा शुरू की गई, कंप्यूटिंग के क्षेत्र में आज जहां है, उसके करीब पहुंचने के लिए नाटकीय परिवर्तन हुए हैं।

ए। लवलेस ने दो समीकरणों की एक प्रणाली को हल करने के लिए पहले कार्यक्रमों को संकलित किया और एक जटिल एल्गोरिदम का उपयोग करके बर्नौली संख्याओं की गणना की और सुझाव दिया कि समय के साथ विश्लेषणात्मक इंजन संगीत कार्यों की रचना करेगा, चित्र खींचेगा और व्यावहारिक और वैज्ञानिक गतिविधियों में उपयोग किया जाएगा। समय ने पूर्वानुमानों की शुद्धता और सटीकता की पुष्टि की है। अपने काम के साथ, ए लवलेस ने रखा सैद्धांतिक आधारप्रोग्रामिंग और सही मायने में इसे दुनिया का पहला प्रोग्रामर और वैज्ञानिक प्रोग्रामिंग का संस्थापक माना जाता है।

इस परिवर्तन को सुविधाजनक बनाने में, प्रोग्रामिंग भाषाओं ने प्राकृतिक मानव भाषा को बिट्स और बाइट्स में अनुवाद करके एक अभिन्न भूमिका निभाई है जिसे कंप्यूटर समझ सकते हैं। हालाँकि, साथ ही, इन प्रोग्रामिंग भाषाओं में अपने स्वयं के कठोर परिवर्तन हुए हैं। प्रोग्रामिंग भाषाओं के माध्यम से उल्लेखनीय यात्रा को समझकर, हम कंप्यूटर विज्ञान की गतिशील और विविध जड़ों को बेहतर ढंग से समझ सकते हैं, एक ऐसा क्षेत्र जिसमें वैज्ञानिक कंप्यूटिंग से लेकर डेटा माइनिंग तक के अनुप्रयोग हो सकते हैं। मोबाइल एप्लीकेशनऔर इसके बाद में।

मशीन कोड। कोडांतरक

फर्ग्यूसन, एंड्रयू। "कंप्यूटर प्रोग्रामिंग भाषाओं का इतिहास"। ब्राउन यूनिवर्सिटी - कंप्यूटर साइंस। गोश, सेबस्टियन। " लघु कथाप्रोग्रामिंग की भाषाएँ"। भाषण। तकनीकी विश्वविद्यालयम्यूनिख. क्या यह सच है कि प्रोग्रामर अभी भी कभी-कभी उपयोग करते हैं बाइनरी कोडकार्यक्रम के कुछ हिस्सों को लिखने के लिए?

1854 में, अंग्रेजी गणितज्ञ जॉर्ज बूले ने "लॉज़ ऑफ़ थॉट" पुस्तक प्रकाशित की, जिसमें उन्होंने प्रस्तावित बीजगणित - बूलियन बीजगणित विकसित किया। 80 के दशक की शुरुआत में इसके आधार पर। 19 वी सदी रिले-संपर्क सर्किट के सिद्धांत और जटिल असतत ऑटोमेटा के डिजाइन का निर्माण किया गया था। तर्क के बीजगणित का कंप्यूटर प्रौद्योगिकी के विकास पर एक बहुआयामी प्रभाव पड़ा है, जटिल सर्किट के विकास और विश्लेषण के लिए एक उपकरण होने के नाते, बड़ी संख्या में तार्किक तत्वों को अनुकूलित करने के लिए एक उपकरण, जिनमें से कई हजारों आधुनिक कंप्यूटर होते हैं।

क्या प्रोग्रामिंग भाषा परीक्षण ऑफ़लाइन कंप्यूटिंग से संबंधित है? आप तंत्रिका नेटवर्क से जुड़े प्रोग्रामों के कार्य का परीक्षण कैसे करते हैं? क्या प्रोग्राम परीक्षण प्रत्येक प्रोग्रामिंग भाषा के बीच भिन्न होता है, या कार्यक्षमता परीक्षण के लिए कोई मानक विधि है?

संरचनात्मक और वस्तु-उन्मुख प्रोग्रामिंग विधियों को लागू करना

क्या सॉफ़्टवेयर सत्यापन भी रक्षात्मक प्रोग्रामिंग का अभ्यास करता है? वहाँ सचमुच हजारों प्रोग्रामिंग भाषाएँ हैं, जिनमें से कई इतिहास में खो गई हैं। प्रोग्रामिंग भाषाओं का यह इतिहास कंप्यूटर हार्डवेयर, कंप्यूटर के विकास की भी चर्चा करता है ऑपरेटिंग सिस्टम, खेल और प्रौद्योगिकियां। खेलों को शामिल किया जाता है क्योंकि अक्सर कंप्यूटर हार्डवेयर और सॉफ्टवेयर प्रौद्योगिकी में प्रमुख प्रगति पहले खेलों में दिखाई देती है।

सी. बैबेज के विचारों को अमेरिकी वैज्ञानिक जी. होलेरिथ द्वारा लागू किया गया, जिन्होंने निर्मित गणना और विश्लेषणात्मक मशीन और पंच कार्ड का उपयोग करते हुए, तीन वर्षों में 1890 की अमेरिकी जनगणना के परिणामों को संसाधित किया। किसी कार में पहली बार बिजली का प्रयोग किया गया। 1896 में, होलेरिथ ने कंप्यूटिंग पंचिंग मशीन और पंच कार्ड के उत्पादन के लिए एक फर्म की स्थापना की।

प्रोग्रामिंग इतिहास की शुरुआत

एंटीकाइथेरा तंत्र ने मिस्र के कैलेंडर में राशि चक्र के माध्यम से सूर्य और चंद्रमा की स्थिति की गणना करने के लिए 37 गियर की एक प्रणाली का उपयोग किया, और संभवतः भविष्य या अतीत में किसी भी समय पुरातनता में ज्ञात निश्चित तारे और पांच ग्रह भी। अंतर की गणना करने के लिए गियर सिस्टम ने कोणीय वेगों को जोड़ा और घटाया। एंटीकाइथेरा तंत्र ग्रहणों की सटीक भविष्यवाणी कर सकता है और महत्वपूर्ण नेताओं के लिए सटीक ज्योतिषीय चार्ट तैयार कर सकता है।

इस डिवाइस को एक अंतर से अलग किया गया था, जिसे बाद में इस्तेमाल किया गया था नया ज़माना 20वीं सदी के मध्य में एनालॉग कंप्यूटर बनाने के लिए। यह महत्वपूर्ण कार्य सबसे पुरानी जीवित भाषाई पुस्तक है जो मेटारूल्स, परिवर्तन और पुनरावर्तन के विचार को प्रस्तुत करती है, जिनमें से सभी का कंप्यूटर विज्ञान में महत्वपूर्ण अनुप्रयोग है।

1936 में, अंग्रेजी गणितज्ञ ए। ट्यूरिंग ने एक एल्गोरिदम की सहज अवधारणा के औपचारिक शोधन के रूप में ट्यूरिंग मशीन की अवधारणा को पेश किया। वैज्ञानिक ने दिखाया कि एक निश्चित अर्थ में किसी भी एल्गोरिदम को ट्यूरिंग मशीन पर लागू किया जा सकता है, और इसलिए एक सार्वभौमिक कंप्यूटर बनाने की संभावना साबित हुई। दोनों मशीनों को हल की जा रही समस्या के प्रारंभिक डेटा और इसे हल करने के लिए एक कार्यक्रम के साथ समान रूप से आपूर्ति की जा सकती है। ट्यूरिंग मशीन को मेनफ्रेम कंप्यूटर का आदर्श मॉडल माना जा सकता है।

इंका ने विशाल करघों का उपयोग करके डिजिटल कंप्यूटर बनाए जो रस्सी में बंधे और बिना बंधे हुए थे। इन कंप्यूटरों ने केंद्र सरकार को अपने विशाल साम्राज्य के कृषि और आर्थिक विवरणों पर नज़र रखने की अनुमति दी। स्पैनिश ने इंका कंप्यूटरों में से एक को छोड़कर सभी को नष्ट कर दिया, इस विश्वास में कि मशीनें विस्तृत जानकारी प्रदान करने का एकमात्र तरीका शैतानी भविष्यवाणी उपकरणों के माध्यम से थीं। पर पिछले साल कापुरातत्वविदों ने निर्धारित किया है कि एक शेष उपकरण, हालांकि खंडहर में, स्पष्ट रूप से एक कंप्यूटर था।

40 के दशक में। 20 वीं सदी कंप्यूटर के यांत्रिक मौलिक आधार को विद्युत और इलेक्ट्रॉनिक उपकरणों द्वारा प्रतिस्थापित किया जाने लगा। जर्मनी में K. Zuse (Ts-3, 1941) और संयुक्त राज्य अमेरिका में हार्वर्ड विश्वविद्यालय के प्रोफेसर G. Aiken (MARK-1, 1944) के मार्गदर्शन में पहली इलेक्ट्रोमैकेनिकल मशीनों का निर्माण किया गया था। पहली इलेक्ट्रॉनिक मशीन संयुक्त राज्य अमेरिका में पेंसिल्वेनिया विश्वविद्यालय के डॉ जे मौचली और स्नातक छात्र जे। एक्सर्ट (ENIAC - इलेक्ट्रॉनिक संख्यात्मक इंटीग्रेटर और कैलकुलेटर, 1946) के नेतृत्व में इंजीनियरों के एक समूह द्वारा बनाई गई थी। 1949 में, EDSAC को इंग्लैंड में बनाया गया था - स्वचालित प्रोग्राम नियंत्रण, आंतरिक भंडारण और आधुनिक कंप्यूटर के अन्य आवश्यक घटकों के साथ पहली मशीन।

चार्ल्स बैबेज ने डिफरेंस इंजन और एनालिटिक इंजन बनाया, जिसे अक्सर पहला आधुनिक कंप्यूटर माना जाता है। पहली प्रोग्रामर लेडी एडा थीं, जिनके लिए एडा प्रोग्रामिंग लैंग्वेज का नाम रखा गया है। विश्लेषण इंजन को जैक्वार्ड पंच कार्ड के साथ प्रोग्राम किया गया होगा। बैबेज ने डिफरेंशियल इंजन डिजाइन किया। लेडी एडा लवलेस ने एक विश्लेषणात्मक इंजन के लिए एक प्रोग्राम लिखा था जिसने बर्नौली संख्याओं के अनुक्रम की सही गणना की थी, लेकिन वह कभी भी अपने प्रोग्राम का परीक्षण करने में सक्षम नहीं थी क्योंकि मशीन का निर्माण नहीं किया गया था।

जॉर्ज बूले ने पेश किया जिसे अब बूलियन बीजगणित कहा जाता है। आधुनिक इलेक्ट्रॉनिक में जटिल सर्किट बनाने के लिए गणित की यह शाखा आवश्यक थी डिजिटल कंप्यूटर. यह विचार प्रयोग क्वांटम भौतिकी और सूचना सिद्धांत में महत्वपूर्ण भूमिका निभाता है।

कंप्यूटर के लॉजिक सर्किट 1940 के दशक के अंत में विकसित किए गए थे। जे. वॉन न्यूमैन, जी. गोल्डस्टीन और ए.वी. बर्क्स। इस काम में एक विशेष योगदान अमेरिकी गणितज्ञ जॉन वॉन न्यूमैन ने दिया, जिन्होंने ENIAC के निर्माण में भाग लिया। उन्होंने मशीन मेमोरी में कंट्रोल कमांड और डेटा को स्टोर करने का विचार प्रस्तावित किया और आधुनिक कंप्यूटर बनाने के लिए बुनियादी सिद्धांतों को तैयार किया। स्टोर-प्रोग्राम कंप्यूटर पहले बनाए गए कंप्यूटरों की तुलना में तेज़ और अधिक लचीले साबित हुए।

सबसे सफल शुरुआती कंप्यूटरों में से कुछ एनालॉग कंप्यूटर थे, जो जटिल कैलकुलस समस्याओं को जल्दी से करने में सक्षम थे। लेकिन कंप्यूटिंग का वास्तविक भविष्य डिजिटल था, एनालॉग नहीं। टेलीफोन और टेलीग्राफ स्विचिंग नेटवर्क के लिए उपयोग की जाने वाली तकनीक और गणित के आधार पर, शोधकर्ताओं ने पहले इलेक्ट्रॉनिक डिजिटल कंप्यूटर के निर्माण के बारे में निर्धारित किया।

वॉन न्यूमैन के महत्वपूर्ण योगदान के बारे में जानकारी नीचे दी गई है। सिद्धांत: वोल्फगैंग पाउली ने पाउली मैट्रिसेस का आविष्कार किया, जो क्वांटम कंप्यूटिंग में पाउली-एक्स, पाउली-जे और पाउली -3 समाधानों का आधार हैं। शैनन संचार के गणितीय सिद्धांत को प्रकाशित करता है, जिसमें शैनन का स्रोत कोड कोडिंग प्रमेय भी शामिल है, जो डेटा को संपीड़ित करने की सीमा निर्धारित करता है।

1951 में, UNIVAC इलेक्ट्रॉनिक मशीनों (सार्वभौमिक स्वचालित कंप्यूटर) का पहला धारावाहिक उत्पादन संयुक्त राज्य अमेरिका में शुरू किया गया था। उसी समय, IBM ने IBM / 701 मशीन का बड़े पैमाने पर उत्पादन शुरू किया।

USSR में, दिसंबर 1948 में आविष्कार किए गए कंप्यूटर के पहले लेखक I. S. Bruk और B. I. Rameev हैं। और संरक्षित कार्यक्रम वाला पहला सोवियत कंप्यूटर 1951 में एस ए लेबेदेव (एमईएसएम - एक छोटी इलेक्ट्रॉनिक गणना मशीन) के नेतृत्व में बनाया गया था। 1953 में, सोवियत संघ में मशीनों का धारावाहिक उत्पादन शुरू हुआ, जिनमें से पहले BESM-1, स्ट्रेला थे।

इस प्रोग्रामिंग भाषा को मैन्युअल रूप से मशीन कोड में संकलित किया गया है। बाद में अन्य कंप्यूटरों पर उपयोग किया जाता है। ग्रेस हूपर उस समय रेमिंगटन रैंड में काम कर रही थीं। पहचानकर्ता छह वर्णों तक सीमित थे। गणितीय अभिव्यक्तियों की एक सुंदर प्रस्तुति, साथ ही अपेक्षाकृत आसान इनपुट और आउटपुट।

इसके विकास का लक्ष्य एक ऐसी प्रोग्रामिंग भाषा बनाना था जो सीखने में आसान हो, अनुप्रयोगों की एक विस्तृत श्रृंखला के लिए उपयुक्त हो, मशीन से स्वतंत्र हो और नियमित बीजगणितीय संकेतन के समान जटिल गणितीय अभिव्यक्तियों के निर्माण की अनुमति दे। हालांकि यह अभी भी एक असेंबली भाषा के रूप में लगभग कुशल है।

डिजिटल प्रोग्राम-नियंत्रित मशीनों के आगमन के साथ, अनुप्रयुक्त गणित के एक नए क्षेत्र का जन्म हुआ - प्रोग्रामिंग। विज्ञान और पेशे के क्षेत्र के रूप में, यह 1950 के दशक में उभरा। प्रारंभ में, प्रोग्राम मशीनी भाषाओं (मशीन कोड) में मैन्युअल रूप से लिखे गए थे। कार्यक्रम बोझिल थे, उनकी डिबगिंग बहुत समय लेने वाली थी। कार्यक्रमों के संकलन और डिबगिंग के लिए तकनीकों और विधियों को सरल बनाने के लिए, निमोनिक कोड बनाए गए जो संरचना में मशीनी भाषा के करीब हैं और प्रतीकात्मक पते का उपयोग करते हैं। असेंबलर्स ने मेमोनिक कोड में लिखे गए प्रोग्राम का मशीनी भाषा में अनुवाद किया और मैक्रोज़ के साथ विस्तारित, आज भी उपयोग किया जाता है। इसके अलावा, ऑटोकोड बनाए गए जिनका उपयोग विभिन्न मशीनों पर किया जा सकता है और कार्यक्रमों के आदान-प्रदान की अनुमति दी जा सकती है। ऑटोकोड विज्ञान या इंजीनियरिंग जैसी विशिष्ट समस्याओं को हल करने के लिए छद्म-आदेशों का एक समूह है। ऐसे कार्यों के लिए मानक कार्यक्रमों का एक विकसित पुस्तकालय है।

भाषा ग्रेस मरे हूपर से प्राप्त हुई थी। संकलन के पहले भाग ने लापता अल्पविराम निदान दिया। दूसरा प्रयास सफल रहा। लॉन्च के जवाब में अमेरिकी सरकार ने उन्नत अध्ययन समूह बनाया सोवियत संघस्पुतनिक। भाषा की एक सैद्धांतिक परिभाषा प्रकाशित की जाती है।

कृत्रिम बुद्धि में रुचि जो पहली बार भाषाविदों के बीच में दिखाई दी, वह प्राकृतिक भाषा प्रसंस्करण में थी, जबकि मनोवैज्ञानिक मानव सूचना मॉडलिंग और निष्कर्षण में रुचि रखते थे। गणितज्ञ एक प्रमेय को सिद्ध करने की प्रक्रिया को स्वचालित करने में अधिक रुचि रखते थे। इन सभी अनुप्रयोगों के बीच एक सामान्य आवश्यकता कंप्यूटर को सूचियों में प्रतीकात्मक डेटा को संसाधित करने की अनुमति देने की एक विधि थी।

1950 के दशक के अंत तक। कंप्यूटर डिजाइन का मुख्य तत्व इलेक्ट्रॉन ट्यूब थे ( पहली पीढ़ी) इस अवधि के दौरान, प्रोग्रामिंग की विचारधारा और प्रौद्योगिकी का विकास अमेरिकी वैज्ञानिकों जे। वॉन न्यूमैन की उपलब्धियों के कारण हुआ, जिन्होंने कंप्यूटर बनाने के बुनियादी सिद्धांत तैयार किए, और जे। बैकस, जिनके नेतृत्व में फोरट्रान (फॉर्मूला ट्रांसलेशन) था। 1954 में बनाया गया - उच्च स्तर की पहली प्रोग्रामिंग भाषा, जिसका उपयोग आज तक विभिन्न संशोधनों में किया जाता है। इसलिए, 1965 में डार्टमाउथ कॉलेज में डी. कामेनी और टी. कर्ट्ज़ ने फोरट्रान - बेसिक का एक सरलीकृत संस्करण विकसित किया। 1966 में, अमेरिकन स्टैंडर्ड्स एसोसिएशन (एएसए) की एक समिति ने दो भाषा मानकों का विकास किया: फोरट्रान और बेसिक फोरट्रान। भाषा के और संशोधनों का भी उपयोग किया जाता है (जैसे 1970, 1990)।

उन्हें प्रतीकात्मक गणना करने के लिए आवश्यकताओं का एक सेट बनाने के लिए काम पर रखा गया था। पहला प्रयास बीजीय व्यंजकों का विभेदन है। इस प्रारंभिक प्रयोग ने भाषा के लिए आवश्यकताओं की एक सूची तैयार की, विशेष रूप से रिकर्सन और सशर्त।

उनकी प्रेरणा कृत्रिम बुद्धि के लिए एक सूची प्रसंस्करण भाषा विकसित करना था। नील ज़ीरिंग, गाइड टू लैंग्वेज, मिशिगन विश्वविद्यालय। परिवर्तनीय घोषणाओं का उपयोग शायद ही कभी किया जाता है। . अनुभागों को अनुभागों में विभाजित किया गया है। व्यवसाय प्रबंधकों के लिए कार्यक्रमों को पढ़ना आसान बनाने के लिए डिज़ाइन की गई विस्तृत शैली पर बल दिया गया।

इलेक्ट्रॉनिक्स और माइक्रोइलेक्ट्रॉनिक के क्षेत्र में उपलब्धियों ने कंप्यूटर तत्व आधार को और अधिक उन्नत के साथ बदलना संभव बना दिया। 1950 के दशक के अंत में भारी वैक्यूम ट्यूबों को अर्धचालक (लघु ट्रांजिस्टर) द्वारा प्रतिस्थापित किया जाता है। दूसरी पीढ़ी के कंप्यूटर दिखाई देते हैं; फिर, लगभग 10 साल बाद, एकीकृत परिपथों पर तीसरी पीढ़ी के कंप्यूटर; एक और 10 वर्षों में - बड़े एकीकृत सर्किट (LSI) पर चौथी पीढ़ी के कंप्यूटर। 1990 के दशक में जापान में। पांचवीं पीढ़ी के कंप्यूटरों की परियोजनाओं को लागू किया गया, जिसमें कृत्रिम बुद्धि और बायोइलेक्ट्रॉनिक के क्षेत्र में उपलब्धियों का इस्तेमाल किया गया। अगर 1960 के दशक की सर्वश्रेष्ठ घरेलू मशीनों में से एक की रैंडम एक्सेस मेमोरी (RAM) की मात्रा। 1958 में एसए लेबेदेव के नेतृत्व में बनाए गए एम -20 में 4096 शब्द (8 केबी) और प्रति सेकंड 20 हजार ऑपरेशन की गति थी, आधुनिक पर्सनल कंप्यूटरों में दसियों एमबी की रैम और सैकड़ों लाखों की गति होती है। प्रति सेकंड संचालन जो आपको सबसे जटिल समस्याओं को हल करने की अनुमति देता है।

1953 में, एए ल्यपुनोव ने एक ऑपरेटर प्रोग्रामिंग पद्धति का प्रस्ताव रखा, जिसमें प्रोग्रामिंग को स्वचालित करना शामिल था, और समस्या को हल करने के लिए एल्गोरिथ्म को ऑपरेटरों के एक सेट के रूप में प्रस्तुत किया गया था जो समस्या की तार्किक योजना बनाते हैं। योजनाओं ने एक कार्यक्रम को संकलित करने की बोझिल प्रक्रिया को अलग करना संभव बना दिया, जिसके कुछ हिस्सों को औपचारिक नियमों के अनुसार संकलित किया गया, और फिर एक पूरे में जोड़ दिया गया। 1954 में यूएसएसआर में ऑपरेटर विधि के विचारों का परीक्षण करने के लिए, पहला प्रोग्रामिंग प्रोग्राम PP-1 विकसित किया गया था, और 1955 में एक और अधिक उन्नत - PP-2। 1956 में, बीईएसएम सॉफ्टवेयर विकसित किया गया था, 1957 में - पीएसवी, 1958 में - स्ट्रेला मशीन के लिए।

संयुक्त राज्य अमेरिका में 1954 में, बीजगणितीय दृष्टिकोण को लागू किया जाने लगा, संयोग से, संक्षेप में, ऑपरेटर विधि के साथ। 1956 में, IBM Corporation ने IBM/704 कंप्यूटर पर स्वचालित प्रोग्रामिंग के लिए यूनिवर्सल सॉफ्टवेयर Fortran विकसित किया।

इस अवधि के दौरान, अनुभव और सैद्धांतिक समझ के संचय के साथ, प्रोग्रामिंग भाषाओं में सुधार हुआ। 1958-1960 में। ALGOL यूरोप में बनाया गया था, जिसने Algol जैसी भाषाओं की एक पूरी श्रृंखला को जन्म दिया: Algol W, (1967), Algol 68, Pascal (N. Wirth, 1970), C (D. Ritchie and B. Kernighan, 1972) , अदा (जे. इश्बिया के नेतृत्व में, 1979), सी++ (1983)।
1961-1962 में मैसाचुसेट्स इंस्टीट्यूट ऑफ टेक्नोलॉजी में जे। मैककार्थी ने कार्यात्मक प्रोग्रामिंग भाषा लिस्प बनाई, जिसने जे। वॉन न्यूमैन द्वारा प्रस्तावित प्रोग्रामिंग में वैकल्पिक दिशाओं में से एक को खोला।

1970 के दशक की शुरुआत में प्रोग्रामिंग ऑटोमेशन के लिए 700 से अधिक उच्च-स्तरीय भाषाएँ और लगभग 300 कंपाइलर थे।

1.2 संरचित और मॉड्यूलर प्रोग्रामिंग

1965 में, इटालियंस बोहम और जैकोपिनी ने बुनियादी एल्गोरिथम तत्वों के रूप में निम्नलिखित, ब्रांचिंग और लूप का उपयोग करने का प्रस्ताव रखा। लगभग उसी समय, डच वैज्ञानिक ई। डिजस्ट्रा, जिन्होंने संरचित प्रोग्रामिंग की नींव रखी, इसी तरह के निष्कर्ष पर आए। 1970 के दशक में इस पद्धति ने आकार लिया, और आईबीएम ने विकास में इसके उपयोग की घोषणा की सॉफ़्टवेयर"उन्नत प्रोग्रामिंग विधियाँ", जिनमें से एक घटक टॉप-डाउन संरचित प्रोग्रामिंग की तकनीक थी, जो निम्नलिखित पर आधारित है:

  • एक जटिल कार्य को सरल, कार्यात्मक रूप से नियंत्रित कार्यों में विभाजित किया जाता है, प्रत्येक कार्य में एक इनपुट और एक आउटपुट होता है; कार्यक्रम के नियंत्रण प्रवाह में प्राथमिक कार्यात्मक उप-कार्यों का एक सेट होता है;
  • नियंत्रण संरचनाएं सरल हैं, अर्थात, तार्किक कार्य में काफी सरल नियंत्रण संरचनाओं का एक न्यूनतम, कार्यात्मक रूप से पूर्ण सेट शामिल होना चाहिए;
  • कार्यक्रम को चरणों में विकसित किया जाता है, प्रत्येक चरण में सीमित संख्या में सटीक रूप से निर्धारित कार्यों को हल किया जाता है।

टॉप-डाउन डेवलपमेंट, स्ट्रक्चर्ड कोडिंग और एंड-टू-एंड कंट्रोल के लिए स्पष्ट रूप से स्पष्ट नींव ने सॉफ्टवेयर विकास के औद्योगिक तरीकों को स्थानांतरित करना संभव बना दिया।

विकास मिला हैमॉड्यूलर प्रोग्रामिंग , जिसका आधार इस प्रकार है:

* स्वतंत्र उप-कार्यों में कार्य का कार्यात्मक अपघटन (विभाजन) - केवल इनपुट और आउटपुट डेटा द्वारा जुड़े मॉड्यूल;

* मॉड्यूल एक "ब्लैक बॉक्स" है जो आपको विभिन्न प्रोग्रामिंग भाषाओं में एक परियोजना के कार्यक्रमों के कुछ हिस्सों को विकसित करने की अनुमति देता है, और फिर, लिंकिंग टूल का उपयोग करके, उन्हें एक एकल बूट मॉड्यूल में संयोजित करता है;

* कार्य के सभी मॉड्यूल के उद्देश्य और उनके इष्टतम संयोजन की स्पष्ट समझ होनी चाहिए;

* टिप्पणियों का उपयोग करते हुए, सभी मॉड्यूल चर के उद्देश्य का वर्णन किया जाना चाहिए।

1970-1980 के दशक की अवधि के दौरान। सैद्धांतिक अनुसंधान के विकास ने प्रोग्रामिंग को एक स्वतंत्र के रूप में औपचारिक रूप दिया है वैज्ञानिक अनुशासनसॉफ्टवेयर विकास (एसडब्ल्यू) के तरीकों से निपटना।

प्रोग्रामर और व्यवसायी बिल गेट्स (1955 में गेट्स विलियम हेनरी, पृष्ठ) ने औद्योगिक प्रोग्रामिंग के विकास के इतिहास में एक महत्वपूर्ण भूमिका निभाई। गेट्स और उनके हाई स्कूल के दोस्त पॉल एलन ने ट्रैफिक एनालिसिस कंपनी क्रैप-ओ-डेट की स्थापना की और डेटा को प्रोसेस करने के लिए इंटेल के प्रसिद्ध माइक्रोप्रोसेसरों में से पहला, 8008 माइक्रोप्रोसेसर के साथ कंप्यूटर का इस्तेमाल किया। हार्वर्ड विश्वविद्यालय में एक छात्र के रूप में, 1975 में, एलन के साथ, उन्होंने अल्टेयर कंप्यूटर (M1TS कंपनी) के लिए एक दुभाषिया लिखा, एक प्रोग्राम जो एक प्रोग्रामिंग भाषा से एक मशीन कोड भाषा में अनुवाद करता है।

व्यावसायिक प्रोग्रामिंग प्रौद्योगिकी के स्तर पर पहुंच गई है।

सॉफ्टवेयर विकास के तरीके संश्लेषित करते हैं:

* लागत का अनुमान लगाने और समाधान चुनने के लिए इंजीनियरिंग गणना के तरीके;

* एल्गोरिदम तैयार करने के लिए गणितीय तरीके;

* प्रणाली के लिए आवश्यकताओं को निर्धारित करने, स्थितियों के लिए लेखांकन, कार्य और पूर्वानुमान के आयोजन के लिए प्रबंधन के तरीके।

1.3 वस्तु-उन्मुख प्रोग्रामिंग

1990 के दशक की शुरुआत में संरचित प्रोग्रामिंग को बदल दिया। आयाऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग -- OOP. इसे एक नए स्तर के मॉड्यूलर प्रोग्रामिंग के रूप में देखा जा सकता है, जब प्रक्रियाओं और डेटा के बड़े पैमाने पर यादृच्छिक, यांत्रिक संयोजन के बजाय, उनका अर्थ कनेक्शन मुख्य चीज बन जाता है। एक वस्तु को एक तार्किक इकाई के रूप में माना जाता है जिसमें उनके प्रसंस्करण के लिए डेटा और नियम (विधियाँ) होते हैं। एक वस्तु-उन्मुख भाषा स्वतंत्र वस्तुओं के एक सेट के रूप में एक "प्रोग्रामिंग वातावरण" बनाती है, जिनमें से प्रत्येक अपने गुणों और अन्य वस्तुओं के साथ बातचीत करने के तरीकों में भिन्न होता है। प्रोग्रामर वस्तुओं के बीच संदेश विनिमय की संरचना का वर्णन करते हुए संचालन के एक सेट को परिभाषित करता है। एक नियम के रूप में, वह वस्तुओं के अंदर "दिखता" नहीं है, लेकिन यदि आवश्यक हो, तो वह वस्तुओं के अंदर के तत्वों को बदल सकता है या नए बना सकता है।

OOP तीन आवश्यक सिद्धांतों पर आधारित है(एनकैप्सुलेशन, वंशानुक्रम, बहुरूपता) जो वस्तुओं को नए गुण देते हैं।

  1. एनकैप्सुलेशन एक संपूर्ण में उनके प्रसंस्करण के लिए डेटा और एल्गोरिदम का संयोजन है। यहां डेटा ऑब्जेक्ट का क्षेत्र है, और एल्गोरिदम ऑब्जेक्ट के तरीके हैं।
  2. विरासत अपने बच्चों को उत्पन्न करने के लिए वस्तुओं की संपत्ति है। एक वंशज वस्तु स्वचालित रूप से सभी क्षेत्रों और विधियों को विरासत में लेती है, वस्तुओं को नए क्षेत्रों के साथ पूरक कर सकती है, विधियों को प्रतिस्थापित और पूरक कर सकती है।
  3. बहुरूपता संबंधित वस्तुओं की संपत्ति है जो समान समस्याओं को विभिन्न तरीकों से हल करती है।

विभिन्न वैज्ञानिकों द्वारा वर्षों से सॉफ़्टवेयर ऑब्जेक्ट का उपयोग करने का विचार खोजा गया है। सिमुला -67 को इस प्रकार की पहली भाषाओं में से एक माना जाता है और 1972 में एलन के द्वारा विकसित स्मोल्टॉक भाषा दिखाई दी, जिसने ओओपी की स्थिति को मंजूरी दी।

पर वर्तमान चरणउच्च-स्तरीय भाषाओं में प्रोग्राम बनाने के लिए उपकरण वातावरण और दृश्य प्रोग्रामिंग सिस्टम विकसित हो रहे हैं: (टर्बो पास्कल, डेल्फी, मूल दृश्य, सी ++ बिल्डर, आदि)।

1.4 घटक प्रोग्रामिंग

घटक प्रोग्रामिंग (सीपी) के आगमन के साथ प्राप्त वस्तु-उन्मुख प्रोग्रामिंग के बुनियादी सिद्धांतों का विकास। केपी सख्त नियमों के बिना एक गतिशील प्रक्रिया है, जो मुख्य रूप से वितरित प्रणालियों के वितरित विकास (प्रोग्रामिंग) के लिए की जाती है। केपी का सार यह है कि स्वतंत्र डिजाइनर, प्रोग्रामर एक बड़े नेटवर्क के कई नोड्स पर वितरित, एकल प्रणाली के स्वतंत्र घटकों (अलग भागों) को विकसित करते हैं। इन भागों का स्वामित्व विभिन्न स्वामियों के पास हो सकता है और संगठनात्मक रूप से स्वतंत्र प्रशासकों द्वारा प्रबंधित किया जा सकता है।

सीपी में, एक घटक को एक या अधिक वर्गों के लिए एक भंडार (डीएलएल या ईएक्सई फाइलों के रूप में) के रूप में माना जाता है। कक्षाएं बाइनरी रूप में वितरित की जाती हैं, स्रोत कोड के रूप में नहीं। प्रोटोकॉल के अनुसार कड़ाई से परिभाषित इंटरफेस के माध्यम से वर्ग विधियों तक पहुंच प्रदान की जाती है। यह संकलक असंगतताओं की समस्या को समाप्त करता है, कक्षाओं को पुनर्संकलन के बिना विभिन्न अनुप्रयोगों में संस्करणों को बदलने की अनुमति देता है। इंटरफेस सेवा की सामग्री को परिभाषित करते हैं और क्लाइंट और सर्वर के बीच मध्यस्थ होते हैं।

Microsoft ने वितरित प्रणालियों के वितरित विकास के लिए तकनीकों का निर्माण किया है, जैसे COM (घटक ऑब्जेक्ट मॉडल), COM+, .NET। अन्य प्रौद्योगिकियां भी विकसित की गई हैं: कोरबा (ओएमजी कंसोर्टियम), जावा (सन माइक्रोसिस्टम कंपनी), आदि।

कंप्यूटर में एल्गोरिदम और प्रोग्रामर के कंपाइलर्स के कार्यों को स्थानांतरित करने के विचार ने कृत्रिम बुद्धि के क्षेत्र के विकास के नए अवसर दिए, जो बौद्धिक समस्याओं को स्वचालित रूप से हल करने के तरीकों को बनाने के लिए माना जाता था। विभिन्न क्षेत्रों के पेशेवरों के पास ज्ञान की औपचारिकता, कंप्यूटर पर लागू ज्ञान के आधार में उनका संचय, विशेषज्ञ प्रणालियों के निर्माण का आधार बन गया। 5वीं पीढ़ी के कंप्यूटर, बुद्धिमान रोबोट और विशेषज्ञ प्रणालियाँ ज्ञान के आधार पर काम करती हैं। ये प्रणालियाँ न केवल किसी विशेष समस्या का समाधान खोज सकती हैं, बल्कि यह भी बता सकती हैं कि इसे कैसे प्राप्त किया गया। ज्ञान में हेरफेर करना, ज्ञान के बारे में ज्ञान प्राप्त करना संभव हो गया - मेटानॉलेज। प्रणाली में संग्रहीत ज्ञान उसके अपने शोध का विषय बन गया।

कंप्यूटर से उच्च-स्तरीय भाषाओं की स्वतंत्रता में कार्यों के एल्गोरिथम के क्षेत्र में ज्ञान की विभिन्न शाखाओं के विशेषज्ञ शामिल थे, जिससे कई मानक मानक कार्यक्रमों का उपयोग करना संभव हो गया, और प्रोग्रामर के लिए लेखन कार्यक्रमों में दोहराव को खत्म करना संभव हो गया। विभिन्न प्रकार केकंप्यूटर और श्रम उत्पादकता में उल्लेखनीय वृद्धि।

1980 के दशक के अंत में जापान और संयुक्त राज्य अमेरिका में, पाँचवीं पीढ़ी के कंप्यूटरों की परियोजनाएँ दिखाई दीं, जिन्हें 1990 के दशक के अंत में लागू किया गया था। प्रोग्रामिंग में प्रगति कंप्यूटिंग सिस्टम की वास्तुकला में प्रगति के साथ जुड़ी हुई है, वॉन न्यूमैन अवधारणा से एक प्रस्थान, कृत्रिम बुद्धि के क्षेत्र में प्रगति के साथ। कंप्यूटर के तत्व आधार में क्रांतिकारी परिवर्तन बायोइलेक्ट्रॉनिक में अनुसंधान से जुड़े हैं।

वर्तमान चरण में, प्रोग्रामिंग में कंप्यूटर प्रोग्राम के लेखन विनिर्देशों (समस्या की स्थिति), डिजाइनिंग, कोडिंग, परीक्षण और कामकाज से संबंधित मुद्दों का एक सेट शामिल है। आधुनिक कंप्यूटर सॉफ्टवेयर में एक जटिल संरचना होती है और, एक नियम के रूप में, इसमें ऑपरेटिंग सिस्टम, विभिन्न भाषाओं के अनुवादक, पाठ-आधारित नियंत्रण और नैदानिक ​​कार्यक्रम और सेवा कार्यक्रमों का एक सेट शामिल होता है। उदाहरण के लिए, सॉफ्टवेयर सिस्टम डिजाइन करने के लिए जापानी वैज्ञानिक छह स्तरों के "रिंग स्ट्रक्चर" के विचार को विकसित कर रहे हैं:

  1. (आंतरिक) उपकरण के लिए कार्यक्रम;
  2. ओएस कर्नेल;
  3. इंटरफ़ेस कार्यक्रम;
  4. OS का वह भाग जो उपयोक्ता-उन्मुख है;
  5. प्रोग्रामिंग सिस्टम;
  6. (बाहरी) उपयोगकर्ता कार्यक्रम।

इन शोध परियोजनाओं के अनुसार, प्राकृतिक भाषाओं में प्रारंभिक आवश्यकताओं के विनिर्देशों के अनुसार संश्लेषण को स्वचालित करके सॉफ्टवेयर उपकरण बनाने की प्रक्रिया को सरल बनाने की योजना है। हाल ही में, जापान में, एक रोबोट अनुवादक बनाना संभव हुआ जो अनुवाद करता है अंग्रेजी भाषणजापानी में और इसके विपरीत, इसे मानवीय आवाज के साथ करना। सभी विकसित देशों में वे रोबोट बनाने के लिए सॉफ्टवेयर पैकेज पर काम कर रहे हैं। मानव गतिविधि के कई क्षेत्रों के लिए।

1.5 संरचित और वस्तु-उन्मुख प्रोग्रामिंग तकनीकों को लागू करना

ग्राफिकल मॉडल का उपयोग करते हुए संरचनात्मक और वस्तु-उन्मुख प्रोग्रामिंग विधियों का व्यापक उपयोग उपकरणों की कमी से संयुक्त था। इसने एक विशेष वर्ग - CASE (कंप्यूटर एडेड सॉफ्टवेयर इंजीनियरिंग) के सॉफ्टवेयर और तकनीकी उपकरणों की आवश्यकता को जन्म दिया, जो सॉफ्टवेयर बनाने और बनाए रखने के लिए तकनीक को लागू करते हैं। विभिन्न प्रणालियाँ. 1980 के दशक के अंत तक CASE प्रौद्योगिकियों के उद्भव के लिए पूर्वापेक्षाएँ उत्पन्न हुईं। प्रारंभ में, शब्द "केस" केवल सॉफ्टवेयर विकास स्वचालन के मामलों के लिए लागू किया गया था, अब सॉफ्टवेयर इंजीनियरिंग का सामान्य रूप से सिस्टम के विकास के लिए व्यापक अर्थ है। CASE प्रौद्योगिकियों में उच्च-स्तरीय भाषाओं का विकास और कार्यान्वयन, संरचित और मॉड्यूलर प्रोग्रामिंग के तरीके, डिज़ाइन भाषाएँ और उनके समर्थन उपकरण, सिस्टम आवश्यकताओं का वर्णन करने के लिए औपचारिक और अनौपचारिक भाषाएँ शामिल हैं।

XX सदी की शुरुआत में। एक यांत्रिक टाइपराइटर के निर्माण के साथ, सार्वजनिक रूप से उपलब्ध मुद्रित पाठ बनाना संभव हो गया, हालांकि ऐसे पाठ में परिवर्तन करना (त्रुटियों को सुधारना) काफी श्रमसाध्य कार्य था। फिर आया इलेक्ट्रिक टाइपराइटर। पर्सनल कंप्यूटर के आगमन के साथ, मुद्रित पाठ की तैयारी और अधिक परिपूर्ण हो गई है। पिछली शताब्दी के अंतिम दो दशकों में, कई वर्ड प्रोसेसिंग सॉफ्टवेयर पैकेज पहले ही विकसित किए जा चुके हैं, जिन्हें पहले टेक्स्ट एडिटर कहा जाता था, और जैसे-जैसे उनका विस्तार होता गया कार्यक्षमता-- वर्ड प्रोसेसर।

इस सदी की शुरुआत में, वर्ड प्रोसेसर अधिक उन्नत हो गए। सरल लोगों के साथ (उदाहरण के लिए, प्रोफेशनल राइट, आदि), MS WinWord, WordPerfect WordStar 2000, आदि जैसे शक्तिशाली दिखाई दिए। घरेलू लोगों में, लेक्सिकन वर्ड प्रोसेसर व्यापक हो गया है।

1980 के दशक की शुरुआत से संख्यात्मक जानकारी तैयार करने और संसाधित करने के लिए स्प्रेडशीट प्रोसेसर का उपयोग किया जाने लगा। 1979 में, डी. ब्रिकलिन ने पहला स्प्रेडशीट प्रोग्राम VisiCalc प्रस्तावित किया। 1981 में, कंप्यूटर एसोसिएट्स द्वारा सुपरकैल्क सिस्टम विकसित किया गया था, 1982 में - Microsoft द्वारा मल्टीप्लान, फिर - लोटस डेवलपमेंट द्वारा IBM PC Lotusl-2-3 के लिए एक पैकेज, Russified ABAK पैकेज, DRAKON और अन्य। 1985 में, Microsoft का एक्सेल स्प्रेडशीट प्रोसेसर दिखाई दिया, शुरू में के लिए निजी कंप्यूटर Macintosh और बाद में IBM PC कम्पैटिबल्स के लिए। इस प्रोसेसर को विंडोज ओएस के समानांतर विकसित किया गया था, इसके संस्करणों में ग्राफिकल इंटरफेस की सभी विशेषताओं को शामिल किया गया था, विंडोज 3.1 एप्लिकेशन के रूप में एक्सेल 5.0 के संस्करणों तक, विंडोज 95 एप्लिकेशन के रूप में एक्सेल 7.0 आदि। हाल के वर्षों में, काफी कुछ स्प्रेडशीट तैयारी प्रणालियों का निर्माण किया गया है। दस्तावेज़, यानी स्प्रेडशीट, स्प्रेडशीट प्रोसेसर (उदाहरण के लिए, कोरल कंपनी से कोरल क्वाट्रो 6.0, लोटस डेवलपमेंट कंपनी से लोटस 5.0, माइक्रोसॉफ्ट से विंडोज के लिए ऑफिस प्रोफेशनल और डीआर-) - लेकिन सबसे व्यापक रूप से इस्तेमाल किया जाने वाला इलेक्ट्रॉनिक एक्सेल टेबल।

बड़ी संख्या में मानक रिलेशनल डेटाबेस मैनेजमेंट सिस्टम विकसित किए गए हैं - डीबीएमएस (उदाहरण के लिए, एमएस एक्सेस, पैराडॉक्स, आदि), जिसके आधार पर विभिन्न विषय क्षेत्रों में रिलेशनल डेटाबेस बनाए जाते हैं।

कई संगठनों (विशेष रूप से प्रबंधन वाले) के लिए, तथाकथित कार्यालय सुइट विकसित किए गए हैं, जिसमें अनुप्रयोग एकल ओएस के आधार पर काम करते हैं, जिसमें काम करने के लिए सिस्टम शामिल हैं। विभिन्न प्रकार केजानकारी। उदाहरण के लिए, विंडोज ओएस के लिए एप्लिकेशन पैकेज बनाए गए हैं (एमएस ऑफिस, कोरल द्वारा वर्डपरफेक्ट ऑफिस, सनमाइक्रोसिस्टम्स द्वारा स्टारऑफिस, आदि), जिसमें सभी प्रकार के सूचना प्रसंस्करण कार्यों को करने के लिए सॉफ्टवेयर टूल शामिल हैं। उदाहरण के लिए, एमएस ऑफिस में साल-दर-साल सुधार शामिल हैं नवीनतम संस्करणविंडोज ओएस) वर्ड प्रोसेसिंग टूल्स (एमएस वर्ड), ग्राफिक्स (फोटो ड्रा) और प्रेजेंटेशन (पावरपॉइंट), टेबल (एक्सेल), डेटाबेस (एक्सेस), ईमेल(आउटलुक), काम के दौरान वर्ल्ड वाइड वेब(फ्रंटपेज), साउंड क्लिप (एमएस साउंड रिकॉर्डर) बनाना।

1.6 प्रोग्रामिंग में नई दिशाएँ

प्रोग्रामिंग में नई दिशाओं के विकास के लिए एक शक्तिशाली प्रोत्साहन कंप्यूटर और दूरसंचार प्रौद्योगिकियों का एकीकरण था।

1960 के दशक में विदेश में पहला कंप्यूटर नेटवर्क सामने आया, जिसमें से तकनीकी और तकनीकी क्रांति शुरू हुई, क्योंकि संचार प्रौद्योगिकी के साथ कंप्यूटर पर जानकारी एकत्र करने, भंडारण, संचारण और प्रसंस्करण की तकनीक को संयोजित करने का प्रयास किया गया था। यूरोप में उन वर्षों में, अंतर्राष्ट्रीय नेटवर्क EIN और यूरो-नेट बनाए गए, फिर राष्ट्रीय नेटवर्क दिखाई दिए। 1972 में, वियना में MIASA नेटवर्क बनाया गया था, जो 1979 में 17 यूरोपीय देशों, USSR, यूएसए, कनाडा और जापान से जुड़ गया था। उन्नीस सौ अस्सी के दशक में हमारे देश में, सांख्यिकीय सूचनाओं की एक टेलीप्रोसेसिंग प्रणाली बनाई गई थी, जो राज्य और गणतांत्रिक सांख्यिकीय निकायों की सेवा कर रही थी।


निष्कर्ष

इस टर्म पेपर को लिखने की प्रक्रिया में, मैंने प्रोग्रामिंग के उद्भव के इतिहास का ही अध्ययन किया। नई प्रोग्रामिंग भाषाएं बनाने के तरीकों और सिद्धांतों के बारे में ज्ञान का व्यवस्थितकरण भी किया गया। अंत में, यह ध्यान दिया जाना चाहिए कि विचार किया गया विषय आपको प्रौद्योगिकियों और प्रोग्रामिंग भाषाओं के विकास के मार्ग को देखने की अनुमति देता है और सूचना प्रौद्योगिकी के क्षेत्र में एक विशेषज्ञ के दृष्टिकोण से दिलचस्प है।


ग्रंथ सूची

  1. नेमनुगिन एस.ए. टर्बोपास्कल (कार्यशाला): सेंट पीटर्सबर्ग: "पिटर", 2003. 475p।
  2. किरनोस वी.एन. सूचना विज्ञान 10 11 वर्ग: कोकशेतौ: "केशेलेक", 2005। 208s।
  3. फारोनोव वी. पर । टर्बो पास्कल 7.0। प्रारंभिक पाठ्यक्रम। - ज्ञान, 1998. -620 पी।
  4. ग्रिज़लोव वी.आई., ग्रिज़लोवा टी.पी. टर्बो पास्कल 7.0। - एम .: "डीएमके", 2000. - 416 पी।
  5. ज़ुएव ई। लेकिन । टर्बोपास्कल। व्यावहारिक प्रोग्रामिंग। - पूर्व, 1997। - 336 एस।
  6. पिल्शिकोव वी.एन. पास्कल भाषा में अभ्यासों का संग्रह। एम.: नौका, 1989. 160 पी।
  7. जेन्सेन के।, विर्थ एन। उपयोगकर्ता गाइड और भाषा का विवरण। एम।, 1982। 151 पी.
  8. अब्रामोव एस.ए., ज़िमा ई.वी. पास्कल में प्रोग्रामिंग शुरू की। एम.: नौका, 1987. 112 पी।
  9. पावलोव्स्काया टी.ए. पास्कल। उच्च स्तरीय भाषा में प्रोग्रामिंग। - सेंट पीटर्सबर्ग: पीटर, 2003.-393 एस।
  10. इलियट बी.के. टर्बो पास्कल = टर्बो पास्कल वेब अपडेट . एम.: विलियम्स, 2005। 896पी।
  11. लुकिन एस. एन । टर्बो पास्कल 7.0. शुरुआती के लिए ट्यूटोरियल।-संवाद-एमईपीएचआई, 2005.-

400s.

  1. Epaneshnikov A. M., Epaneshnikov V. A. प्रोग्रामिंग टर्बो पास्कल 7.0 में।- 1995.-278s।
  2. Nemnyugin S., Percolab L. हम अध्ययन करते हैंटर्बो पास्कल।- पीटर, 2007.- 320 पी।

प्रोग्रामिंग भाषाओं के विकास का इतिहासबीसवीं सदी में शुरू हुआ।

प्रोग्रामिंगएक प्रोग्रामिंग भाषा में लिखे गए सॉफ़्टवेयर उत्पाद बनाने की कला है। प्रोग्रामिंग भाषा- यह एक औपचारिक साइन सिस्टम है, जिसे प्रोग्राम लिखने के लिए डिज़ाइन किया गया है जो कलाकार के लिए समझ में आता है (हमारे विचार में, यह एक कंप्यूटर है)।

दूसरे शब्दों में, प्रोग्रामिंगक्रियाओं का एक स्पष्ट रूप से परिभाषित अनुक्रम है जो प्रोग्रामर लिखता है।

प्रोग्रामिंग की भाषाएँतीन प्रकारों में विभाजित हैं:

मशीनी भाषाएँ। मनुष्य के लिए बहुत समझ से बाहर है, लेकिन कंप्यूटर के लिए बहुत समझ में आता है।
- भाषाएं कम स्तर. उदाहरण के लिए, असेंबलर।
- उच्च स्तरीय प्रोग्रामिंग भाषाएं। उदाहरण के लिए, पास्कल, सी, जावा।

प्रोग्रामिंग की लिखित में अलग-अलग शाखाएँ होती हैं सॉफ्टवेयर उत्पाद. आज हजारों हैं प्रोग्रामिंग की भाषाएँ. उनमें से कुछ लोकप्रियता और प्रसिद्धि प्राप्त करते हैं। उन्हें सादगी, गति और लचीलेपन और अन्य गुणों की विशेषता है।

प्रोग्रामिंग के विकास की शुरुआत में, प्रोग्रामर पूरी तरह से एक फाइल में प्रोग्राम लिखते थे। 1960 के दशक के दौरान, सॉफ्टवेयर विकास की मांग बढ़ी और कार्यक्रम बहुत बड़े हो गए। लोगों ने महसूस करना शुरू कर दिया कि सॉफ्टवेयर बनाना उनकी कल्पना से कहीं अधिक कठिन काम है। इससे संरचित प्रोग्रामिंग का विकास हुआ। संरचित प्रोग्रामिंग- यह सॉफ्टवेयर है, जो ब्लॉकों की एक श्रेणीबद्ध संरचना के रूप में कार्यक्रम के प्रतिनिधित्व पर आधारित है। इस अवधि में, ऐसी संरचनाएं दिखाई दीं: एक पसंद संरचना (स्थितियां), एक दोहराव संरचना (चक्र), एक अनुक्रम संरचना (क्रियाएं एक के बाद एक चलती हैं)।

पसंद संरचनाइस बात पर विचार किया गया कि स्थिति के आधार पर क्रियाओं का चयन कैसे किया जाए।
दोहराव संरचना- किसी घटना (स्थिति) से पहले एक ही क्रिया कई बार की जाती है।
अनुक्रम संरचना- क्रियाएं एक के बाद एक शाखाओं में बंटे बिना क्रमिक रूप से चलती हैं।

प्रोग्रामिंग के विकास के साथ लागू होना शुरू हुआ प्रक्रियाएं और कार्य. यानी अगर कोई ऐसा कार्य है जो कई बार किया जाता है, तो उसे फ़ंक्शन या प्रक्रिया के रूप में घोषित करना आसान होता है। और कार्यक्रम के निष्पादन में, बस इसे कॉल करें। सामान्य कोडइस मामले में कार्यक्रम छोटे हो जाते हैं। फ़ंक्शंस आपको मॉड्यूलर प्रोग्राम बनाने की अनुमति देता है।

इसके अलावा, विकास के साथ, उन्होंने संरचनाओं का उपयोग करना शुरू किया, और फिर कक्षाओं में चले गए। संरचनाओंअन्य प्रकारों का उपयोग करके निर्मित समग्र डेटा प्रकार हैं। उदाहरण के लिए, समय की संरचना। इसमें शामिल हैं: घंटे, मिनट, सेकंड। प्रोग्रामर एक समय संरचना बना सकता है और इसके साथ एक अलग संरचना के रूप में काम कर सकता है। कक्षा- ये है संरचना, जिसके अपने चर और कार्य हैं जो इन चरों के साथ काम करते हैं। प्रोग्रामिंग के क्षेत्र में यह एक बहुत बड़ी उपलब्धि थी। अब प्रोग्रामिंग को कक्षाओं में विभाजित किया जा सकता है और कोड की 10,000 पंक्तियों से युक्त पूरे कार्यक्रम का परीक्षण नहीं किया जा सकता है, लेकिन कार्यक्रम को 100 वर्गों में विभाजित किया जा सकता है, और प्रत्येक वर्ग का परीक्षण किया जा सकता है। इससे सॉफ्टवेयर उत्पाद के लेखन में काफी सुविधा हुई। लेकिन इतना भी काफी नहीं था।

प्रोग्रामिंग में अगली प्रगति थी विरासत और बहुरूपता. विरासत -यह सॉफ्टवेयर का पुन: उपयोग करने का एक तरीका है जिसमें मौजूदा वर्गों से उनकी विशेषताओं और कार्यों को उधार लेकर, समृद्ध करते हुए नए वर्ग बनाए जाते हैं नई कक्षाऔर इसमें नई सुविधाएँ जोड़ रहे हैं। इस उपलब्धि से नई कक्षाएं लिखने में समय की बचत होगी। चूंकि आप पिछली कक्षाओं के कार्यों का उपयोग कर सकते हैं, और नई कक्षा में अपनी कार्यक्षमता और चर बढ़ा सकते हैं। बहुरूपता- यह विरासत से संबंधित विभिन्न वर्गों की वस्तुओं के लिए एक ही संदेश (अर्थ कार्यों) के विभिन्न तरीकों से प्रतिक्रिया करने का अवसर है। अर्थात्, माता-पिता और बच्चे के पास एक ही नाम का एक फ़ंक्शन होता है, उदाहरण के लिए, प्रिंट, लेकिन यह फ़ंक्शन विषम मापदंडों को स्वीकार करता है, फिर यदि प्रोग्राम फ़ंक्शन को कॉल करता है प्रिंट. प्रोग्राम को पता चल जाएगा कि किस फंक्शन को कॉल करना है, पैरेंट फंक्शन या चाइल्ड फंक्शन।

यह सब एक साथ रखा गया था और ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (ओओपी) मिला। वस्तु उन्मुख कार्यकर्म- यह प्रोग्रामिंग है, जो किसी वस्तु की अवधारणा पर आधारित है। एक वस्तुएक प्रोग्रामिंग तत्व है जो दोनों डेटा को जोड़ता है ( संरचना) और उन पर कार्रवाई ( कार्यों) यही है, जब एक वर्ग बनाया जाता है, तो इसे एक नए प्रकार के विनिर्देशक के रूप में इस्तेमाल किया जा सकता है। इस स्थिति में, इस वर्ग का चर बन जाता है वस्तु. इसमें वेरिएबल और फंक्शन दोनों हैं जो इन वेरिएबल्स को प्रोसेस करते हैं।

जब वे लिखते हैं तो यह सब स्पष्ट रूप से दिखाया जाता है कंप्यूटर गेम. उदाहरण के लिए, प्रत्येक खिलाड़ी एक अलग वस्तु है, प्रत्येक पेड़ या कार एक अलग वस्तु है। जब एक वस्तु दूसरे से टकराती है, एक हिट घटना होती है और हिट फ़ंक्शन निष्पादित होता है, जबकि कुछ क्रिया (हार, मृत्यु, आदि) की जाती है, इन सभी क्रियाओं को वस्तु में ही लागू किया जाता है। और डिबगिंग करते समय, आपको पूरे प्रोग्राम को नहीं, बल्कि कक्षा को डीबग करने की आवश्यकता होती है। यह बहुत आरामदायक है।

प्रोग्रामिंग में गतिशील स्मृति का उपयोग भी शामिल था। गतिशील स्मृति आवंटन- यह प्रोग्राम के निष्पादन के दौरान सूचनाओं को संग्रहीत करने और स्मृति संसाधनों को जारी करने के लिए स्मृति क्षेत्र आवंटित करने की क्षमता है जिनकी अब आवश्यकता नहीं है।

एक प्रोग्राम लिखने के लिए, आपको उस क्षेत्र को जानना होगा जिसमें आपको एक प्रोग्राम लिखने की आवश्यकता है, फिर जटिल समस्याओं को और अधिक में तोड़ें सरल ब्लॉक, और फिर इन ब्लॉकों को वर्गों में विभाजित किया जाता है। और उसके बाद, आवश्यक कार्यक्षमता को लागू करने वाली कक्षाएं लिखें।