क्यों नहीं सभी मौजूदा प्रोग्रामिंग भाषाओं की सबसे अच्छी विशेषताओं को संयोजित करें और इसे एक सार्वभौमिक प्रोग्रामिंग भाषा में फिट करें?
क्यों नहीं सभी मौजूदा प्रोग्रामिंग भाषाओं की सबसे अच्छी विशेषताओं को संयोजित करें और इसे एक सार्वभौमिक प्रोग्रामिंग भाषा में फिट करें?
जवाबों:
एक ही कारण के लिए आप एक स्विस सेना के चाकू का इस्तेमाल चिकन बनाने के लिए नहीं करते हैं ...
स्विस आर्मी चाकू में आमतौर पर एक ब्लेड और साथ ही विभिन्न उपकरण होते हैं, जैसे कि स्क्रूड्राइवर्स और सलामी बल्लेबाज और कई अन्य। इन अटैचमेंट्स को पिवट पॉइंट मैकेनिज्म के माध्यम से चाकू के हैंडल के अंदर रखा जाता है ...
चाकू के डिजाइन और उसके लचीलेपन ने दोनों को दुनिया भर में मान्यता दी है ...
चूंकि
प्रोग्रामिंग में आपके पास एक बहुत बड़ी समस्या डोमेन है। यह डोमेन बेहद और कई दिशाओं में चलता है।
यही कारण है कि एम्बेडेड उड़ान नियंत्रक सी में लिखे गए हैं और वेबसाइटों को पीएचपी, जावा, रेल, .NET और अन्य के होस्ट में लिखा जाता है।
एम्बेडेड फ्लाइट कंट्रोलर के लिए मेरे पास काम करने के लिए लगभग 128 k मेमोरी है और उसके ऊपर अगर मेरे कोड से विमान दुर्घटनाग्रस्त हो जाता है, तो 200 लोग मर जाते हैं और मुझे $ 1B की ट्यून मिल जाती है, और इंजीनियरों को भेजना पड़ता है दुनिया में हवाई अड्डा जो कि मेरे ग्राहकों को $ 10M / दिन की दर से ग्राउंड किए गए विमानों को ठीक करने के लिए है। मुझे एक ऐसी भाषा के साथ काम करना है जो बहुत तंग है और इसमें बहुत सारे चलते हुए हिस्से हैं जो गलत हो सकते हैं।
अपने वेब एप्लिकेशन के लिए मेरे पास काम करने के लिए कई जीबी मेमोरी है, लेकिन नेटवर्क की गति सीमित है (हर रोज कुछ हद तक, लेकिन यह शायद वेब की सबसे बड़ी सीमा है)। मैं एक ऐसी भाषा को देख रहा हूँ, जो मुझे एक टन सुविधाएँ देती है और ऐसे उत्पादन का उत्पादन करती है, जो जितनी जल्दी हो सके प्रसारित किए जा सकते हैं। मुझे वास्तव में परवाह नहीं है यदि मेरी साइट नीचे जाती है, तो मैं शायद कुछ बिक्री ($ 100) खो दूंगा और उपयोग के मामले को पैच करना होगा जो कि बमबारी, कोई बड़ी बात नहीं है।
वेब साइट पर 15years से अधिक के लिए C में नहीं लिखा गया है (किसी को भी कोई cgi स्क्रिप्ट?) और जहाँ तक मुझे पता है कि फ्लाइट कंट्रोलर अभी C ++ को देखने लगे हैं, लेकिन तब भी बहुत प्रतिबंधित तरीके से।
यदि आपके पास कोई टूलबॉक्स नहीं है, या केवल खोखले हैंडल में पेचकश बिट्स के साथ उन छोटे हथौड़ों में से एक है, तो मुझे आपके लिए बहुत सहानुभूति है।
गंभीरता से। यदि आप एक ऑटो की दुकान पर जाते हैं, तो क्या आपके मैकेनिक के पास टूलचस्ट में केवल एक ही ऐसा है? वह (या वह) एक पेशेवर है, जिसमें पेशेवर-ग्रेड उपकरण विशेष रूप से विभिन्न ऑटोमोबाइल मरम्मत कार्यों को करने के लिए डिज़ाइन किए गए हैं।
इसी तरह, व्यावसायिक सॉफ्टवेयर डेवलपर्स को अपने व्यापार को करने के लिए पर्याप्त उपकरण होना चाहिए। यदि आप अपना टूलबॉक्स खोलते हैं और केवल [एक फिलिप्स पेचकश के बराबर सॉफ्टवेयर] देखते हैं, तो आप खुद को पेशेवर नहीं मान सकते।
आप एक बोल्ट को एक ओपन-एंड रिंच, एक बॉक्स-एंड रिंच, एक शाफ़्ट रिंच या एक समायोज्य रिंच के साथ बदल सकते हैं। तुम भी एक चुटकी में एक मोड़ मोड़ सकते हैं पर्ची-संयुक्त सरौता के साथ, अनाड़ी रूप से, मामूली से गंभीर क्षति के साथ। लेकिन स्लेज हथौड़ा के साथ बोल्ट को मोड़ना काफी मुश्किल है।
दूसरों के लिए एक अलग तरह का उत्तर - मुझे वास्तव में लगता है कि एक भाषा के लिए "सार्वभौमिक" बनने की क्षमता है , कई अन्य भाषाओं की सुविधाओं और प्रतिमानों को अनुमति देता है, हालांकि शायद एक कड़ाई से डिजाइन की गई भाषा जो आप के बारे में नहीं सोच रहे होंगे।
ऊपर दिए गए brettmjohnson के सादृश्य का उपयोग करने के लिए , यह विचार कि प्रत्येक प्रोग्रामिंग भाषा एक बॉक्स के अंदर (या एक सेना की चाकू पर) उपकरण है जो हर कोई बना रहा है, लेकिन वास्तव में एक दोषपूर्ण धारणा है।
क्या होगा यदि प्रोग्रामिंग भाषा टूलबॉक्स थी?
मेरा मतलब है, क्या होगा अगर आप अपनी पसंद के अनुसार भाषा से सुविधाओं को जोड़ सकते हैं और हटा सकते हैं, और आपके पास आवश्यक उपकरण के साथ अपना टूलबॉक्स है - भले ही उपकरण अलग-अलग उद्देश्यों के लिए हों।
अवधारणा पहले से ही आंशिक रूप से मौजूद है। उदाहरण के लिए, नेमेर्ले जैसी भाषाएं आपको भाषा में वाक्यविन्यास जोड़ने की अनुमति देती हैं , और इस तरह, आप "भाषा एक्स से सबसे अच्छी सुविधा" लेने में सक्षम हो सकते हैं, और इसे नेमेर्ले (या अपने खुद के) में जोड़ सकते हैं। यह जरूरी नहीं है कि हर समय या तो अपना मैक्रोज़ लिखना है - प्रत्येक भाषा (या प्रतिमान) को एक मानक पुस्तकालय में एक मैक्रो के अंदर परिभाषित किया जा सकता है - जैसे कि आप कर सकते हैं import Haskell; import Prolog;
, और दो भाषाओं को लिखना शुरू कर सकते हैं जैसे कि यह का हिस्सा था आपकी भाषा?
फिर सवाल यह है कि आपको एक दूसरे के साथ काम करने के लिए विभिन्न भाषाओं / प्रतिमानों की विशेषताएं कैसे मिलती हैं? हालांकि, मैं इसका जवाब नहीं दे सकता, कि .Net और JVM जैसे ढांचे कुछ समाधान पेश करते हैं - जिस तरह से संकलित किए जाने के कारण भाषाएँ कम से कम आंशिक रूप से संगत हैं। आप उदाहरण के लिए C # में लिखे गए किसी भी कोड को ले सकते हैं, और इसे F # से बिना किसी शिकायत के उपयोग कर सकते हैं।
आज के रूप में समाधान के साथ 'समस्या', यह है कि इन भाषाओं का एक साथ उपयोग करने के लिए आपको उन्हें अलग-अलग परियोजनाओं के रूप में बनाने की आवश्यकता होती है, जो एक दूसरे का संदर्भ नहीं दे सकते हैं - आपके पास केवल 1 तरीका संदर्भ हो सकता है। भाषा अवरोध यह है कि प्रत्येक परियोजना किसी अन्य परियोजना तक पहुँचने से पहले कॉमन इंटरमीडिएट भाषा के लिए अलग से सभी फाइलों को संकलित करती है।
उस अवरोध को हटाने की दिशा में एक कदम पत्थर को विभिन्न भाषाओं के कोड (जैसे, C # और F #) को एक ही परियोजना के अंदर संकलित करने की अनुमति होगी। सिद्धांत रूप में आप प्रत्येक फ़ाइल को अलग-अलग (या समूहों में - यदि उनके पास आंशिक प्रकार या परिपत्र संदर्भ हैं) संकलित कर सकते हैं, और फिर एक अलग भाषा की फ़ाइलों को संकलित कर सकते हैं जो पहले से संकलित (CIL) ऑब्जेक्ट तक पहुंच सकते हैं। आपको इसके लिए संकलन के क्रम को कड़ाई से परिभाषित करने की आवश्यकता होगी, हालांकि - लेकिन F # के मामले में संकलन के आदेश की आवश्यकता है।
वैसे भी, मैं यह नहीं कह रहा हूं कि "निश्चित रूप से एक सार्वभौमिक भाषा हो सकती है"। मैं सुझाव दे रहा हूं कि वर्तमान में जो भाषाएं मौजूद हैं, उनके बीच बेहतर अंतर करने की क्षमता है। हकीकत में, बहुत जल्द इसमें सुधार होने की संभावना नहीं है, बस इतनी बड़ी मात्रा में काम करने के लिए एक भाषा और पुस्तकालयों को लागू करना है, इसका उपयोग करने के लिए आवश्यक उपकरण आदि।
कुछ भाषाओं की सर्वश्रेष्ठ विशेषताएँ दूसरों की सर्वोत्तम विशेषताओं के साथ संघर्ष करती हैं।
उदाहरण के लिए: टाइप अवगत प्रतिबिंब एक बहुत अच्छी सुविधा है, लेकिन यह बहुत ही टाइप की गई भाषा में बहुत अधिक मूल्य का नहीं होगा, लेकिन कई बार ढीला टाइपिंग भी एक वास्तविक लाभ हो सकता है।
यहां तक कि एक भाषा के भीतर आप हमेशा एक ही समय में सभी सर्वोत्तम सुविधाओं का उपयोग नहीं कर सकते क्योंकि वे एक-दूसरे के साथ संघर्ष करते हैं।
"हरफन मौला, हरफन अधूरा।" विचार कौंधना।
कुछ कार्यक्रमों में गति की आवश्यकता होती है, अन्य में बड़ी मात्रा में मेमोरी या डिस्क तक तेजी से पहुंच होती है। कुछ भाषाएं एक में अच्छी हैं, लेकिन दूसरी में बुरी हैं - मुझे नहीं लगता कि आपको ऐसी भाषा मिलेगी जो बिल्कुल अच्छी थी।
इसलिए, जब आप किसी भी भाषा में वस्तुतः कोई भी कार्यक्रम लिख सकते हैं, तो उस समस्या को हल करने के लिए आप जो "सर्वश्रेष्ठ" प्रोग्राम लिख सकते हैं, उसकी गारंटी नहीं है।
वहाँ है। कोई भी उपकरण सब कुछ के लिए सबसे अच्छा नहीं है, लेकिन कुछ उपकरण जैसे कई प्रोग्रामिंग भाषाएं सभी उद्देश्यों के लिए सेवा करती हैं, सभी के लिए सर्वोत्तम नहीं ।
आप नौकरी के लिए सबसे अच्छा साधन चुन सकते हैं लेकिन सभी उद्देश्यों पर उपयोग की जाने वाली प्रोग्रामिंग भाषाएं हैं और आप उन्हें चुन सकते हैं। मैं इसकी अनुशंसा नहीं करता, लेकिन यह संभव है।
कुछ के कारण मैं "सामान्यीकरण / विशेषज्ञता विरोधाभास" कहता हूं, जिसमें शायद एक और नाम है और वास्तव में एक विरोधाभास नहीं है
एक प्रोग्रामिंग भाषा को जितना अधिक सामान्यीकृत किया जाता है उतना ही कुछ को पूरा करने के लिए अधिक कोड होता है। भाषा जितनी अधिक विशिष्ट होगी उतनी ही कम आप इसे पूरा कर सकते हैं।
भाषाएं लोगों के सोचने के तरीके को आकार देती हैं। यह प्राकृतिक भाषाओं के लिए सच है। यदि कोई बच्चा "एक, दो, कई" संख्याओं के साथ केवल एक भाषा जानता है, तो उस बच्चे को गणित पढ़ाना मुश्किल है। (क्षमा करें, मेरे पास लिंक नहीं है) अंग्रेजी में हम अलग-अलग समय के बारे में बात करते हैं जैसे कि वे स्थान थे - इसलिए समय यात्रा की अवधारणा की कल्पना करना संभव है। कुछ अन्य भाषाओं में, समय यात्रा का विचार इसके बोलने वालों को कभी नहीं होगा ।
यह प्रोग्रामिंग भाषाओं के लिए भी सही है।
इसलिए यदि हमारे पास एक एकल प्रोग्रामिंग भाषा है, तो हर कोई सभी कम्प्यूटेशनल कार्यों के बारे में बिल्कुल एक जैसा सोचेगा। इस प्रकार हम विकल्पों की खोज नहीं करेंगे, और कुछ करने का सबसे अच्छा तरीका अनदेखा ही रहेगा।
हमारे पास एक सार्वभौमिक भाषा के लिए निकटतम चीज़ है सी। सी। मैप्स अंतर्निहित हार्डवेयर अवधारणाओं के बहुत करीब है (कैसे चीजें वास्तव में हार्डवेयर में हो जाती हैं) और हर * भाषा में प्रोग्राम सी के लिए परिवर्तनीय हैं (देखें कि कैसे CFront कोडांतरक के लिए सी कंपाइलर का उपयोग किया जाता है) कार्य) सी के साथ समस्या मूल रूप से है कि उपर्युक्त रूपांतरण सी प्रोग्रामर के दृष्टिकोण से कोई मतलब नहीं रखते हैं।
"लैम्ब्डा" हमेशा सी में संभव था। वाक्य रचना बंद है, जिसमें पूरे प्रोजेक्ट / फ़ाइल के चारों ओर कोड शामिल है, इसलिए यह एक पसंदीदा समाधान नहीं था। नो-कैप्चर / अपवेल्यू / आदि संस्करण के साथ, कहीं और फ़ंक्शन को परिभाषित करें, और फ़ंक्शन को पॉइंटर पास करें। (देखें qsort () ) कैप्चर किए गए मानों के साथ लैम्ब्डा का उपयोग करने के लिए, कोड की मात्रा और जटिलता को आपको बहुत लिखना पड़ता है - जहां तक मुझे पता है कि किसी ने कभी भी वास्तव में सी की प्रोग्रामिंग की इस पद्धति का उपयोग करने के लिए कोड लिखा है। जैसा कि उन भाषाओं के विपरीत है जहाँ लंबोदर भाषा का हिस्सा हैं, और मूल रूप से हर जगह उपयोग किया जाता है।
C और C ++ के बीच मुख्य अंतर यह है कि आप अपने लिए सामान की देखभाल के लिए C ++ से कैसे पूछ सकते हैं ; लेकिन तब आप कोड की केवल एक पंक्ति से, अब यह नहीं देख सकते हैं कि आप वास्तव में कितना पूछ रहे हैं। उत्तर बन जाता है: यह निर्भर करता है (इस सभी अन्य कोड पर)।
कुछ प्रोग्रामिंग भाषाएं विशिष्ट कार्यों के लिए उत्कृष्ट हैं, लेकिन जहां दुनिया भर में उपयोग किए जाने वाले अधिकांश वर्तमान कार्यक्रम केवल उस भाषा में प्रोग्राम किए जाने से कोई मतलब नहीं होगा। यही है, अगर उस कार्यक्रम को लागू करने के लिए भाषा का उपयोग किया जा सकता है, जो कि एक दिया नहीं है।
यूनिवर्सल लैंग्वेज होने की तकनीकी खूबियों पर असंभवता? वह कुल बकवास है। आप कर सकते थेएक सार्वभौमिक भाषा है जिसमें सभी आधार शामिल हैं। समस्या ज्यादातर ऐतिहासिक है: विभिन्न भाषाओं का आविष्कार विभिन्न चीजों को करने और विभिन्न समुदायों में उपयोग करने के लिए किया गया था। उनमें से कई फंस गए। उस प्राथमिकताओं में जोड़ें (vi! Emacs! रुको, मेरा मतलब जावा था! C #, रुको मेरा मतलब है Microsoft, ओपन सोर्स इत्यादि इत्यादि) और ऐतिहासिक दुर्घटनाओं की सामान्य एम्बेडिंग ... एक छोटी सी भूमि में प्राकृतिक भाषाओं को देखें। कुछ यूरोपीय देशों की तरह मास इस विषय को देखने के लिए कितना पागल हो सकता है। कुछ शहरों का अपना गौरव और आनंद है, थोड़ी बोली जो केवल वे बोलते हैं। राष्ट्र और प्रोग्रामिंग समुदाय अलग नहीं हैं, और न ही प्रोग्रामिंग समुदाय अधिक तर्कसंगत हैं। यदि वे थे, तो हम सभी यूनिवर्सल सोमेथिन 'सोमेथिन' में एस्पर्टेंटो और कार्यक्रम बोलेंगे ...
यह सोचना एक गलती है कि "सभी विशेषताओं का संयोजन" एक बेहतर भाषा बना देगा।
आप एक फूला हुआ, जटिल, अपठनीय गंदगी के साथ समाप्त होने की अधिक संभावना रखते हैं।
अच्छी भाषा के डिजाइन के लिए पसंद और ट्रेड-ऑफ की आवश्यकता होती है। यकीनन सबसे अच्छी / सबसे क्रांतिकारी / सबसे सफल भाषाएं वे हैं जो कुछ बाहर निकालती हैं और उदाहरण के लिए नई चीजों को जोड़ने के बजाय एक बेहतर विकल्प प्रदान करती हैं।
अंकल बॉब मार्टिन - द लास्ट प्रोग्रामिंग लैंग्वेज द्वारा इस शीर्ष पर एक शानदार बात की गई है
goto
। लेकिन मुझे बाकी का जवाब पसंद है। C की मुख्य बात यह है कि आपको इस बात की परवाह नहीं है कि स्मृति में सब कुछ कहाँ है और उस समय क्या रजिस्टर में है, और यह प्रोग्राम काउंटर को छुपाता है (सटीक पते के संदर्भ में यह फिर से बैठा है, आप इसे स्थानांतरित कर सकते हैं। एक गोटो के साथ परिशुद्धता के लगभग एक विधानसभा स्तर पर)।
ऐसा कोई टूल नहीं है जिसमें सभी बेहतरीन सुविधाएँ हों। उदाहरण के लिए, जावास्क्रिप्ट और योजना की एक अच्छी विशेषता यह है कि वे छोटे हैं, इसलिए यदि आप पैकिंग सुविधाएँ शुरू करते हैं, तो आप पहले ही इस पर हार चुके हैं।
फिर भी कोबरा अन्य भाषाओं की सभी अच्छी विशेषताओं के होने की दिशा में आशाजनक लगता है। :-)
क्योंकि यदि आप ऐसी भाषा बनाते हैं, तो यह अभी तक एक और नई भाषा होगी। आपको एक बड़ा प्रशंसक आधार मिल सकता है, लेकिन अन्य सभी भाषाएँ अभी भी मौजूद होंगी।
C अभी भी मौजूद है, हालांकि कई नई भाषाओं का आविष्कार किया गया था।
आप कह सकते हैं कि अजगर एक ऐसी सार्वभौमिक भाषा है, लेकिन फिर माणिक भी है।
कई भाषाएं होने का कारण सिर्फ यह है कि कई प्रोग्रामर हैं और उनमें से कुछ नई भाषाएं बनाना पसंद करते हैं।
कारण यह है कि कोई भी सार्वभौमिक भाषा नहीं है जिस पर सभी सहमत हैं कि एक शिल्प के रूप में प्रोग्रामिंग कुछ संस्था द्वारा तय नहीं की जाती है जो सभी निर्णय लेती है। हर कोई स्वतंत्र है कि वे क्या चाहते हैं।
ये अच्छी बात है।
अब तक जो कुछ भी लिखा गया है, उसमें बहुत नया औचित्य जोड़ना कठिन है, लेकिन मैं कुछ ही शब्दों में बताऊंगा।
विकास: यह केवल जैविक प्रणाली नहीं है जो कि शुरू की जाती है, उत्परिवर्तित होती है और संसाधनों के लिए एक अस्तित्व की प्रतिस्पर्धा और अपने स्वयं के कॉल के लिए एक आला से गुजरती है। प्रतियोगिता अच्छी है और चीजों को आगे बढ़ाती है।
परिपक्वता: हम कंप्यूटर की भाषाओं को शायद एक सदी से भी कम समय से बना रहे हैं। हमारे पास इसका उत्तर अभी तक नहीं है क्योंकि हम अभी तक सभी प्रश्नों को नहीं जानते हैं।
अलग उत्पत्ति: इसके लिए सही शब्द निश्चित नहीं है, लेकिन दुनिया में उनकी कई लेखन प्रणालियां हैं जो कई भौगोलिक क्षेत्रों में शुरू हुई हैं। क्यूनिफॉर्म के बारे में सोचें जो मिट्टी की गोलियों में नक्काशी की मांग के द्वारा भाग में तय की गई थी। संस्कृत, ग्रीक, हिब्रू, रोमन, अरबी वर्णमाला के बारे में सोचें। हीरोग्लिफ़िक्स, 6000+ प्रतीकों के साथ सुंदर लेखन की चीनी पद्धति है जो कई पूर्वी एशियाई देशों में साझा की जाती है। साइरिलिक, कताकाना और हिरिगाना जैसे ध्वन्यात्मक आधार के साथ अधिक आधुनिक मिश्रित वर्णमालाओं के बारे में सोचें। मैं एक भाषाविद् नहीं हूं, इसलिए अशुद्धियों को बहुत कठोर रूप से न सुलझाएं, लेकिन जब दुनिया भर में संस्कृतियों को किसी चीज की आवश्यकता होगी, तो वे इसे बनाएंगे और इसे अपनी आवश्यकता से बाहर कर देंगे। जब दुनिया भर में संचार और इम्पीरियल और मैट्रिक सिस्टम की तरह कंप्यूटर की भाषाएं आती थीं, शक्तिशाली विचार नेतृत्व वाले स्थानों से आया है। लेकिन प्रोग्रामिंग भाषाएं कई अलग-अलग संस्कृतियों (उनमें से कुछ कॉर्पोरेट संस्कृतियों) की सेवा करती हैं, इसलिए वे उन लोगों को प्रतिबिंबित करते हैं जिन्होंने उन्हें बनाया था। कंप्यूटर भाषाएं सांस्कृतिक विरासत के साथ आती हैं जिन्होंने अपने डिजाइन और उपयोग को आकार दिया। OS कर्नेल संस्कृति में, C और C ++ के जावा (या आसपास के अन्य तरीके) के लिए जल्द ही पदावनत होने की संभावना नहीं है क्योंकि वे देशी कोड पीढ़ी की अनुमति देते हैं, हार्डवेयर एब्स्ट्रक्शन लेयर्स बनाने के लिए हार्डवेयर के साथ करीबी / कुशल युग्मन, और एक बड़े आकार के आधार पर आधारित होते हैं।
डिजाइन की रूपरेखा: प्रोग्रामिंग भाषाएं विभिन्न संगठनात्मक प्रतिमानों का उपयोग करने के बारे में आती हैं। COBOL और Ada उन समितियों से थे जो डीओडी का हिस्सा थीं जिनमें बहुत अधिक पदानुक्रम था। अगर मुझे सही ढंग से C, C ++, Java याद आता है, और शायद कई अन्य एक या कई डिजाइनरों से आए हैं। फ्रेड ब्रुक्स ने समिति के परिणामों की तुलना बनाम अपने पेपर में दूरदर्शी आधारित दृष्टिकोण, डिजाइन के डिजाइन (http://www.youtube.com/watch?v=pC-DlX-PaF4) से की है। यदि हम आज या तो दा विंची का चयन करने के लिए बैठ गए हैं या सार्वभौमिक प्रोग्रामिंग भाषा को परिभाषित करने के लिए एक समिति का चयन करते हैं, तो क्या हमें पता होगा कि इसे किस विधि से या किस पद्धति से स्थापत्य किया जाना चाहिए?
शायद इस सब पर थोड़ा अलग तिरछा:
भाषा क्या है? हास्यास्पद रूप से सरल होने के लिए, यह शब्दावली, वाक्यविन्यास और शब्दार्थ है।
प्रोग्रामिंग भाषा के साथ पहली बात क्या है?
आप चीजों को परिभाषित करते हैं - कक्षाएं, चर, विधियां - आप शब्दावली और शब्दार्थ का विस्तार करते हैं।
क्यों? तो अब आप इसमें वो बातें कह सकते हैं जो आप पहले नहीं कह सकते थे।
यह पसंद है या नहीं, आपने एक नई विशेष-प्रयोजन भाषा बनाई है।
IMHO, एक सामान्य-प्रयोजन की भाषा में देखने की बात यह है कि अगर यह विशेष-उद्देश्य वाली भाषाओं को बनाना आसान बनाता है।
स्विस-आर्मी-चाकू तर्क के अलावा (जिसमें एक बिंदु है - एक डोमेन-विशिष्ट की तुलना में एक अच्छी चौड़ी स्पेक्ट्रम भाषा को डिजाइन करना अधिक कठिन है - लेकिन इसका मतलब यह नहीं है कि ऐसी भाषा दोनों नहीं होगी संभव और एक अच्छा विचार), "सबसे अच्छी सुविधाओं के संयोजन" के साथ समस्याएं हैं:
संक्षेप में, भाषा डिजाइन कठिन और उससे अधिक जटिल है। हालाँकि, आप स्काला पर एक नज़र रखना चाहते हैं ।
विजुअल बैच कस्टमाइज़िंग प्रोग्रामिंग लैंग्वेज का एक प्रयास है। नीचे दिए गए लिंक से पता चलता है कि कैसे इस प्रोग्रामिंग इंटरफ़ेस को यूनिवर्सल प्रोग्रामिंग लैंग्वेज की जरूरतों के अनुकूल बनाया जा सकता है।
http://sourceforge.net/apps/phpbb/visualbatch/viewtopic.php?f=4&t=4
एक सार्वभौमिक प्रोग्रामिंग भाषा है। इसे "मशीन भाषा" कहा जाता है और किसी भी अन्य कंप्यूटर भाषा में सब कुछ अंततः मशीन भाषा के रूप में निष्पादित किया जाता है।
वो कैसा दिखता है? 0-9 और वायुसेना की एक स्ट्रिंग।
लेकिन यह उपयोग करने के लिए एक कुतिया है। इसलिए एलन एक ऐसी भाषा का आविष्कार करता है जिसका अनुवाद मशीन भाषा में किया जा सकता है और यह अधिक उपयुक्त है कि एलन क्या करना चाहता है। बिल क्या करना चाहता है, इसके लिए बिल एक अलग भाषा का आविष्कार करता है। लंबे समय से पहले आपको कोबोल और फोरट्रान और लिस्प और जावा मिला है। वे सभी मशीनी भाषा के सरल संस्करण हैं, कुछ प्रकार के कार्यक्रमों को लिखना आसान है, लेकिन अन्य प्रकार के कार्यक्रमों को लिखने के लिए कठिन या असंभव है। एक लेखांकन के लिए अच्छा है, दूसरा अंतरिक्ष यान को नियंत्रित करने के लिए अच्छा है।
यहां अधिकांश उत्तर प्रत्येक समस्या के लिए सबसे अच्छा उपकरण का उपयोग करने पर ध्यान केंद्रित करते हैं। मेरा मानना है कि यह एक अच्छा पर्याप्त कारण है।
यदि आप बड़ी कंपनियों को देखते हैं, तो आमतौर पर कंपनी भाषाओं और प्रौद्योगिकियों के एकल (या छोटी संख्या) का उपयोग करेगी, भले ही एक विशिष्ट परियोजना के लिए कुछ बेहतर भाषा हो।
ऐसा इसलिए किया जाता है क्योंकि बेहतर मानकीकरण, आसान समर्थन, कोड शेयरिंग इत्यादि से होने वाले लाभ (सबसे अधिक) बड़े होते हैं, फिर एक विशिष्ट भाषा के अतिरिक्त मूल्य।
मुझे लगता है कि सभी "क्योंकि आप एक पेंसिल के साथ मूर्तियों की नक्काशी नहीं करते हैं" उत्तर बिंदु को याद कर रहे हैं।
यहाँ कौन, TRULY हर नए प्रोजेक्ट से पहले एक भाषा का चयन करता है?
सच यह है, हम केवल कुछ ही प्रोग्रामिंग भाषाओं की जरूरत है, और प्रोग्रामिंग दुनिया कि जिस तरह से बेहतर होगा: लोगों को बनाने पर ध्यान केंद्रित करेंगे पटकथा भाषा के बजाय बेहतर उदाहरण के लिए अजगर / रूबी / पर्ल / younameit में फैले जा रहा है।
C # को विंडोज़ के लिए / पर प्रोग्राम किया जाता है (ठीक है, वहाँ मोनो है, यहाँ कोई भी हर दिन मोनो ऐप के तहत C # चलाता है?) और जिससे उपयोगकर्ता Windows7 / 8 खरीदते हैं, और जो Microsoft के लिए पैसे कमाता है।
अन्य कंपनियां भी ऐसा ही करती हैं, तब खुला स्रोत बेहतर जानता है, फिर मिस्टर जीनियस भी ... और हमें बहुत सारी लुक-समान भाषाएं मिलीं, यह सिर्फ मानवता का आत्म-केंद्रित स्वभाव है।
हमें इस प्रश्न का उत्तर देने के लिए अर्थशास्त्र को देखना चाहिए। यदि यह व्यवसाय की धनराशि को केवल एक भाषा के लिए सहेजता है, तो हमारे पास यह होगा। वे इस पर मानकीकरण करेंगे और सभी को इसका उपयोग करने की आवश्यकता होगी। अन्य भाषाओं में धूल भरी अकादमिक इमारतों और जंगली आंखों वाले उत्साही लोगों के तहखाने होंगे। ऐसा नहीं हुआ है, इसलिए उनका सार्वभौमिक प्रोग्रामिंग भाषा में कोई लाभ प्रोत्साहन नहीं होना चाहिए या अब तक स्वाभाविक रूप से विकसित हो गया होगा।