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

💖क्या आपको यह पसंद है?लिंक को अपने दोस्तों के साथ साझा करें

सभा की भाषा

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

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

नीचे दिया गया चार्ट प्रमुख प्रोग्रामिंग भाषाओं को कालानुक्रमिक क्रम में दिखाता है। सबसे प्रभावशाली प्रोग्रामिंग प्रतिमानों में प्रक्रियात्मक, संरचित, कार्यात्मक, तार्किक और वस्तु-उन्मुख प्रतिमान शामिल हैं।

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

प्रक्रियात्मक प्रोग्रामिंग प्रतिमान

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

लेकिन असेंबलर के साथ काम करना भी काफी जटिल है और इसके लिए विशेष प्रशिक्षण की आवश्यकता होती है। उदाहरण के लिए, Zilog Z80 प्रोसेसर के लिए, मशीन निर्देश 00000101 प्रोसेसर को अपने B रजिस्टर को एक से कम करने का निर्देश देता है। असेंबली भाषा में इसे DEC B भी लिखा जाएगा.

उच्च स्तरीय भाषाएँ

अगला कदम 1954 में उठाया गया, जब पहली उच्च स्तरीय भाषा, फोरट्रान बनाई गई। फोरट्रान - फॉर्मूला अनुवादक), और इसके बाद कुछ अन्य, जैसे LISP, ALGOL 58, FACT (COBOL भाषा का एक और पूर्ववर्ती)। उच्च स्तरीय भाषाएँ कुछ मौखिक भाषा के शब्दों और सामान्य गणितीय प्रतीकों का उपयोग करके प्राकृतिक भाषाओं की नकल करती हैं। ये भाषाएँ मनुष्यों के लिए अधिक सुविधाजनक हैं; इनकी सहायता से आप कई हजार पंक्तियों तक के प्रोग्राम लिख सकते हैं। निःसंदेह, यह उपलब्धि बहुत मूल्यवान थी। सशर्त शब्दों के साथ, जैसा कि किसी व्यक्ति के लिए सामान्य है, बिट्स से एक जटिल सॉफ़्टवेयर ऑपरेशन को अधिक सरलता से व्यक्त करना संभव था। हालाँकि, छोटे कार्यक्रमों में आसानी से समझ में आने के बावजूद, जब बड़े कार्यक्रमों की बात आती है तो यह भाषा अपठनीय हो जाती है और इसे प्रबंधित करना मुश्किल हो जाता है। यानी सादगी की अभी भी कमी थी. इस समस्या का समाधान संरचित प्रोग्रामिंग भाषाओं के आविष्कार के साथ आया। संरचित प्रोग्रामिंग भाषा ), जैसे कि ALGOL (1958), पास्कल (1970), C (1972)।

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

संरचित प्रोग्रामिंग प्रतिमान

संरचित प्रोग्रामिंग प्रतिमान को प्रक्रियात्मक प्रोग्रामिंग प्रतिमान का एक सबसेट माना जा सकता है। संरचित प्रोग्रामिंग प्रतिमान अक्सर ऊपर से नीचे दृष्टिकोण से जुड़ा होता है। यह दृष्टिकोण सबसे पहले समस्या को छोटे-छोटे टुकड़ों में तोड़ देता है। ये हिस्से आगे चलकर विघटित हो जाते हैं और अंततः व्यक्तिगत समस्याओं का एक संग्रह तैयार करते हैं। फिर प्रत्येक समस्या को एक-एक करके हल किया जाता है। हालाँकि यह दृष्टिकोण आम तौर पर सफल होता है, लेकिन बाद में इसमें परिवर्तन करने पर समस्याएँ पैदा होती हैं।

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

कार्यात्मक प्रोग्रामिंग प्रतिमान

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

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

हालाँकि, चूंकि यह प्रतिमान वर्तमान हार्डवेयर से अधिक निकटता से मेल खाता है, जैसे वॉन न्यूमैन वास्तुकला, यह कम कुशल हो सकता है और समय और स्थान के इसके उपयोग को उचित ठहराना मुश्किल हो सकता है। इसके अलावा, कुछ चीजों को ऐसे मॉडल में फिट करना कठिन होता है जहां फ़ंक्शन केवल इनपुट लेते हैं और आउटपुट उत्पन्न करते हैं।

तर्क प्रोग्रामिंग प्रतिमान

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

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

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

ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग प्रतिमान

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

इस दृष्टिकोण का सार किसी प्रोग्राम को उसके घटक तत्वों में विभाजित करने की क्षमता है।

भी बनाया गया कार्यात्मक(आवेदक) भाषाएँ (उदाहरण: लिस्प - अंग्रेजी। OOP संयोजित सर्वोत्तम सिद्धांतशक्तिशाली नई अवधारणाओं के साथ संरचित प्रोग्रामिंग, जिसे बुनियादी कहा जाता है

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

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

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

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

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

1951 में ही, हॉपर ने दुनिया का पहला कंपाइलर बनाया और उन्होंने यह शब्द भी पेश किया। हॉपर कंपाइलर ने कमांड के संयोजन का कार्य किया और अनुवाद के दौरान, सबरूटीन्स को व्यवस्थित किया, कंप्यूटर मेमोरी आवंटित की, और उच्च-स्तरीय कमांड (उस समय स्यूडोकोड) को मशीन कमांड में परिवर्तित किया। "सबरूटीन्स लाइब्रेरी (कंप्यूटर की) में होते हैं, और जब आप लाइब्रेरी से सामग्री का चयन करते हैं, तो इसे संकलन कहा जाता है," उन्होंने इस तरह अपने द्वारा गढ़े गए शब्द की उत्पत्ति को समझाया।

समानांतर प्रोग्रामिंग प्रतिमान

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

इवेंट-आधारित प्रोग्रामिंग प्रतिमान

ईवेंट ट्रिगर फ़ंक्शंस को ट्रिगर करते हैं जो उन्हें संसाधित करते हैं। प्रत्येक का लाभ प्राप्त करने के लिए प्रतिमानों को जोड़ा जा सकता है। हालाँकि, इससे कार्यक्रम की जटिलता भी बढ़ जाती है। प्रोग्रामर को यह निर्धारित करने के लिए फायदे और नुकसान का वजन करना चाहिए कि क्या प्रतिमानों को संयोजित करना फायदेमंद है।

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

प्रोग्रामिंग प्रतिमानों के बीच बदलाव

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

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

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

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

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

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

डेवलपर्स ने भाषाओं को विभिन्न वर्गों के कार्यों पर केंद्रित किया, उन्हें एक डिग्री या किसी अन्य से एक विशिष्ट पीसी वास्तुकला से जोड़ा, और व्यक्तिगत स्वाद और विचारों को लागू किया। 60 के दशक में एक सार्वभौमिक प्रोग्रामिंग भाषा बनाकर इस "कलह" को दूर करने का प्रयास किया गया। इस दिशा की पहली उपज PL/1 (प्रोग्राम लैंग्वेज वन) थी, जिसे 1967 में IBM द्वारा विकसित किया गया था। यह भाषा किसी भी समस्या को हल करने में सक्षम होने का दावा करती है: कंप्यूटिंग, पाठ प्रसंस्करण, जानकारी का संचय और पुनर्प्राप्ति। हालाँकि, यह बहुत जटिल निकला, इसका अनुवादक पर्याप्त इष्टतम नहीं था और इसमें कई अज्ञात त्रुटियाँ थीं।
हालाँकि, भाषाओं के सार्वभौमिकरण की दिशा का समर्थन किया गया था। पुरानी भाषाओं को सार्वभौमिक संस्करणों में आधुनिक बनाया गया: ALGOL-68 (1968), फोरट्रान-77। यह मान लिया गया था कि ऐसी भाषाएँ विकसित और बेहतर होंगी और अन्य सभी को विस्थापित करना शुरू कर देंगी। हालाँकि, इनमें से कोई भी प्रयास सफल नहीं हुआ।

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

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

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

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

1975 में, दो घटनाएँ प्रोग्रामिंग के इतिहास में मील का पत्थर बन गईं - बिल गेट्स और पॉल एलन ने BASIC का अपना संस्करण विकसित करके खुद की घोषणा की, और विर्थ और जेन्सेन ने भाषा का क्लासिक विवरण "पास्कल उपयोगकर्ता मैनुअल और रिपोर्ट" जारी किया।

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

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

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

आइए एक और वर्गीकरण पर विचार करें। प्रोग्रामिंग भाषाओं को इसमें विभाजित किया गया है:
1) मशीन-उन्मुख भाषाएँ:
- मशीन भाषाएँ;
- प्रतीकात्मक कोडिंग भाषाएं;
 ऑटो कोड;
- मैक्रो.
2) मशीन-स्वतंत्र भाषाएँ:
- समस्या-उन्मुख भाषाएँ;
- सार्वभौमिक भाषाएँ;
- इंटरैक्टिव भाषाएँ;
- गैर-प्रक्रियात्मक भाषाएँ।

मशीन-उन्मुख भाषाएँ

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

मशीन भाषा

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

प्रतीकात्मक कोडिंग भाषाएँ

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

ऑटोकोड

ऐसी भाषाएँ हैं जिनमें मैक्रो कमांड के विस्तारित परिचय के माध्यम से YSC की सभी क्षमताएँ शामिल हैं - उन्हें ऑटोकोड कहा जाता है।

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

मैक्रो

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

मशीन स्वतंत्र भाषाएँ

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

समस्या-उन्मुख भाषाएँ

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

सार्वभौमिक भाषाएँ

सार्वभौमिक भाषाएँ कई प्रकार के कार्यों के लिए बनाई गई थीं: वाणिज्यिक, वैज्ञानिक, मॉडलिंग, आदि। पहली सार्वभौमिक भाषा आईबीएम द्वारा विकसित की गई थी, जो भाषाओं के क्रम में पीएल/1 बन गई। दूसरी सबसे शक्तिशाली सार्वभौमिक भाषा को ALGOL-68 कहा जाता है।

बोलचाल की भाषाएँ

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

गैर-प्रक्रियात्मक भाषाएँ

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

बेसिक और विज़ुअल बेसिक प्रोग्रामिंग भाषा के निर्माण का इतिहास

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

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

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

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

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

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

वीबीस्क्रिप्ट और वीबीए (एप्लिकेशन के लिए वीबी) का उपयोग करके, आप वेब ब्राउज़र के लिए स्क्रिप्ट लिख सकते हैं और स्वचालित कर सकते हैं माइक्रोसॉफ्ट अनुप्रयोगकार्यालय। इसके अलावा, VB6 का उपयोग Active-X नियंत्रण बनाने के लिए किया जा सकता है जो इसके साथ मिलकर काम करते हैं इंटरनेट एक्सप्लोरर, हालाँकि यह शायद ही कभी किया जाता है क्योंकि इसके लिए क्लाइंट की वेब-आधारित मशीन पर वीबी रनटाइम डीएलएल स्थापित करना आवश्यक होता है। VB5 से शुरुआत करके, VB प्रोग्राम को मशीन कोड में संकलित किया गया था, लेकिन वे DLL के उपयोग पर आधारित थे जो आमतौर पर उपयोग किए जाने वाले फ़ंक्शन प्रदान करते थे और VB की ऑब्जेक्ट क्षमताओं को कार्यान्वित करते थे। दिलचस्प बात यह है कि वीबी कंपाइलर अनुवाद के लिए मल्टी-पास मोड का उपयोग करता है, और अंततः एक मध्यवर्ती भाषा में संकलित करने के बाद मशीन कोड आउटपुट का उत्पादन करने के लिए माइक्रोसॉफ्ट सी ++ कंपाइलर पर निर्भर करता है। .NET के बीज VB की इस सुविधा में दिखाई देते हैं - एक रनटाइम लाइब्रेरी और C++ बैकएंड का उपयोग।

C# प्रोग्रामिंग भाषा के निर्माण का इतिहास

C# भाषा का जन्म जून 2000 में एंडर्स हेजल्सबर्ग के नेतृत्व में Microsoft डेवलपर्स के एक बड़े समूह के श्रमसाध्य कार्य के परिणामस्वरूप हुआ था। इस व्यक्ति को आईबीएम पर्सनल कंप्यूटर के लिए पहली संकलित प्रोग्रामिंग भाषाओं में से एक - टर्बो पास्कल के लेखक के रूप में जाना जाता है। संभवतः, पूर्व सोवियत संघ के क्षेत्र में, कई अनुभवी डेवलपर्स और विश्वविद्यालयों में किसी न किसी रूप में प्रोग्रामिंग का अध्ययन करने वाले लोगों ने इस उत्पाद के आकर्षण और उपयोग में आसानी का अनुभव किया। इसके अलावा, बोरलैंड कॉर्पोरेशन में काम करते समय, एंडर्स हेजलबर्ग डेल्फ़ी एकीकृत वातावरण बनाने के लिए प्रसिद्ध हो गए (उन्होंने संस्करण 4.0 के रिलीज़ होने तक इस परियोजना का नेतृत्व किया)।
यह कोई संयोग नहीं था कि C# भाषा और .NET पहल की उपस्थिति 2000 की गर्मियों की शुरुआत में हुई थी। यह इसी समय था माइक्रोसॉफ्ट कंपनीमैसेजिंग और डेटा एक्सचेंज के साथ-साथ इंटरनेट एप्लिकेशन (COM+, ASP+, ADO+, SOAP, Biztalk Framework) के निर्माण के क्षेत्र में नई घटक प्रौद्योगिकियों और समाधानों के औद्योगिक संस्करण तैयार किए हैं। निश्चित रूप से सबसे अच्छा तरीकाइन नए उत्पादों को बढ़ावा देना डेवलपर्स के लिए उनके पूर्ण समर्थन के साथ टूल का निर्माण है। यह नई C# भाषा के मुख्य लक्ष्यों में से एक है। इसके अलावा, Microsoft अब समान टूल और विकास भाषाओं का विस्तार नहीं कर सकता है, जिससे उन्हें परस्पर विरोधी समर्थन आवश्यकताओं को पूरा करने के लिए और अधिक जटिल बना दिया गया है आधुनिक उपकरणऔर उन उत्पादों के साथ बैकवर्ड अनुकूलता सुनिश्चित करना जो 1990 के दशक की शुरुआत में बनाए गए थे। पहले के दौरान विंडोज़ का उद्भव. एक समय आता है जब भाषाओं, परिवेशों और विकास उपकरणों का एक सरल लेकिन जटिल सेट बनाने के लिए शुरुआत से शुरुआत करना आवश्यक होता है जो डेवलपर को आसानी से आधुनिक सॉफ्टवेयर उत्पाद बनाने की अनुमति देगा।

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

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

सी# की विशेषताएं:

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

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



मित्रों को बताओ