क्या गैर-वॉन न्यूमैन प्रोग्रामिंग मॉडल के लिए कोई व्यावहारिक अनुप्रयोग हैं? सबसे व्यापक रूप से अपनाई जाने वाली गैर-वॉन न्यूमैन प्रोग्रामिंग भाषाएं क्या हैं?
क्या गैर-वॉन न्यूमैन प्रोग्रामिंग मॉडल के लिए कोई व्यावहारिक अनुप्रयोग हैं? सबसे व्यापक रूप से अपनाई जाने वाली गैर-वॉन न्यूमैन प्रोग्रामिंग भाषाएं क्या हैं?
जवाबों:
जब मैं कहता हूं "वॉन न्यूमैन आर्किटेक्चर", मेरा मतलब है कि कुछ हार्डवेयर जो "वॉन न्यूमैन अड़चन" द्वारा सीमित है - यानी, इसमें सभी डेटा कुछ संकीर्ण डेटा बस के माध्यम से फ़नल है।
नॉन-वॉन न्यूमैन प्रोग्रामिंग लैंग्वेज मैं सबसे ज्यादा बार VHDL और वेरिलॉग से टकराती हैं । VHDL और वेरिलॉग में, डिफ़ॉल्ट रूप से, सब कुछ एक ही समय में होता है। क्रमबद्ध रूप से होने वाली घटनाओं की एक श्रृंखला बनाने के लिए प्रोग्रामर को अतिरिक्त प्रयास करना पड़ता है। यह अधिकांश अन्य प्रोग्रामिंग भाषाओं से बहुत अलग है जो कि एक "इंस्ट्रक्शन पॉइंटर" का अर्थ है, जो डिफ़ॉल्ट रूप से, कोड की एक पंक्ति में किसी एक पल में निष्पादित होता है, और प्रोग्रामर को एक ही समय में कई चीजें प्राप्त करने के लिए अतिरिक्त प्रयास पर जाना पड़ता है। समय।
कुछ लोग कहेंगे कि यह एक अधिक प्राकृतिक डिफ़ॉल्ट है। शुरुआती प्रोग्रामिंग छात्रों के बहुत सारे "एक्स (0) {{}}" लूप की अपेक्षा करते हैं कि एक्स से शून्य के बराबर हो जाने पर तुरंत बाहर निकलने के लिए लूप, और उन्हें यह जानकर आश्चर्य होता है कि कंप्यूटर लगातार उस स्थिति का मूल्यांकन नहीं करता है ।
VHDL और वेरिलॉग कोड लिखने वाले अधिकांश लोग FPGAs पर अपने कार्यक्रमों को संकलित करते हैं, जिससे गतिविधि के छोटे ब्लॉक बनते हैं जो सभी हर समय पूरी गति से चलते हैं। अक्सर ऐसे लोग एक "पाइपलाइन" स्थापित करते हैं जो इनपुट पिन से डेटा पढ़ता है, इसे ब्लॉक की एक श्रृंखला के माध्यम से संसाधित करता है, एक ब्लॉक के आउटपुट पिन सीधे अगले ब्लॉक के इनपुट पिन पर वायर्ड होते हैं, और अंतिम ब्लॉक परिणाम भेजता है आउटपुट पिन। यह यूनिक्स पाइपलाइन की याद दिलाता है , सिवाय इसके कि डेटा का एक नया टुकड़ा अंदर जाता है और हर घड़ी चक्र पर डेटा का एक नया टुकड़ा निकलता है।
इनपुट पिन, मध्यवर्ती चरण और आउटपुट पिन सभी एक दूसरे से स्वतंत्र हैं - आपको डेटा के विभिन्न टुकड़ों के बीच एक एकल डेटा बस मल्टीप्लेक्स का फिर से उपयोग करने की आवश्यकता नहीं है।
आपको इसमें भी रुचि हो सकती है: क्या अन्य कंप्यूटर आर्किटेक्चर के अलावा वॉन न्यूमैन / ट्यूरिंग आर्किटेक्चर भी हैं?
मैं नॉन-वॉन न्यूमैन द्वारा मानता हूं, आप का मतलब है कि "वॉन न्यूमैन बॉटलनेक" को बैकस के पेपर के अनुसार "वॉन न्यूमैन स्टाइल से मुक्त किया जा सकता है?" उन लोगों के लिए, आप यहां एक प्रति पा सकते हैं: http://www.thocp.net/biographies/papers/backus_turingaward_lecture.pdf
आपके प्रश्न का उत्तर कुछ कारणों से अस्पष्ट होना चाहिए।
पहला, किन भाषाओं ने उसके पेपर में मापदंड को संतुष्ट किया? यद्यपि इस पेपर में कार्यात्मक प्रोग्रामिंग का पता लगाने वाले लोग हैं, लेकिन अब इसे गलतफहमी के रूप में माना जाता है क्योंकि उनका मतलब पॉइंट-फ्री प्रोग्रामिंग जैसा कुछ था। तो क्या आप मूल गलतफहमी, या कागज के असली इरादे के साथ जाते हैं? उसके मतलब के विस्तार के लिए, कृपया निम्नलिखित देखें: http://en.wikipedia.org/wiki/Function-level_programming
दूसरा, यदि आप गलतफहमी के साथ जाते हैं, तो कार्यात्मक कैसे कार्यात्मक है? आपके पास शुद्ध कार्यात्मक भाषाएं हैं, अशुद्ध कार्यात्मक भाषाएं हैं, और ऐसी भाषाएं जो कार्यात्मक प्रतिमान के अपेक्षाकृत अनुकूल हैं। यह देखते हुए कि आप लोकप्रियता का उल्लेख करते हैं और उस और कार्यात्मक शुद्धता के बीच एक विपरीत संबंध है, बस क्या भाषाओं को शामिल किया जाना चाहिए? क्या आप सबसे लोकप्रिय शुद्ध कार्यात्मक भाषा (जो सभी में लोकप्रिय नहीं होगी) चाहते हैं, या एक अधिक लोकप्रिय है जो "कार्यात्मक-नेस" के कुछ न्यूनतम मानदंडों को पूरा करता है? यदि उत्तरार्द्ध, वे मानदंड क्या हैं?
तो आपके दृष्टिकोण के आधार पर:
हास्केल पूरी तरह से शुद्ध कार्यात्मक भाषाओं में से सबसे लोकप्रिय है जिसे मैं जानता हूं और इसमें लिखे गए एप्लिकेशन हैं। हालांकि, कार्यात्मक प्रोग्रामिंग समुदाय में भारी वजन होने के बावजूद, यह बड़े प्रोग्रामिंग समुदाय में लोकप्रिय नहीं है। इसके अलावा, इसका उपयोग करते हुए, मुझे ऐसा नहीं लगा कि यह वास्तविक दुनिया के उपयोग के लिए व्यावहारिक है, और यह सैद्धांतिक काम के लिए महत्वपूर्ण है। यह एक बिंदु-मुक्त शैली की अनुमति देता है, इसलिए आप इसके साथ बैकस के कुछ लक्ष्यों को प्राप्त कर सकते हैं।
क्लोजर, स्काला और एफ # कम शुद्ध हैं, लेकिन अधिक व्यावहारिक और लोकप्रिय कार्यात्मक भाषाएं हैं। F # भी बिंदु-मुक्त शैली के अनुकूल है।
फोर्थ एक बिंदु-मुक्त भाषा का प्रोटोटाइप उदाहरण हो सकता है, और यह अपने दिन में काफी व्यापक था, हालांकि अब ... फैक्टर एक और बिंदु-मुक्त भाषा है जिसने कुछ ध्यान आकर्षित किया है, लेकिन मुझे संदेह है कि यह अपने प्रिय दिवस में फोर्थ की लोकप्रियता से मेल खाती है। ।
एपीएल बैकस द्वारा एक बिंदु पर (शायद उनके पेपर में नहीं) एक कदम की तरह उल्लेख किया गया था, लेकिन अपने लक्ष्यों के साथ पूरी तरह से संगत नहीं है। अपने दिन में यह वित्तीय क्षेत्र में बड़ा था। इसके वंशजों की जांच करना सुनिश्चित करें, जैसे जे।
जावास्क्रिप्ट कार्यात्मक नहीं है, लेकिन यह प्रोग्रामिंग के एक उच्च क्रम शैली के प्रति बहुत अनुकूल है, जैसा कि इसके भारी उपयोग से स्पष्ट है। इसकी लोकप्रियता को देखते हुए, यह सिर्फ मानदंडों को पूरा कर सकता है। जावास्क्रिप्ट के साथ किए गए कुछ दिलचस्प सामानों की जांच करना सुनिश्चित करें, जैसे कि करी और कंबाइन कार्यान्वयन।
एक फुटनोट के रूप में, आपको उनके लक्ष्यों पर अधिक परिप्रेक्ष्य देने के लिए, आप उन दो भाषाओं की जाँच कर सकते हैं जिन्हें उन्होंने अपने मानदंडों को पूरा करने के लिए डिज़ाइन किया है। वे सभी AFAIK में लोकप्रिय नहीं हैं, इसलिए यह विशुद्ध रूप से ज्ञान के लिए होगा:
मुझे लगता है कि लिंडा और ट्यूपलस्पेस प्रोग्रामिंग बिल को फिट कर सकते हैं। संगामिति के साथ सहयोगी / पैटर्न मिलान स्मृति संचालन का मतलब है कि (वैचारिक रूप से) वॉन-न्यूमन की अड़चन समाप्त हो गई है।
उस दिशा में जा रहे हैं, एक शुद्ध अभिनेता-मॉडल भाषा भी निर्देश अनुक्रम के बजाय संचार संचार करती है। और यद्यपि वे औपचारिकताएं हैं और वास्तविक प्रोग्रामिंग भाषाएं नहीं हैं, संबंधित गणनाओं में पाई कैलकुलस, सीएसपी और पेट्री नेट्स मॉडल संचार जैसी प्रक्रिया कैलकुली।
लिंक के लिए विकिपीडिया देखें (मैं एक नया उपयोगकर्ता हूं और स्पैम सुरक्षा के तहत), लेकिन लिंडा के नाम के बारे में कुछ अशिष्ट हास्य के लिए, http://c2.com/cgi/wiki?LindaEtymology पढ़ें ।