यह एसआईसीपी के मूलभूत पाठों में से एक है और कंप्यूटर विज्ञान के सबसे शक्तिशाली विचारों में से एक है। यह इस तरह काम करता है:
हम "कोड" के रूप में क्या सोचते हैं वास्तव में अपने आप से कुछ भी करने की शक्ति नहीं है। कोड केवल व्याख्या के संदर्भ में एक कार्यक्रम को परिभाषित करता है - उस संदर्भ के बाहर, यह केवल वर्णों की एक धारा है। (वास्तव में बिट्स की एक धारा, जो वास्तव में विद्युत आवेगों की एक धारा है। लेकिन चलिए इसे सरल रखें।) का अर्थ कोड के द्वारा परिभाषित किया गया है जिसमें आप इसे चलाते हैं - और यह प्रणाली सिर्फ आपके कोड को डेटा के रूप में मानती है जो बताता है कि आप क्या करना चाहते थे। सी स्रोत कोड का अर्थ एक सी संकलक द्वारा किया जाता है, जो उस ऑब्जेक्ट फ़ाइल का वर्णन करने वाले डेटा के रूप में होता है जिसे आप बनाना चाहते हैं। लोडर द्वारा ऑब्जेक्ट फ़ाइल का इलाज कुछ मशीन निर्देशों का वर्णन करने वाले डेटा के रूप में किया जाता है जिन्हें आप निष्पादन के लिए कतारबद्ध करना चाहते हैं। सीपीयू द्वारा मशीन निर्देशों का अर्थ राज्य संक्रमणों के अनुक्रम को परिभाषित करने वाले डेटा के रूप में किया जाता है।
#!/usr/bin/perl
# Note that the above line explicitly defines the interpretive context for the
# rest of this file. Without the context of a Perl interpreter, this script
# doesn't do anything.
sub foo {
my ($expression) = @_;
# $expression is just a string that happens to be valid Perl
print "$expression = " . eval("$expression") . "\n";
}
foo("1 + 1 + 2 + 3 + 5 + 8"); # sum of first six Fibonacci numbers
foo(join(' + ', map { $_ * $_ } (1..10))); # sum of first ten squares
कुछ भाषाएं: या यहां तक कि रन टाइम पर कोड उत्पन्न -
व्याख्या भाषाओं में अक्सर कोड के रूप में डेटा के इलाज के लिए, आप किसी रूप में एक समारोह में कोड पारित कर सकते हैं और फिर इसे अमल जिसका मतलब है के लिए तंत्र शामिल जैसे योजना में "प्रथम श्रेणी के कार्यों" की अवधारणा होती है, जिसका अर्थ है कि आप किसी फ़ंक्शन को डेटा के रूप में देख सकते हैं और इसे मूल्यांकन किए बिना इसे पास कर सकते हैं जब तक कि आप वास्तव में नहीं चाहते हैं।
उपरोक्त यह है कि "कोड" और "डेटा" के बीच विभाजन बहुत मनमाना है, केवल परिप्रेक्ष्य का एक कार्य है। अमूर्तता के स्तर को कम करने के लिए, "स्मार्ट" कोड होना चाहिए: इसमें इसे कैसे निष्पादित किया जाना चाहिए इसके बारे में अधिक जानकारी होनी चाहिए। दूसरी तरफ, दुभाषिया की अधिक जानकारी जितनी अधिक जानकारी होगी, उतना ही गूंगा कोड हो सकता है, जब तक कि यह बिना किसी स्मारक वाले डेटा जैसा दिखने लगे।
कोड लिखने के सबसे शक्तिशाली तरीकों में से एक है जो आपको चाहिए, इसका एक सरल विवरण है: डेटा जो कोड में बदल दिया जाएगा, यह बताता है कि आपको व्याख्यात्मक संदर्भ से आपको क्या चाहिए। हम इसे "declarative programming" कहते हैं।
एक ठोस उदाहरण के लिए, HTML पर विचार करें। एचटीएमएल एक ट्यूरिंग-पूर्ण प्रोग्रामिंग भाषा का वर्णन नहीं करता है। यह केवल संरचित डेटा है। इसकी संरचना में कुछ स्मारक होते हैं जो इसे अपने व्याख्यात्मक संदर्भ के व्यवहार को नियंत्रित करने देते हैं - लेकिन बहुत सारे स्मारक नहीं। दूसरी ओर, इसमें टेक्स्ट के अनुच्छेदों की तुलना में अधिक स्मारक होते हैं जो औसत वेब पेज पर दिखाई देते हैं: वे बहुत बेवकूफ डेटा हैं।
यदि आप नहीं जानते कि इसका क्या अर्थ है, तो आप कैसे कह सकते हैं कि यह "शानदार ढंग से phrased" है? – sykora
सबसे पहले मैंने सोचा कि यह एक चिड़ियाघर है लेकिन अब मुझे लगता है कि यह एक एंटीमेटाबोल है। – tuinstoel
http://en.wikipedia.org/wiki/Von_Neumann_architecture –