सभी उद्देश्यों को पूरा करने वाली "सार्वभौमिक" प्रोग्रामिंग भाषा क्यों नहीं हो सकती है? [बन्द है]


57

क्यों नहीं सभी मौजूदा प्रोग्रामिंग भाषाओं की सबसे अच्छी विशेषताओं को संयोजित करें और इसे एक सार्वभौमिक प्रोग्रामिंग भाषा में फिट करें?


23
'सर्वश्रेष्ठ' शब्द व्यक्तिपरक है, इसलिए आपके पास कभी भी एक सर्वश्रेष्ठ स्वीकार नहीं किया जाएगा। निस्संदेह, काफी सारी भाषाएँ हैं जो सभी प्लेटफार्मों पर विकास की व्यापक सीमाओं के लिए उपयुक्त हैं। C ++ और Java मुख्य दो है।
ग्रैंडमास्टरबी

5
@GrandmasterB आप C #
डैनियल लिटिल

15
वहाँ है, इसे 'C' कहा जाता है
मार्टिन बेकेट

9
हम एक प्रजाति के रूप में असहमत होने की एक सहज क्षमता रखते हैं (हमारे व्यक्तित्व के आधार पर), इसलिए हम कभी भी इस बात पर सहमत नहीं होंगे कि सार्वभौमिक रूप से क्या आवश्यक है, और इसलिए वहाँ कभी नहीं होगा (कम से कम मनुष्यों द्वारा निर्मित नहीं!)
निम

9
एक सार्वभौमिक प्रोग्रामिंग भाषा? आपका मतलब, सार्वभौमिक मानव भाषा के अनुरूप है जिसे सभी ने इतने साल पहले स्विच किया था?
क्युरेलसा

जवाबों:


116

एक ही कारण के लिए आप एक स्विस सेना के चाकू का इस्तेमाल चिकन बनाने के लिए नहीं करते हैं ...

http://upload.wikimedia.org/wikipedia/commons/thumb/4/48/My_swiss_army_knife.JPG/800px-My_swiss_army_knife.JPG

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

चाकू के डिजाइन और उसके लचीलेपन ने दोनों को दुनिया भर में मान्यता दी है ...


26
उसी कारण से आप एक मिनीवैन को ड्रैग रेस में नहीं लाते हैं। उसी कारण से आप एक द्वंद्वयुद्ध के लिए पानी की पिस्तौल नहीं लाते हैं।
क्रिस

19
@ क्रिस क्या अगर यह एक पानी पिस्तौल द्वंद्वयुद्ध है?
जंग

44
उसी कारण से जब आप मृत्यु रेखा पर होते हैं तो आप कभी भी सिसिलियन के साथ नहीं जाते हैं।
जंग

6
यदि आपके पास एक सेना का चाकू था, जो एक घर बनाने के लिए आपके लिए आवश्यक सभी चीजें थीं, तो क्या यह उनमें से किसी पर भी अच्छा होगा?
ब्रैड मेस ऑक्ट

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

80

चूंकि

  1. कोई भी सभी विरासत कोड को फिर से लिखना नहीं चाहता है।
  2. सभी उद्देश्यों पर सहमत होना मुश्किल है
  3. एक बार जब आप उद्देश्यों की एक व्यापक सूची तैयार कर लेते हैं, तो इससे पहले कि आप इसे बना सकें, वे बदल जाएंगे।
  4. कोई व्यक्ति एक नए उद्देश्य के कारण पूरी तरह से अलग भाषा शुरू करेगा।
  5. माइक्रोसॉफ्ट
  6. सेब
  7. खुला स्त्रोत
  8. हम सभी बैबेल मछली के साथ क्या करेंगे?
  9. SQL को भी सार्वभौमिक नहीं बनाया जा सका।

आपने छोटा कर दिया। मैं उन हा-हा-केवल-गंभीर "टॉप 10" सूचियों में से एक की उम्मीद कर रहा था।
जेफरी हेंटिन

4
रोकथाम के लिए +1, कम से कम अभी के लिए, "सेव द बाबेल फिश" अभियान। धिक्कार है हिप्पी।
जंग

2
कोलाहल मछली के रूप में, सुशी बनाने के लिए!
मुदितिब

1
बिंदु 1 के बारे में, सभी लीगेसी कोड अंत में या तो किया जा फिर से लिखा होगा वैसे भी कोड / पुस्तकालयों में नवीनतम सनक का उपयोग कर या समर्थन की लागत का हास्यास्पद राशि के बिना प्रभावी ढंग से चलाने के लिए नहीं कर सकेंगे।
माइकल

38

प्रोग्रामिंग में आपके पास एक बहुत बड़ी समस्या डोमेन है। यह डोमेन बेहद और कई दिशाओं में चलता है।

यही कारण है कि एम्बेडेड उड़ान नियंत्रक सी में लिखे गए हैं और वेबसाइटों को पीएचपी, जावा, रेल, .NET और अन्य के होस्ट में लिखा जाता है।

एम्बेडेड फ्लाइट कंट्रोलर के लिए मेरे पास काम करने के लिए लगभग 128 k मेमोरी है और उसके ऊपर अगर मेरे कोड से विमान दुर्घटनाग्रस्त हो जाता है, तो 200 लोग मर जाते हैं और मुझे $ 1B की ट्यून मिल जाती है, और इंजीनियरों को भेजना पड़ता है दुनिया में हवाई अड्डा जो कि मेरे ग्राहकों को $ 10M / दिन की दर से ग्राउंड किए गए विमानों को ठीक करने के लिए है। मुझे एक ऐसी भाषा के साथ काम करना है जो बहुत तंग है और इसमें बहुत सारे चलते हुए हिस्से हैं जो गलत हो सकते हैं।

अपने वेब एप्लिकेशन के लिए मेरे पास काम करने के लिए कई जीबी मेमोरी है, लेकिन नेटवर्क की गति सीमित है (हर रोज कुछ हद तक, लेकिन यह शायद वेब की सबसे बड़ी सीमा है)। मैं एक ऐसी भाषा को देख रहा हूँ, जो मुझे एक टन सुविधाएँ देती है और ऐसे उत्पादन का उत्पादन करती है, जो जितनी जल्दी हो सके प्रसारित किए जा सकते हैं। मुझे वास्तव में परवाह नहीं है यदि मेरी साइट नीचे जाती है, तो मैं शायद कुछ बिक्री ($ 100) खो दूंगा और उपयोग के मामले को पैच करना होगा जो कि बमबारी, कोई बड़ी बात नहीं है।

वेब साइट पर 15years से अधिक के लिए C में नहीं लिखा गया है (किसी को भी कोई cgi स्क्रिप्ट?) और जहाँ तक मुझे पता है कि फ्लाइट कंट्रोलर अभी C ++ को देखने लगे हैं, लेकिन तब भी बहुत प्रतिबंधित तरीके से।


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

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

24
  1. अपने गेराज (या अपने माता-पिता के गैरेज) पर जाएं।
  2. टूल बॉक्स खोलें।
  3. यदि आप एक से अधिक उपकरण देखते हैं, तो सोचें कि यह आपके प्रश्न पर कैसे लागू होता है।

यदि आपके पास कोई टूलबॉक्स नहीं है, या केवल खोखले हैंडल में पेचकश बिट्स के साथ उन छोटे हथौड़ों में से एक है, तो मुझे आपके लिए बहुत सहानुभूति है।

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

इसी तरह, व्यावसायिक सॉफ्टवेयर डेवलपर्स को अपने व्यापार को करने के लिए पर्याप्त उपकरण होना चाहिए। यदि आप अपना टूलबॉक्स खोलते हैं और केवल [एक फिलिप्स पेचकश के बराबर सॉफ्टवेयर] देखते हैं, तो आप खुद को पेशेवर नहीं मान सकते।

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


यह "माता-पिता के गेराज" सहित के लिए है। यह वास्तव में इसे स्पष्ट करता है, क्योंकि मेरे पास गैरेज नहीं है।
दान रोसेनस्टार्क

5
एक बेहतर सादृश्य होगा एक भाषा कुछ व्यक्तिगत उपकरण के बजाय एक टूलबॉक्स की तरह होती है।
टॉम हॉल्टिन - 15

4
बॉक्स में 20 विभिन्न उपकरण हो सकते हैं। लेकिन मुझे यकीन है कि आपको उनका वर्णन करने के लिए केवल एक भाषा की आवश्यकता होगी।
थॉमसएक्स

2
इन दिनों टूलबॉक्स प्रश्न में भाषा के लिए उपलब्ध पुस्तकालयों की तरह है।
माइकल 10

18

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

ऊपर दिए गए brettmjohnson के सादृश्य का उपयोग करने के लिए , यह विचार कि प्रत्येक प्रोग्रामिंग भाषा एक बॉक्स के अंदर (या एक सेना की चाकू पर) उपकरण है जो हर कोई बना रहा है, लेकिन वास्तव में एक दोषपूर्ण धारणा है।

क्या होगा यदि प्रोग्रामिंग भाषा टूलबॉक्स थी?

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

अवधारणा पहले से ही आंशिक रूप से मौजूद है। उदाहरण के लिए, नेमेर्ले जैसी भाषाएं आपको भाषा में वाक्यविन्यास जोड़ने की अनुमति देती हैं , और इस तरह, आप "भाषा एक्स से सबसे अच्छी सुविधा" लेने में सक्षम हो सकते हैं, और इसे नेमेर्ले (या अपने खुद के) में जोड़ सकते हैं। यह जरूरी नहीं है कि हर समय या तो अपना मैक्रोज़ लिखना है - प्रत्येक भाषा (या प्रतिमान) को एक मानक पुस्तकालय में एक मैक्रो के अंदर परिभाषित किया जा सकता है - जैसे कि आप कर सकते हैं import Haskell; import Prolog;, और दो भाषाओं को लिखना शुरू कर सकते हैं जैसे कि यह का हिस्सा था आपकी भाषा?

फिर सवाल यह है कि आपको एक दूसरे के साथ काम करने के लिए विभिन्न भाषाओं / प्रतिमानों की विशेषताएं कैसे मिलती हैं? हालांकि, मैं इसका जवाब नहीं दे सकता, कि .Net और JVM जैसे ढांचे कुछ समाधान पेश करते हैं - जिस तरह से संकलित किए जाने के कारण भाषाएँ कम से कम आंशिक रूप से संगत हैं। आप उदाहरण के लिए C # में लिखे गए किसी भी कोड को ले सकते हैं, और इसे F # से बिना किसी शिकायत के उपयोग कर सकते हैं।

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

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

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


4
सारी दुनिया एक पीसी नहीं है। इस ग्रह पर अधिकांश प्रोसेसर में कुल मेमोरी स्पेस 64K बाइट्स से कम है। इन प्रोसेसर पर उपयोग की जा सकने वाली भाषा को उन लोगों से इतना कम करना पड़ता है कि इस मंच पर अधिकांश को लगता है कि आपकी सार्वभौमिक भाषा एक बढ़ी हुई विधानसभा भाषा के रूप में समाप्त हो जाएगी। मुझे लगता है कि इसे "सी" कहा जाएगा।
u

10

कुछ भाषाओं की सर्वश्रेष्ठ विशेषताएँ दूसरों की सर्वोत्तम विशेषताओं के साथ संघर्ष करती हैं।

उदाहरण के लिए: टाइप अवगत प्रतिबिंब एक बहुत अच्छी सुविधा है, लेकिन यह बहुत ही टाइप की गई भाषा में बहुत अधिक मूल्य का नहीं होगा, लेकिन कई बार ढीला टाइपिंग भी एक वास्तविक लाभ हो सकता है।

यहां तक ​​कि एक भाषा के भीतर आप हमेशा एक ही समय में सभी सर्वोत्तम सुविधाओं का उपयोग नहीं कर सकते क्योंकि वे एक-दूसरे के साथ संघर्ष करते हैं।


लेकिन अगर यह सुविधाओं सक्षम किया गया था, उदाहरण के लिए जरूरतों को / विकलांग accordind: यदि आप प्रकार के बारे में पता प्रतिबिंब सक्षम और शिथिल टाइप किया भाषा क्षमता और इतने पर ... अक्षम कर सकते हैं
killown

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

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

1
परस्पर विरोधी सुविधाओं के लिए +1
फ्रैंक शीयर सेप

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

7

"हरफन मौला, हरफन अधूरा।" विचार कौंधना।

कुछ कार्यक्रमों में गति की आवश्यकता होती है, अन्य में बड़ी मात्रा में मेमोरी या डिस्क तक तेजी से पहुंच होती है। कुछ भाषाएं एक में अच्छी हैं, लेकिन दूसरी में बुरी हैं - मुझे नहीं लगता कि आपको ऐसी भाषा मिलेगी जो बिल्कुल अच्छी थी।

इसलिए, जब आप किसी भी भाषा में वस्तुतः कोई भी कार्यक्रम लिख सकते हैं, तो उस समस्या को हल करने के लिए आप जो "सर्वश्रेष्ठ" प्रोग्राम लिख सकते हैं, उसकी गारंटी नहीं है।


4

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

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


4

कुछ के कारण मैं "सामान्यीकरण / विशेषज्ञता विरोधाभास" कहता हूं, जिसमें शायद एक और नाम है और वास्तव में एक विरोधाभास नहीं है

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


2
मैं आपसे सहमत हूँ सिवाय इसके कि एक सामान्यीकृत भाषा में विशेष पुस्तकालयों का होना संभव है।
dan_waterworth

@dan: सहमत हैं, लेकिन केवल अगर भाषा पुस्तकालय लेखकों को सुविधाएँ प्रदान करने पर केंद्रित है। मेरी दो पसंदीदा भाषाएं डी और पायथन हैं। दोनों काफी सामान्य भाषाएं हैं (विशेष रूप से डी) लेकिन दोनों में पुस्तकालय लेखकों के लिए बहुत सारी विशेषताएं हैं, इसलिए आप विशेष सामान को संभालने के लिए अपनी खुद की पुस्तकालयों का निर्माण कर सकते हैं। मैं Matlab और R. जैसी सुपर डोमेन विशिष्ट भाषाओं को तुच्छ समझता हूं
dsimcha

4

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

यह प्रोग्रामिंग भाषाओं के लिए भी सही है।

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

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

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

C और C ++ के बीच मुख्य अंतर यह है कि आप अपने लिए सामान की देखभाल के लिए C ++ से कैसे पूछ सकते हैं ; लेकिन तब आप कोड की केवल एक पंक्ति से, अब यह नहीं देख सकते हैं कि आप वास्तव में कितना पूछ रहे हैं। उत्तर बन जाता है: यह निर्भर करता है (इस सभी अन्य कोड पर)।

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


2
"कुछ अन्य भाषाओं में, समय यात्रा का विचार इसके बोलने वालों को कभी नहीं होगा।" प्रशस्ति पत्र की जरूरत। Sapir-Whorf परिकल्पना किसी भी तरह से व्यापक रूप से विशेष रूप से अपने मजबूत रूप में स्वीकार नहीं की जाती है।
मुहम्मद अल्करौरी

4

यूनिवर्सल लैंग्वेज होने की तकनीकी खूबियों पर असंभवता? वह कुल बकवास है। आप कर सकते थेएक सार्वभौमिक भाषा है जिसमें सभी आधार शामिल हैं। समस्या ज्यादातर ऐतिहासिक है: विभिन्न भाषाओं का आविष्कार विभिन्न चीजों को करने और विभिन्न समुदायों में उपयोग करने के लिए किया गया था। उनमें से कई फंस गए। उस प्राथमिकताओं में जोड़ें (vi! Emacs! रुको, मेरा मतलब जावा था! C #, रुको मेरा मतलब है Microsoft, ओपन सोर्स इत्यादि इत्यादि) और ऐतिहासिक दुर्घटनाओं की सामान्य एम्बेडिंग ... एक छोटी सी भूमि में प्राकृतिक भाषाओं को देखें। कुछ यूरोपीय देशों की तरह मास इस विषय को देखने के लिए कितना पागल हो सकता है। कुछ शहरों का अपना गौरव और आनंद है, थोड़ी बोली जो केवल वे बोलते हैं। राष्ट्र और प्रोग्रामिंग समुदाय अलग नहीं हैं, और न ही प्रोग्रामिंग समुदाय अधिक तर्कसंगत हैं। यदि वे थे, तो हम सभी यूनिवर्सल सोमेथिन 'सोमेथिन' में एस्पर्टेंटो और कार्यक्रम बोलेंगे ...


1
समस्या इससे कहीं ज्यादा गहरी है। आपके द्वारा उपलब्ध कराए जाने वाले अधिक विकल्प, उस भाषा में काम करने के तरीके के बजाय स्पष्ट रूप से निर्दिष्ट किए जाने की आवश्यकता है। यदि जावा को C # से तुलना करने के बजाय, आप Prolog के साथ जावा की तुलना करते हैं, तो समस्याएं और अधिक स्पष्ट हो जाती हैं। दोनों की विशेषताओं को एक भाषा में रखने से यौगिक भाषा का वाक्य विन्यास जटिल हो जाएगा। एक अधिक उचित विकल्प सिंटैक्स को कम से कम करना, और किसी भी सुविधा को मेटाप्रोग्रामिंग लाइब्रेरी के रूप में लागू करने की अनुमति हो सकती है। यह मूल रूप से लिस्प करता है, हालांकि यह कोर कुछ नौकरियों के लिए पर्याप्त निम्न स्तर नहीं है।
स्टीव ३४

4

यह सोचना एक गलती है कि "सभी विशेषताओं का संयोजन" एक बेहतर भाषा बना देगा।

आप एक फूला हुआ, जटिल, अपठनीय गंदगी के साथ समाप्त होने की अधिक संभावना रखते हैं।

अच्छी भाषा के डिजाइन के लिए पसंद और ट्रेड-ऑफ की आवश्यकता होती है। यकीनन सबसे अच्छी / सबसे क्रांतिकारी / सबसे सफल भाषाएं वे हैं जो कुछ बाहर निकालती हैं और उदाहरण के लिए नई चीजों को जोड़ने के बजाय एक बेहतर विकल्प प्रदान करती हैं।

  • संरचित प्रोग्रामिंग भाषाएं (सी, पास्कल) - "गोटो" निकालती है, प्रक्रियाओं और संरचित छोरों आदि के साथ बदल जाती है।
  • जावा - "मैनुअल मेमोरी मैनेजमेंट" निकालता है, जीसी / प्रबंधित मेमोरी के साथ बदल देता है
  • हास्केल / क्लोजर - "अनियंत्रित उत्परिवर्तित अवस्था" को बाहर निकालता है
  • लिस्प - सबसे "भाषा वाक्य रचना" निकालता है, एस-भावों के एक लचीले होमोओनिक पेड़ के साथ बदल देता है

अंकल बॉब मार्टिन - द लास्ट प्रोग्रामिंग लैंग्वेज द्वारा इस शीर्ष पर एक शानदार बात की गई है


"संरचित प्रोग्रामिंग लैंग्वेज (C, पास्कल) -" गोटो "को निकालता है, प्रक्रियाओं और संरचित लूप आदि के साथ बदलता है।" - क्षमा करें, आप वहां गलत हैं: C के पास है goto। लेकिन मुझे बाकी का जवाब पसंद है। C की मुख्य बात यह है कि आपको इस बात की परवाह नहीं है कि स्मृति में सब कुछ कहाँ है और उस समय क्या रजिस्टर में है, और यह प्रोग्राम काउंटर को छुपाता है (सटीक पते के संदर्भ में यह फिर से बैठा है, आप इसे स्थानांतरित कर सकते हैं। एक गोटो के साथ परिशुद्धता के लगभग एक विधानसभा स्तर पर)।
व्याट8740

0

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

फिर भी कोबरा अन्य भाषाओं की सभी अच्छी विशेषताओं के होने की दिशा में आशाजनक लगता है। :-)


0

क्योंकि यदि आप ऐसी भाषा बनाते हैं, तो यह अभी तक एक और नई भाषा होगी। आपको एक बड़ा प्रशंसक आधार मिल सकता है, लेकिन अन्य सभी भाषाएँ अभी भी मौजूद होंगी।

C अभी भी मौजूद है, हालांकि कई नई भाषाओं का आविष्कार किया गया था।

आप कह सकते हैं कि अजगर एक ऐसी सार्वभौमिक भाषा है, लेकिन फिर माणिक भी है।

कई भाषाएं होने का कारण सिर्फ यह है कि कई प्रोग्रामर हैं और उनमें से कुछ नई भाषाएं बनाना पसंद करते हैं।

कारण यह है कि कोई भी सार्वभौमिक भाषा नहीं है जिस पर सभी सहमत हैं कि एक शिल्प के रूप में प्रोग्रामिंग कुछ संस्था द्वारा तय नहीं की जाती है जो सभी निर्णय लेती है। हर कोई स्वतंत्र है कि वे क्या चाहते हैं।

ये अच्छी बात है।


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

0

अब तक जो कुछ भी लिखा गया है, उसमें बहुत नया औचित्य जोड़ना कठिन है, लेकिन मैं कुछ ही शब्दों में बताऊंगा।

  • विकास: यह केवल जैविक प्रणाली नहीं है जो कि शुरू की जाती है, उत्परिवर्तित होती है और संसाधनों के लिए एक अस्तित्व की प्रतिस्पर्धा और अपने स्वयं के कॉल के लिए एक आला से गुजरती है। प्रतियोगिता अच्छी है और चीजों को आगे बढ़ाती है।

  • परिपक्वता: हम कंप्यूटर की भाषाओं को शायद एक सदी से भी कम समय से बना रहे हैं। हमारे पास इसका उत्तर अभी तक नहीं है क्योंकि हम अभी तक सभी प्रश्नों को नहीं जानते हैं।

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

  • डिजाइन की रूपरेखा: प्रोग्रामिंग भाषाएं विभिन्न संगठनात्मक प्रतिमानों का उपयोग करने के बारे में आती हैं। COBOL और Ada उन समितियों से थे जो डीओडी का हिस्सा थीं जिनमें बहुत अधिक पदानुक्रम था। अगर मुझे सही ढंग से C, C ++, Java याद आता है, और शायद कई अन्य एक या कई डिजाइनरों से आए हैं। फ्रेड ब्रुक्स ने समिति के परिणामों की तुलना बनाम अपने पेपर में दूरदर्शी आधारित दृष्टिकोण, डिजाइन के डिजाइन (http://www.youtube.com/watch?v=pC-DlX-PaF4) से की है। यदि हम आज या तो दा विंची का चयन करने के लिए बैठ गए हैं या सार्वभौमिक प्रोग्रामिंग भाषा को परिभाषित करने के लिए एक समिति का चयन करते हैं, तो क्या हमें पता होगा कि इसे किस विधि से या किस पद्धति से स्थापत्य किया जाना चाहिए?


0

शायद इस सब पर थोड़ा अलग तिरछा:

भाषा क्या है? हास्यास्पद रूप से सरल होने के लिए, यह शब्दावली, वाक्यविन्यास और शब्दार्थ है।

प्रोग्रामिंग भाषा के साथ पहली बात क्या है?
आप चीजों को परिभाषित करते हैं - कक्षाएं, चर, विधियां - आप शब्दावली और शब्दार्थ का विस्तार करते हैं।

क्यों? तो अब आप इसमें वो बातें कह सकते हैं जो आप पहले नहीं कह सकते थे।
यह पसंद है या नहीं, आपने एक नई विशेष-प्रयोजन भाषा बनाई है।

IMHO, एक सामान्य-प्रयोजन की भाषा में देखने की बात यह है कि अगर यह विशेष-उद्देश्य वाली भाषाओं को बनाना आसान बनाता है।


0

स्विस-आर्मी-चाकू तर्क के अलावा (जिसमें एक बिंदु है - एक डोमेन-विशिष्ट की तुलना में एक अच्छी चौड़ी स्पेक्ट्रम भाषा को डिजाइन करना अधिक कठिन है - लेकिन इसका मतलब यह नहीं है कि ऐसी भाषा दोनों नहीं होगी संभव और एक अच्छा विचार), "सबसे अच्छी सुविधाओं के संयोजन" के साथ समस्याएं हैं:

  • भाषा की विशेषताओं के लिए, "सर्वश्रेष्ठ" व्यक्तिपरक है, या कम से कम (अंतरिम रूप से) यकीनन।
  • कुछ विशेषताएं संगत नहीं हैं; एक भाषा की एक अच्छी विशेषता जब दूसरे से एक अच्छी सुविधा के साथ संयुक्त हो सकती है।
  • हम अभी तक नई सुविधाओं के साथ नहीं आ रहे हैं।

संक्षेप में, भाषा डिजाइन कठिन और उससे अधिक जटिल है। हालाँकि, आप स्काला पर एक नज़र रखना चाहते हैं ।


-2

विजुअल बैच कस्टमाइज़िंग प्रोग्रामिंग लैंग्वेज का एक प्रयास है। नीचे दिए गए लिंक से पता चलता है कि कैसे इस प्रोग्रामिंग इंटरफ़ेस को यूनिवर्सल प्रोग्रामिंग लैंग्वेज की जरूरतों के अनुकूल बनाया जा सकता है।

http://sourceforge.net/apps/phpbb/visualbatch/viewtopic.php?f=4&t=4


-2

एक सार्वभौमिक प्रोग्रामिंग भाषा है। इसे "मशीन भाषा" कहा जाता है और किसी भी अन्य कंप्यूटर भाषा में सब कुछ अंततः मशीन भाषा के रूप में निष्पादित किया जाता है।

वो कैसा दिखता है? 0-9 और वायुसेना की एक स्ट्रिंग।

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


6
मशीन की भाषा सार्वभौमिक नहीं है; आस - पास भी नहीं। प्रत्येक मशीन की अपनी भाषा होती है।
hasen

3
इसके अलावा, यह 0-9 और वायुसेना का तार नहीं है। यह 1 और 0 का है।
डेविड कोनराड

@ हसेन @ डेविड को यह सुझाव देना उचित नहीं है कि @Andy के पास यह है कि हर भाषा, एक डोमेन-विशिष्ट भाषा के दृष्टिकोण से, अन्य भाषाओं पर बनी हो?
आर्मंड

मैंने 0-9 और AF कहा, क्योंकि आपको एक कीपप मशीन पर मल्टी-पंच कोड का उपयोग करने के लिए पता था। यह एक समय में कितना बड़ा हिस्सा है, इसके आधार पर यदि आप इसे संख्या के रूप में लेते हैं तो यह 0-1 या 0-15 या 0-255 जैसा दिखता है। और हंसन सही है; मशीन के प्रत्येक प्रकार की अपनी भाषा होती है। लगभग सभी पीसी आज 80386 कोड स्वीकार करते हैं; यहाँ तक कि मेरा फोन भी करेगा! लेकिन iPad नहीं होगा।
एंडी कैनफील्ड

@ सहजें और व्यापक रूप से विभिन्न विशेषताओं के साथ। एक 6502 प्रोग्रामिंग के लिए आवश्यक मानसिकता एक x86 प्रोग्रामिंग से अलग है और बदले में एक RISC चिप से अलग है। सार्वभौमिक से बहुत दूर।

-2

सिर्फ इसलिए कि,

एक सामान्य कंप्यूटर नहीं है।

यूनिवर्सल प्लेटफॉर्म नहीं।

एक सामान्य प्रोग्रामर नहीं।

और यहां तक ​​कि एक यूनिवर्सल क्लाइंट भी नहीं।

: पी

तो बस हम एक अलग एक के लिए एक अलग की जरूरत है। ;)


-2

यहां अधिकांश उत्तर प्रत्येक समस्या के लिए सबसे अच्छा उपकरण का उपयोग करने पर ध्यान केंद्रित करते हैं। मेरा मानना ​​है कि यह एक अच्छा पर्याप्त कारण है।

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

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


1
मैंने कभी भी 4 से कम अलग-अलग भाषाओं का उपयोग करते हुए किसी भी अच्छे कॉर्पोरेट प्रोजेक्ट को नहीं देखा है। और मुझे अयोग्य साधनों के चयन से उस "लाभ" में से किसी पर विश्वास नहीं है। यह कभी काम नहीं करता।
एसके-लॉजिक

-3

मुझे लगता है कि सभी "क्योंकि आप एक पेंसिल के साथ मूर्तियों की नक्काशी नहीं करते हैं" उत्तर बिंदु को याद कर रहे हैं।

यहाँ कौन, TRULY हर नए प्रोजेक्ट से पहले एक भाषा का चयन करता है?

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

C # को विंडोज़ के लिए / पर प्रोग्राम किया जाता है (ठीक है, वहाँ मोनो है, यहाँ कोई भी हर दिन मोनो ऐप के तहत C # चलाता है?) और जिससे उपयोगकर्ता Windows7 / 8 खरीदते हैं, और जो Microsoft के लिए पैसे कमाता है।
अन्य कंपनियां भी ऐसा ही करती हैं, तब खुला स्रोत बेहतर जानता है, फिर मिस्टर जीनियस भी ... और हमें बहुत सारी लुक-समान भाषाएं मिलीं, यह सिर्फ मानवता का आत्म-केंद्रित स्वभाव है।


सहमत - हमें केवल वास्तव में एक उच्च स्तरीय "सुरक्षित" भाषा, एक निम्न स्तर "असुरक्षित" सिस्टम प्रोग्रामिंग भाषा, सभी विधानसभा भाषाओं (एक सीपीयू, वे अपरिहार्य लेकिन छिपी हुई हैं) की आवश्यकता है, साथ ही कुछ विशेष उद्देश्य (डोमेन विशिष्ट) भाषाएँ (जैसे SQL)। वास्तविक समस्या यह है कि किसी के लिए भी भाषा को "पदावनत" घोषित करना असंभव है (यहां तक ​​कि जब भाषा डिजाइनर इसे करने की कोशिश करता है - जैसे कि पायथन 2 बनाम पायथन 3)। हर साल और अधिक नई भाषाएँ और पुरानी कोई भी भाषा नहीं छूटने का अर्थ है कि अंततः प्रोग्रामर की तुलना में उन्हें उपयोग करने के लिए अधिक भाषाएँ होंगी। ;-)
ब्रेंडन

-5

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


1
"सेव्ड मनी" जीवन-चक्र पर एक अस्पष्ट और अस्पष्ट अवधारणा के बावजूद (सर्वोत्तम प्रयासों के बावजूद) है। जिस तरह यांत्रिकी एक एकल स्पैनर आकार पर मानकीकरण करने में विफल रहे हैं, कभी भी एक पूरे टूलकिट को ध्यान में न रखें, सॉफ्टवेयर इंजीनियरिंग मानकीकृत करने में विफल रहा है क्योंकि एक उपकरण (भाषा) या यहां तक ​​कि प्रोसेसर / ओएस / पर्यावरण के चयन के लिए बहुत सारे मानदंड हैं
एंड्रयू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.