क्या चलने योग्य और गणना करने योग्य के बीच अंतर है?


16

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


1
खुद मैन, जॉन स्कीट ने अपनी पुस्तक में लिखा है कि C # Iterable के बजाय Enumerable के साथ गया। इस फैसले से इस तरह की उलझन पैदा हुई है।
रबरडुक

जवाबों:


13

IMHO यह संदर्भ पर निर्भर करता है, कभी-कभी वे समानार्थक होते हैं, कभी-कभी वे नहीं होते हैं। उदाहरण के लिए, C # में आपके पास एक डेटा प्रकार "IEnumerable" है, जो पुनरावृत्तियों को वर्गीकृत करता है, लेकिन आपके पास "enum" घोषणा भी है जो प्रतीकात्मक स्थिरांक के लिए है, पुनरावृत्तियों के लिए विशिष्ट रूप से नहीं। अन्य प्रोग्रामिंग भाषाओं (या अन्य संदर्भों) में स्थिति समान हो सकती है या नहीं।

यदि आप दो शब्दों का अर्थ केवल अंग्रेजी क्रियाओं के रूप में करते हैं और विशेष रूप से प्रोग्रामिंग भाषा कीवर्ड के रूप में नहीं है, तो

  • पुनरावृति का अर्थ है "एक सेट के सभी तत्वों पर लूप, एक-एक करके"
  • गणना करने का अर्थ है "एक सेट के प्रत्येक तत्व को एक क्रमिक संख्या देना, एक-एक करके"

और एन्यूमरेट करने के लिए पुनरावृति की आवश्यकता होती है, और एनुमरेटिंग से तात्पर्य किसी प्रकार के पुनरावृत्ति से है, उन दो प्रक्रिया विवरणों को आम तौर पर परस्पर जोड़ा जा सकता है।


3
+1 हालांकि आप एनमों का उल्लेख क्यों करते हैं? एक संरचना के रूप में एनुम, एन्थूमेबिलिटी के लिए ऑर्थोगोनल होगा? हालांकि मुझे लगता है कि आप कह सकते हैं कि एक एनम की प्रकृति "एक क्रमिक क्रम में प्रत्येक को एक के बाद एक," एक निरंतर दे रही होगी ... :)
मार्जन वेनमा

@MarjanVenema: ठीक है, "enum" शब्द enum - erate से आता है , मुझे लगता है?
Doc Brown

D'oh, हां, मैं ऐसा कहूंगा। मुझे अपना चिकन और अंडा गलत तरीके से मिला है :-)
मार्जन वेनमा

3
@DocBrown - एन्यूमरेशन के लिए एनम छोटा है।
ली

3
@ ली: यह एक आलंकारिक प्रश्न था ;-)
डॉक्टर ब्राउन

4

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

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

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

यह उन सभी अर्थों के बारे में है, जिन्हें आप केवल शब्दों से समझ सकते हैं। किसी भी ठोस स्थिति में, मानक पुस्तकालय एपीआई डॉक्स का संदर्भ लें।


1

मैं दोनों शब्दों की सख्त परिभाषा पर ध्यान देना चाहता हूं

Iterable चीजों को पुनरावृत्त करना है, और एक-एक करके तत्व तक पहुंच प्राप्त करना है।

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

दूसरे शब्दों में, Enumerableतत्वों को उत्पन्न करने की क्षमता का तात्पर्य है। कुछ प्रोग्रामिंग भाषा, उदाहरण के लिए, Haskellइस विचार को लागू किया है। एक Enum प्रकार वर्ग है, और Charएक उदाहरण है।

Prelude> fromEnum True
1
Prelude> fromEnum False
0
Prelude> toEnum 1 :: Bool
True

Prelude> fromEnum 'a'
97
Prelude> enumFromTo 'a' (toEnum 122 :: Char)
"abcdefghijklmnopqrstuvwxyz"

-1

गणना गणना है, पुनरावृत्ति पुनरावृत्ति है

एक दूसरी गणना में समान संख्या होगी, एक पुनरावृत्ति भिन्नता हो सकती है

फ्रैक्टल्स एक फ़ंक्शन के पुनरावृत्तियों द्वारा बनाए जाते हैं, अंतिम पुनरावृत्ति के परिणाम पर फ़ंक्शन को दोहराते हैं, प्रत्येक पुनरावृत्ति का एक अलग मूल्य होता है

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