प्रोग्रामिंग भाषा में infix ऑपरेटर्स कितने उपयोगी हैं?


13

प्रोग्रामिंग भाषा में infix ऑपरेटर्स कितने उपयोगी हैं? क्या वे अतिरिक्त जटिलता के लायक हैं जो वे प्रदान करते हैं? क्या आप कोई भी उदाहरण प्रदान कर सकते हैं जहां infix ऑपरेटर्स समस्या के लिए बेहतर हैं जो कि सामान्य ऑपरेटरों को ओवरलोडिंग द्वारा नियंत्रित नहीं किया जा सकता है?


5
आपको लिस्पर होना चाहिए। क्या मैं सही हू?
लापता

@missingfaktor: बमुश्किल इसका इस्तेमाल किया
केसबश

1
ऑपरेटर ओवरलोडिंग से कैसे संबंधित हैं?
रीन हेनरिक

3
यह ध्यान देने योग्य है कि लोकप्रिय ओओ (ईश) भाषाओं में से अधिकांश विधि नामों के लिए इनफ़िक्स का उपयोग करती हैं। वास्तव में कुछ भाषाएं "स्टेटिक" तरीकों को लिखने की अनुमति देने के लिए कुछ लंबाई तक जाती हैं, जैसे कि, के arg1.method(arg2)बजाय method(arg1, arg2)
टॉम हॉकिन -

जवाबों:


16

मुझे लगता है कि infix ऑपरेटर्स गणित से उपजी हैं।

यह:

2 + 3 * 4

ज्यादातर लोगों की तुलना में अधिक पठनीय है

(+ 2 (* 3 4))

क्योंकि अधिकांश लोग गणित से परिचित हैं।

हास्केल में पर्याप्त दिलचस्प आप इन्फिक्स और उपसर्ग के बीच आशा कर सकते हैं। यह एक ही funtion का उपयोग कर रहा है "(+)":

(+) 1 2
1 + 2

और यह एक ही फ़ंक्शन "एलएम" का उपयोग कर रहा है:

elem 42 [1,2,42]
42 `elem` [1,2,42]

सामान्य ऑपरेटरों को ओवरलोड करने से इसके अधिकांश मामले
निपटते हैं

1
@ कैशेबश: उन "सामान्य" ऑपरेटरों को कभी-कभी इन्फिक्स भी होता है।
लियोरी

2
मुझे बस से अजीब होना चाहिए, क्योंकि मुझे (+ 1 2) इससे कहीं अधिक पठनीय लगता है 1 + 2। बहुत कम (+ 1 2 3 4 5)से कम बेहतर है 1 + 2 + 3 + 4 + 5
जो डी

आरपीएन भी है: तत्वों को धक्का दें, फिर ऑपरेटर।
फीलो

@PhiLho को पोस्टफिक्स ऑपरेटर भी कहा जाता है! इस तरह: 1 2 +या 1 2 3 4 5 +अंतिम मामले के लिए आम तौर पर 1 2 + 3 + 4 + 5 +। वहाँ वास्तव में उन लोगों के लिए एक निफ्टी लाभ है कि यह पूरी तरह से एक स्टैक-आधारित प्रणाली को मॉडल करता है, और शायद ही कभी (यदि कभी?) ऑपरेटर पूर्वता को समायोजित करने के लिए कोष्ठक की आवश्यकता होती है।
कोडेक्सअर्केनम

6

कंप्यूटर की भाषाएं इंसानों की मशीनों के लिए बनाई गई हैं। और मनुष्यों को प्री या पोस्टफ़िक्स की तुलना में ऑपरेटरों को संक्रमित करने के लिए अधिक उपयोग किया जाता है।


6

Infix ऑपरेटरों के लिए एकमात्र वास्तविक कारण यह है कि मनुष्य आमतौर पर उन्हें पढ़ना आसान समझते हैं। यह मोटे तौर पर दो तथ्यों के कारण है:

  • हम कम उम्र से गणित के रूप में infix ऑपरेटरों को सीखते हैं और इसलिए उनसे परिचित हैं: 2 * 2 = 4आदि।
  • एक infix ऑपरेटर को "नेत्रहीन" दो तर्कों को अलग करने का लाभ होता है। जैसे(some complex expression) + (some other complex expression)

एक तार्किक / मशीन के दृष्टिकोण से, infix ऑपरेटर्स वास्तव में कोई मूल्य नहीं जोड़ते हैं और कुछ मामलों में एक उपद्रव हैं:

  • आप हमेशा infix से दो तर्कों के साथ समतुल्य फ़ंक्शन कॉल में परिवर्तित कर सकते हैं - इसलिए infix ऑपरेटर्स कभी भी "सिंथैटिक शुगर" से अधिक नहीं होते हैं
  • जब आप दो से अधिक मापदंडों का उपयोग करना चाहते हैं, तो Infix असुविधाजनक हो सकता है। (* 1 2 3 4 5)उदाहरण के लिए लिस्प में, संख्याओं के एक समूह को गुणा करने के लिए यकीनन बहुत अधिक क्लीनर सिंटैक्स है।
  • एक पार्सिंग दृष्टिकोण से, अक्सर ऑपरेटर को पहले पढ़ना उपयोगी होता है ताकि आप जान सकें कि शेष अभिव्यक्ति की व्याख्या कैसे करें। इनफ़िक्स ऑपरेटरों के साथ यह बहुत अधिक जटिल हो सकता है (जैसे आपको यह सुनिश्चित करने के लिए स्टैक या कुछ समान रखना होगा कि कौन सा ऑपरेटर किस तर्क पर लागू होता है)
  • फोर्थ जैसी स्टैण्ड-बेस्ड / कॉन्टेनेटिव लैंग्वेजेज में, आप चाहते हैं कि ऑपरेटर को स्टैक पर लास्ट में धकेला जाए, ताकि उसके पास पहले से ही सही स्थिति में अपने तर्क हों। फिर, ऑपरेटर को टोकन के अनुक्रम के बीच में दफन करना केवल मामलों को जटिल करता है।
  • जब वे अतिभारित होते हैं तो Infix ऑपरेटर्स वास्तव में बहुत भ्रमित हो सकते हैं - उदाहरण के लिए दो HashMaps पर लागू होने पर "+" का क्या अर्थ है? यहाँ, इनफ़िक्स ऑपरेटर की सहज मानवीय समझ आपके खिलाफ काम करती है क्योंकि यह एक ऐसे अर्थ को समझना आसान है जो वास्तव में इरादा नहीं था ....।

मुझे लगता है कि आखिरी तर्क फर्जी है। फ़ंक्शंस या अक्षरों का उपयोग करते हुए, कार्यों के लिए समझदार नामों का उपयोग करना प्रोग्रामर पर निर्भर है।
टॉम हॉल्टिन -

@Tom - यकीन है, प्रोग्रामर समझदार नाम लेने चाहिए। लेकिन "समझदार" के लिए एक महत्वपूर्ण मानदंड है "क्या अन्य लोग सहज रूप से इसे समझ सकते हैं?" - मैंने ऑपरेटर के ओवरलोडिंग के साथ बहुत सारे मामले देखे हैं जहां यह मामले से बहुत दूर है। मैं नहीं चाहता कि किसी की मनमानी परिभाषा के लिए इंजीनियर को उल्टा करना पड़े "" = "का अर्थ है जब कुछ मनमाने डेटा प्रकार पर लागू किया जाता है। उचित समारोह के नाम कृपया!
मायके
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.