इतनी सारी प्रोग्रामिंग लैंग्वेज क्यों हैं?
और क्या किसी को इस बात के बावजूद प्रोग्रामिंग भाषा बनाने के लिए प्रेरित करता है कि अन्य भाषाएँ पहले से मौजूद हैं?
इतनी सारी प्रोग्रामिंग लैंग्वेज क्यों हैं?
और क्या किसी को इस बात के बावजूद प्रोग्रामिंग भाषा बनाने के लिए प्रेरित करता है कि अन्य भाषाएँ पहले से मौजूद हैं?
जवाबों:
नई प्रोग्रामिंग भाषाएँ अक्सर मौजूदा भाषाओं से सीखती हैं और एक नए तरीके से सुविधाओं को जोड़ती हैं, हटाती हैं और जोड़ती हैं। ऑब्जेक्ट ओरिएंटेड और कार्यात्मक जैसे कुछ अलग प्रतिमान हैं और कई आधुनिक भाषाएं उन दोनों से सुविधाओं को मिलाने की कोशिश करती हैं।
नई समस्याएं भी हैं जिन्हें हल करने की आवश्यकता है, जैसे मल्टी-कोर सीपीयू की वृद्धि। इसका सबसे आम समाधान थ्रेड्स हैं, लेकिन कुछ प्रोग्रामिंग लैंग्वेजेज कंज्यूमर्स प्रॉब्लम को अलग तरीके से हल करने की कोशिश करती हैं जैसे कि एक्टर मॉडल। एर्लैंग देखें - एक समवर्ती दुनिया के लिए सॉफ्टवेयर
यह एक चक्र है। आप एक नई भाषा शुरू करते हैं, और आप अपने पूर्ववर्तियों से सभी खराब वाक्यविन्यास और खराब विकल्पों से दूर होने के लिए स्वतंत्र हैं। संस्करण 1 में, भाषा बहुत अच्छी लगती है क्योंकि इसमें कोई सामान नहीं है, और यह काम पूरा कर लेता है। फिर, नए संस्करणों में, आप उन विशेषताओं के साथ प्रयोग करना शुरू करते हैं जो शायद काम नहीं करती हैं, या आप अन्य, नई भाषाओं की सुविधाओं को लाते हैं, जो आपके वाक्यविन्यास को थोड़ा कटाक्ष का कारण बनाते हैं। लो और निहारना, कुछ और संस्करणों के बाद, आप महसूस करते हैं कि आपकी भाषा अब उतनी ही जटिल है जितनी आपने प्रतिस्थापित की, मूर्खतापूर्ण वाक्यविन्यास मुद्दों और विरासत सामान के साथ। और अचानक, आपको एहसास होता है कि यदि आपने एक नई भाषा बनाई है , तो आप वह सब ठीक कर सकते हैं ...
इसी कारण से हथौड़ों, स्क्रू ड्रायर्स, हैंड्स, बैंडसॉव, जैकहैमर्स, क्राउबर्स और अन्य उपकरणों के एक मेजबान हैं: हर भाषा हर कार्य के लिए एकदम सही नहीं है। कुछ भाषाओं को विशिष्ट समस्या डोमेन पर लक्षित किया जाता है: आर सांख्यिकीय सांख्यिकीय विश्लेषण के लिए विशेष रूप से अच्छा है, सी विशेष रूप से ऑपरेटिंग सिस्टम गुठली लिखने के लिए अच्छा है, हास्केल विशेष रूप से गणित-भारी या वित्तीय संगणना के लिए अच्छा है, एर्लांग विशेष रूप से समवर्ती प्रोग्रामिंग आदि में अच्छा है।
इसके अलावा, इसी कारण से कि शर्ट अलग-अलग रंगों में आते हैं: कुछ लोग एक भाषा की "शैली" को दूसरे पर पसंद करते हैं।
और, ज़ाहिर है, बहुत सारे प्रोग्रामर को एक नई भाषा का आविष्कार करने में मज़ा आता है, बस यह देखने के लिए कि क्या होता है, या शायद इसलिए कि उन्हें भाषाओं के बारे में कुछ ज्ञान है और एक खुजली को खरोंच करना चाहते हैं, या कुछ विचारों को आज़माना चाहते हैं।
क्योंकि वे सभी चूसते हैं (एक ही रास्ता या दूसरा)।
अभी, हमने लगभग 5000 भाषाओं को प्राकृतिक समस्याओं का वर्णन करने के लिए बनाया है और उनमें से कोई भी प्रोग्राम लिखने के लिए उपलब्ध नहीं है (एक उदाहरण "अंग्रेजी" होगा)।
जब तक किसी को एक प्रोग्रामिंग भाषा बनाने का एक तरीका नहीं मिल जाता है, जो आप एक वाक्य में एक प्राकृतिक भाषा में व्यक्त कर सकते हैं, वे आते रहेंगे।
स्पष्ट रूप से एक नई भाषा बनाने के लिए एक महत्वपूर्ण प्रेरणा पहले से मौजूद भाषाओं की तुलना में कुछ बेहतर हासिल करना है। और जैसा कि सुधार के लिए हमेशा जगह है, हमेशा नई भाषाएँ होंगी।
वाणिज्यिक हित एक और बड़ा कारण हैं। मेरा मानना है कि उदाहरण के लिए Microsoft यह महत्वपूर्ण है कि वे हर ज़रूरत के लिए एक भाषा की पेशकश कर सकते हैं ताकि कंपनियां और डेवलपर्स उनके प्लेटफार्मों को पसंद करें।
लीगेसी कोड। यदि आप एक नई भाषा शुरू करते हैं तो आपको पुरानी भाषा बदलने पर सभी शिकायतों को सुनने / उन पर विचार करने की आवश्यकता नहीं है। यहां तक कि अगर हर कोई सहमत है कि नया कार्यान्वयन बेहतर है, तो यह पुराने कोड को तोड़ नहीं सकता है। और वहाँ बहुत पुराना कोड है।
क्योंकि नई भाषाओं को बनाने में मज़ा आता है, भले ही उनका कोई वास्तविक उपयोग न हो
एक गूढ़ प्रोग्रामिंग भाषा (कभी-कभी एसोलैंग के लिए छोटा) एक प्रोग्रामिंग भाषा है जिसे कंप्यूटर प्रोग्रामिंग भाषा डिजाइन की सीमाओं का परीक्षण करने के लिए अवधारणा के प्रमाण के रूप में, या एक मजाक के रूप में बनाया गया है।
प्रोग्रामिंग भाषा बनाना बल्कि मज़ेदार है। यह शुद्ध रचनात्मक कार्य के करीब है, क्योंकि आप पिछली आवश्यकताओं तक सीमित नहीं हैं। यह किसी भी अधिक को लागू करने के लिए मुश्किल नहीं है, क्योंकि आप हमेशा सी को संकलित कर सकते हैं और पर्याप्त प्रदर्शन के लिए सी कोड संकलित कर सकते हैं यदि आप पहली जगह में एक कंपाइलर लिख रहे हैं।
बेशक, हम में से अधिकांश के पास कम अच्छे विचार हैं जो हमें लगता है कि हमारे पास है, इसलिए वे अक्सर निराशाजनक होते हैं, या मूल डिजाइनर के अलावा किसी और से प्यार नहीं किया जाता है।
किसी भी प्रोग्रामिंग भाषा के बारे में सोचें जो आप जानते हैं। आप आसानी से इसके बारे में नापसंद कई चीजें लेकर आ सकते हैं, है ना? आपके पास निश्चित रूप से विचार हैं कि उन्हें कैसे तय किया जा सकता है। बस थोड़ा और अधिक प्रेरणा के साथ, यह मानते हुए कि आप कंपाइलर बिल्डिंग (और बहुत से लोग करते हैं) के बारे में जानते हैं, आप डिजाइन करना शुरू कर सकते हैं और यहां तक कि अपना खुद का कार्यान्वयन भी कर सकते हैं।
त्वरित संक्षिप्त उत्तर
व्हील को फिर से चालू करना ... वर्तमान प्रवृत्ति क्या है ...
बोरिंग लॉन्ग आंसर
बहुत से लोग यह भूल जाते हैं कि "पुराने प्रोग्रामर के लिए एक और समान नई भाषा" "नए प्रोग्रामर्स के लिए एक नई भाषा है"।
उसके लिए मेरा क्या मतलब है?
खैर, "कई वर्षों" प्रोग्रामर के लिए, जावा या C # मौजूदा कोबोल, (OO / प्रक्रियात्मक) बेसिक, C / C ++ के लिए एक अतिरिक्त प्रोग्रामिंग भाषा हो सकती है, जबकि "new" प्रोग्रामर के लिए, Java या C # नई भाषाएं हैं, जबकि Cobol, (ऊ / प्रक्रियात्मक) बेसिक, सी / सी ++ उनके लिए मौजूद नहीं है, इसलिए पहिया को फिर से मजबूत करना एक आम बात हो जाती है ...
और, अगर तकनीक पर एक नया चलन है, तो लोग उस प्रवृत्ति के आधार पर एक नई प्रोग्रामिंग भाषा बना सकते हैं, जैसे कि वेब और कार्यात्मक प्रोग्रामिंग के लिए ईकमास्क्रिप्ट / जावास्क्रिप्ट ...
चीयर्स।
नई प्रोग्रामिंग भाषाओं को कई अलग-अलग कारणों से बनाया गया है, क्योंकि ज्यादातर नए प्रोग्रामिंग प्रतिमान हैं, या हार्डवेयर में प्रगति के कारण लोग मल्टीटास्किंग, आदि जैसे नए हार्डवेयर सुविधाओं का लाभ उठाने के लिए नई भाषा बनाते हैं।
मेरे मामले में, मैं आमतौर पर छोटे कंपाइलरों (एक नई प्रोग्रामिंग भाषा के साथ) का निर्माण करता हूं, विशेष कारण के लिए। यदि मैं गेम का आबंटन करता हूं, और मुझे विश्वास है कि विशेष रूप से खेल विकास के लिए बनाई गई एक प्रोग्रामिंग भाषा के परिणामस्वरूप छोटे तेज कोड और तेजी से विकास होगा, तो मैं इसका निर्माण करता हूं। और फिर अंत में यह पता चलता है कि इसका उपयोग अन्य सामान्य प्रयोजन प्रोग्रामिंग के लिए भी किया जा सकता है।
मुझे लगता है कि प्रोग्रामिंग भाषा बनाने वाले अधिकांश लोगों के दिमाग में एक विशिष्ट उद्देश्य होता है, ऐसे लोग होते हैं जो उन्हें शुरू से ही सामान्य उद्देश्य के लिए बनाते हैं। लेकिन ज्यादातर नहीं हैं।
वैसे, मुझे लगता है कि वहाँ भी कई प्रोग्रामिंग भाषाएं हैं, लेकिन सौ नए हमेशा सामने आएंगे। कुछ मजेदार, कुछ एक आला उद्देश्य से, एक स्कूल प्रोजेक्ट के रूप में, या अन्य सैकड़ों कारणों से। और जल्द ही या बाद में एक नया लोकप्रिय हो जाएगा। इसका अंत कभी नहीं होने वाला।
इसी कारण से बहुत सारे <जो भी हैं> और हम नए <जो कुछ भी> पैदा करते रहते हैं
उदाहरण के लिए, एक दर्जन से अधिक PHP MVC फ्रेमवर्क हैं, लेकिन लोग हमेशा विशिष्ट जरूरतों को पूरा करने के लिए नए बनाएंगे, किसी अन्य टीम पर निर्भर होने से बचने के लिए, या बस कोशिश करने और कुछ बेहतर बनाने के लिए। यह मूल रूप से हर प्रकार के टूल या एप्लिकेशन के लिए सही है।
यह बहुत अच्छी बात है, मेरी राय में सभी के लिए बहुत बड़ी जीत है।
विश्वविद्यालय प्रोग्रामिंग भाषाओं में बहुत योगदान करते हैं, और इसलिए बहुत बड़े निगमों जैसे एरिक्सन (एरलंग = एरिक्सन भाषा), बेल लैब्स (बी और सी भाषाओं), Google (कुछ महीने पहले की भाषा के रूप में भाषा)। उनमें से कई जो विश्वविद्यालय अनुसंधान के हिस्से के रूप में लिखे गए थे, उनका अधिक उपयोग नहीं किया गया है। हालांकि कुछ उल्लेखनीय अपवाद हैं। मुझे लगता है कि अपनी भाषा / संकलक लिखना सीएस थ्योरी या संबंधित विषयों का अध्ययन करने वाले लोगों के पीएचडी शोध के लिए एक अच्छा विषय है। यह मुझ पर प्रहार करता है कि पायथन एक विचार के आसपास विभिन्न प्रोग्रामरों के सहयोगी ऑनलाइन प्रयास से पैदा होने वाली पहली भाषाओं में से एक है।
कुछ कारण हैं, अधिकांश इसलिए हैं क्योंकि लोग सोचते हैं कि जो मौजूद है वह कुछ समस्याओं को हल करना आसान नहीं बनाता है। कुछ सिर्फ मनोरंजन के लिए या शैक्षणिक रुचि के लिए हैं।
मुझे लगता है कि एक ठोस तर्क है कि आप जिस तरह से सही भाषा को डिज़ाइन करते हैं उसका मुद्दा अभी तक हल नहीं हुआ है (और कभी नहीं हो सकता है)। इसलिए जब तक लोगों के पास नए विचार हैं, जो एक महान भाषा बना देगा, लोग कोशिश करते रहेंगे। उन कोशिशों में से कुछ Erlang की तरह शांत नई जगह को मैप करेंगे और कुछ फ्लॉप होंगे, लेकिन जब तक फ्लॉप से कुछ सीखा जाता है वह भी ठीक है।
पहले की तरह, भाषाएँ कुछ विशिष्ट कार्यों को लक्षित करने की कोशिश करती हैं और नई भाषाएँ एक नए क्षेत्र को लक्षित कर सकती हैं। ये भाषाएं अन्य भाषाओं से सुविधाएँ ले सकती हैं जो वर्तमान में बाहर हैं।
नई भाषाओं के लिए एक और कारण कई अलग-अलग कार्यों को शामिल करने और कई अलग-अलग जरूरतों के लिए पसंद की भाषा बनने की कोशिश कर रहा है। इनमें से कुछ भाषाएं उन सभी भाषाओं को शामिल करने की कोशिश कर रही हैं, जिनका आप हमेशा उपयोग करेंगे, चाहे आपको कोई भी आवश्यकता क्यों न हो।
मैंने अपनी प्रोग्रामिंग भाषाओं की कक्षा में सीखा कि अधिकांश भाषाओं को एक खुजली को खरोंचने के लिए आविष्कार किया गया था। अधिकांश भाषाओं का आविष्कार एल्गोरिदम के कुछ सेट को बेहतर ढंग से व्यक्त करने में सक्षम होने के लिए किया गया था। उदाहरण के लिए, कार्यात्मक भाषाओं को पुनरावर्ती एल्गोरिदम को अधिक अभिव्यंजक स्थान देने के लिए आविष्कार किया गया था।
यह पूछने पर कि इतनी सारी भाषाएं क्यों पूछ रहे हैं जैसे C ++ 0x क्यों है? :)
साथ ही, जितनी अधिक भाषाएं आप जानते हैं, उतनी अधिक अभिव्यंजक आप बन सकते हैं - यह प्रोग्रामिंग और प्राकृतिक दोनों भाषाओं में सच है!