क्या प्रोग्रामिंग भाषाएँ प्राकृतिक भाषाओं की तरह बन रही हैं?


27

क्या हम भाषा विज्ञान के संदर्भ में प्रोग्रामिंग भाषाओं का अध्ययन कर सकते हैं? क्या प्रोग्रामिंग भाषाएं प्राकृतिक भाषाओं के समान रूप से स्वाभाविक रूप से विकसित होती हैं?

हालाँकि पूर्ण तर्कसंगतता, और गणितीय स्थिरता प्रोग्रामिंग भाषाओं के लिए आवश्यक है, फिर भी मनुष्यों को पठनीय और आरामदायक बनाने के लिए अभी भी (विशेष रूप से आधुनिक भाषाओं) की आवश्यकता है।

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

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

आप सब क्या सोचते हैं? क्या प्रोग्रामिंग भाषाएँ प्राकृतिक भाषाओं की तरह अधिक होती जा रही हैं, और इस प्रकार भाषाविज्ञान के नियमों पर लागू हो रही हैं?

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

क्या (बैबल टॉवर प्रभाव) मानव भाषाओं और कंप्यूटर लैंग्वेज के अलगाव के बीच एक संबंध है? क्या वे एक ही कारण के लिए और अधिक विविध हो जाते हैं (यानी कभी विकसित हो रही कंप्यूटर-सिस्टम / संस्कृति-प्रणाली आदि के भीतर विभिन्न समस्याओं को हल करने के लिए)?


3
संक्षिप्त उत्तर: हां, हां वे हैं।

17
संक्षिप्त उत्तर: नहीं, नहीं, वे नहीं हैं।


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

@ryanOptini: क्या C #, जावास्क्रिप्ट, पायथन या SQL कुछ भी प्राकृतिक भाषाओं की तरह दिखता है? हालांकि वे सभी अंग्रेजी भाषा के कीवर्ड का उपयोग करते हैं, लेकिन उनमें से कोई भी प्राकृतिक भाषा के प्रारूप में परिवर्तित नहीं होता है। COBOL निकटतम हो सकता है, लेकिन मुझे नहीं लगता कि कई लोग अपने ग्रीनफील्ड प्रोजेक्ट के लिए COBOL का उपयोग कर रहे हैं।
जिम जी।

जवाबों:


32

नहीं वास्तव में कोई नहीं। प्रोग्रामिंग भाषाएं केवल "हम अंग्रेजी में हैं" ( एसआईसी ) के अर्थ में प्राकृतिक भाषाओं की तरह बन गई हैं ।

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

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

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

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

Ann या इसके बजाय संभावित व्यवहारों के सेट को उन परिस्थितियों के साथ एनोटेट किया जाता है जिसके तहत वे उत्पन्न होते हैं, लेकिन यह केवल मॉडलिंग में अप्रत्यक्षता का एक कदम जोड़ रहा है, इसलिए यह वास्तव में यहां प्रासंगिक नहीं है।


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

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

2

कंप्यूटर की भाषाएं कुछ हद तक गणितीय संकेतन की तरह मरोड़ और सटीकता के साथ अच्छा करती हैं, जिसने पिछले कुछ हजार वर्षों में प्राकृतिक भाषा (जो मुझे पता है) के प्रति विकसित होने के लिए कोई विशेष झुकाव नहीं दिखाया है।

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

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


2

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

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

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


आपकी तारीखें गलत हैं: पर्ल को 1987 में, बैश को 1989 में जारी किया गया था। अपनी पूंजीकरण त्रुटियों के कारण यह आपकी पोस्टिंग को पढ़ने के लिए भी परेशान है।
tchrist

1

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

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

इंटरैक्शन / डिज़ाइन पैटर्न पर विशिष्ट शोध है, यहां तक ​​कि T9 और SWYPE पैटर्न पहचानकर्ता हैं जो आपकी बहुत मदद करते हैं (ऐसे प्रोग्राम जो आपकी आवाज़ रिकॉर्ड करते हैं और इसे टेक्स्ट में कनवर्ट करते हैं, पैटर्न पहचानकर्ता भी हैं)।

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

हर अलग कार्य और लक्ष्य की अपनी भाषा होती है, यह एक सरल "एकल भाषा विकास" नहीं है, बहुत अधिक भाषाएं हैं। सटीक कार्यों के लिए सटीक भाषाओं की आवश्यकता होती है और आराम के कार्यों के लिए आराम की भाषाओं की आवश्यकता होती है

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


1

कुछ साल पहले मेरे बड़े बेटे और मैंने निम्नलिखित सवालों के जवाब देने के लिए एक सादा अंग्रेजी प्रोग्रामिंग और विकास प्रणाली विकसित की:

  1. क्या निम्न-स्तरीय कार्यक्रम (संकलक की तरह) सुविधाजनक और कुशलता से उच्च स्तरीय भाषाओं (जैसे अंग्रेजी) में लिखे जा सकते हैं?

  2. क्या प्राकृतिक भाषाओं को अपेक्षाकृत "मैला" तरीके से पार्स किया जा सकता है और अभी भी उत्पादक प्रोग्रामिंग के लिए एक स्थिर पर्याप्त वातावरण प्रदान कर सकता है?

  3. क्या यह प्रोग्राम करना आसान है जब आपको अपने प्राकृतिक-भाषा के विचारों को एक वैकल्पिक वाक्य रचना में अनुवाद नहीं करना है?

अब हम इन तीनों प्रश्नों में से प्रत्येक का उत्तर, प्रत्यक्ष अनुभव से, "हां" के साथ दे सकते हैं।

हमारा पार्सर संचालित होता है, हम सोचते हैं, मानव मस्तिष्क जैसा कुछ है। विचार करें। एक पिता अपने बच्चे से कहता है:

"इस बोतल को चूसना चाहते हैं, छोटा आदमी?"

और बच्चा सुनता है,

"ब्ला, ब्ला, SUCK, ब्ला, ब्ला, बॉटल, ब्ला, ब्ला।"

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

एक विशिष्ट प्रकार की परिभाषा इस तरह दिखती है:

एक बहुभुज कुछ कोने के साथ एक चीज है।

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

एक सामान्य दिनचर्या इस तरह दिखाई देती है:

बहुभुज के लिए एक x समन्वय और ay समन्वय को जोड़ने के लिए: x और y दिए गए एक शीर्ष बनाएँ। बहुभुज के कोने में शीर्ष को जोड़ें।

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

यह भी ध्यान दें कि नियमित और चर "नामों" में रिक्त स्थान की अनुमति है (जैसे "x निर्देशांक")। यह 21 वीं सदी है, हाँ? और उस "उपनाम" को भी अनुमति दी जाती है (जैसे "x समन्वय" के लिए "x")। और वह अधिकार ("बहुभुज के कोने") "रिकॉर्ड" के भीतर "फ़ील्ड" को संदर्भित करने के लिए बहुत ही स्वाभाविक तरीके से उपयोग किया जाता है।

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

सबसे निचले स्तर पर, चीजें इस तरह दिखती हैं:

किसी संख्या को दूसरी संख्या में जोड़ने के लिए: Intel $ 8B85080000008B008B9D0C0000000103।

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

आप यहां हमारी विकास प्रणाली प्राप्त कर सकते हैं: www.osmosian.com/cal-3040.zip। यह एक छोटा विंडोज प्रोग्राम है, जो आकार में मेगाबाइट से कम है। यदि आप "दस्तावेज़ीकरण" निर्देशिका में पीडीएफ के साथ शुरू करते हैं, तो इससे पहले कि आप दस पन्नों पर जाएं आप अपने आप में पूरे शेबंग को फिर से जमा करेंगे (वॉलमार्ट से नीचे की लाइन मशीन पर तीन सेकंड से कम समय में)।

प्रश्नों और टिप्पणियों को gerry.rzeppa@pobox.com पर संबोधित किया जाना चाहिए


आप के बारे में पता कर रहे हैं attempto.ifi.uzh.ch/site/description अंग्रेज़ी नियंत्रित? आपको लगता है कि और Inform7 en.wikipedia.org/wiki/Inform#Example_game_2 के
Pete Kirkham

मुझे यह विचार पसंद है, लेकिन ऐसा लगता है कि अभी भी कुछ सिंटेक्स हुप्स हैं जिससे आप कूद सकते हैं। उदाहरण के लिए, मुझे नहीं लगता कि मैं या कोई भी, जो ज्यामितीय सामानों की मॉडलिंग करता है, X और Y निर्देशांक को अलग से जोड़ा जाएगा, इसलिए "मेरे लिए एक x निर्देशांक और ay निर्देशांक जोड़ना ..." वास्तव में मुझे बहुत अजीब लगता है। जैसा कि "x और y दिया गया एक शीर्ष बनाएँ"। लगभग क्षम्य है क्योंकि यह वास्तव में ज्यादातर अंग्रेजी की तरह पढ़ता है , लेकिन फिर भी बहुत सख्त लगता है। शायद मैं भी इंसान या कुछ और की तरह नहीं सोच रहा था, मुझे नहीं पता था।
cHao

1

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

क्या कंप्यूटर भाषाएँ प्राकृतिक भाषाओं की तरह हो सकती हैं? शायद कुछ हद तक, एक बिंदु तक। मेरा अनुमान है कि प्राकृतिक भाषा की जटिलता का एक बड़ा हिस्सा विभिन्न समवर्ती विकास की घटनाओं से उत्पन्न होता है, जिसका किसी भी समय किसी एक बिंदु पर एक सुसंगत परिणाम उत्पन्न करने का कोई कारण नहीं है, हालांकि यह संभावना है कि पुरानी विसंगतियां संभवतः उत्तरोत्तर समाप्त हो जाती हैं जबकि नया दिखाई देता है । मैं diachronic linguistics में कोई विशेषज्ञ नहीं हूं। लेकिन क्या हम चाहते हैं कि प्रोग्रामिंग भाषाओं में इस तरह की जटिलता हो।

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

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

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

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

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

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

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

इतिहास में पीछे देखते हुए, उच्च स्तरीय भाषाएं पहले (फोरट्रान) से, कम्प्यूटेशनल कार्यों को व्यक्त करने के लिए एक अधिक प्राकृतिक रूप के करीब जाने का प्रयास किया गया था, लेकिन इन कार्यों को गणितीय या तार्किक (फोरट्रान 1957, अल्गोल 1958, लिस्प 1958) के रूप में समझा गया था। ), या अधिक व्यवसाय उन्मुख (कोबोल 1959)। 10 वर्षों के भीतर लोग ऐसी भाषाओं के बारे में चिंता कर रहे थे जो करीब होगी, हाथ में समस्या के लिए बेहतर रूप से अनुकूलित, और तथाकथित extensible languagesऔर वाक्यविन्यास दोनों को कवर करते हुए तथाकथित रूप से महत्वपूर्ण शोध थे । समस्याओं को अधिक स्वाभाविक रूप से व्यक्त करने के लिए एक प्रमुख मार्ग का उद्भव था object orientation(कभी-कभी अन्य नामों के तहत)। हालाँकि, पेरेंटहुड को असाइन करना हमेशा मुश्किल होता है, यह संभवतः कृत्रिम बुद्धिमत्ता पर काम से निकला, ज्यादातर लिस्प में, और भाषा सेSimula 67(अल्गोल परिवार) जो खुद को अधिक स्वाभाविक रूप से वास्तविक दुनिया की समस्याओं को व्यक्त करने के लिए था जो कंप्यूटर पर अनुकरण किया जाना है। यह सब ऐतिहासिक रूप से सुसंगत लगता है।


0

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

हो सकता है कि कंप्यूटर वैज्ञानिकों और "प्राकृतिक" लोगों के बीच की खाई सिकुड़ जाए तो प्राकृतिक भाषाओं और प्रोग्रामिंग भाषाओं के बीच का अंतर कम हो जाएगा।


0

पिछले वर्षों में, (ई) डीएसएल और धाराप्रवाह इंटरफेस में रुचि लगातार बढ़ रही है, भाषाओं की एक महान विविधता में: हास्केल, विभिन्न स्क्रिप्टिंग भाषाओं, सी #, जावा और यहां तक ​​कि सी ++ (ओवरलोडिंग के बारे में सोचें) operator<<उत्पादन करने के लिए)।

कुछ हद तक, ये कोड को अधिक स्वाभाविक रूप से पढ़ने की अनुमति देते हैं। मैं ग्रूवी में एक ईडीएसएल उदाहरण के साथ वर्णन करता हूँ। Groovy.time पैकेज लिखने करने की अनुमति देता

use ( TimeCategory ) {
    // application on numbers:
    println 1.minute.from.now
    println 10.days.ago

    // application on dates
    def someDate = new Date()
    println someDate - 3.months 
}

यदि आप java.util.Calendar वर्ग के माध्यम से ऐसा करते हैं, तो आपको पहले उदाहरण के लिए कुछ इस तरह लिखना होगा:

void demo() {
    Calendar date = new GregorianCalendar();
    date.add(Calendar.MINUTE, 1);
    System.out.println(date);
}

0

कम्प्यूटर भाषाओं (दिनों की भी अल्पविकसित मशीन भाषाओं लंबे अतीत) कर रहे हैं के रूप में वे साथी मनुष्यों के साथ संचार के लिए मुख्य रूप से कर रहे हैं, मनुष्यों द्वारा परिभाषित कर रहे हैं, और एक मशीन के लिए निर्देश संप्रेषित करने के लिए केवल गौणतः उपयोग किया जाता है, मानव भाषाओं। इसलिए वे उसी तरह विकसित होते हैं जिस तरह से "प्राकृतिक" भाषाएं विकसित होती हैं (बस अपनी पसंदीदा भाषा के लिए "मुहावरे" देखें, इस बात की जांच करें कि कैसे K K & R C से वर्तमान ISO-C 2011 तक विकसित हुआ है। लेकिन वे एक अलग वातावरण में मौजूद हैं, वे सटीक अर्थ व्यक्त करना चाहिए (कंप्यूटर अभी भी समझ बनाने के लिए गूंगा है और जो भी पूछा गया है उसे सही करने के लिए), और प्रसंस्करण में आसानी पर एक प्रीमियम है (इस प्रकार व्याकरण और यहां तक ​​कि C ++, PL / 1, या APL की शब्दावली बहुत सरल है। उदाहरण के लिए, अंग्रेजी के रूप में, जो प्राकृतिक भाषाओं के बजाय सरल है)।

बहुत कुछ यही कहा जा सकता है कि गणित की औपचारिकता या सामान्य रूप से विज्ञान, या यहां तक ​​कि ब्लूप्रिंट (स्वाभाविक रूप से 2 डी, अन्य के रूप में 1 डी नहीं)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.