2009-02-01 10 views
11

कार्यात्मक प्रोग्रामिंग .. क्लासिक (Mark Twain's type) की तरह है। SICP, जहां लोगों बड़ा प्रभाव बंद वहाँ सोच पर था के बारे में बात कर रहे हैं के बारे में एक और लेख को पढ़ते समय, मैं इस की याद दिला दी है, जो मैं पढ़ उम्र पहलेबंद और वस्तुओं

क्लोजर गरीब आदमी का वस्तुओं वस्तुओं गरीब आदमी का बंद कर रहे हैं

तो (सटीक स्रोत किया लेकिन ये प्रोग्रामर रोसेटा स्टोन, या प्रोग्रामिंग, या प्रोग्रामिंग के ताऊ की ज़ेन ... गूगल तो भीड़ है कि मूल स्रोत के लिए नहीं जा सकते हो गया है याद नहीं कर सकते हैं) सह-प्रोग्रामर ... आपका क्या लेना है ... कुछ ऐसा बंद कर रहा है जिसे आप हमेशा याद कर रहे थे .. या बस कुछ वाक्य रचनात्मक चीनी, जो एक प्रीप्रोसेसर कर सकता है !!

उत्तर

18

http://people.csail.mit.edu/gregs/ll1-discuss-archive-html/msg03277.html

सम्मानित मास्टर Qc ना अपने छात्र, एंटोन के साथ चल रहा था। की उम्मीद करते हुए मास्टर ने एक चर्चा में संकेत दिया, "एंटोन ने कहा," मास्टर, मैंने सुना है कि ऑब्जेक्ट्स बहुत अच्छी बात है - क्या यह सच है? " क्यूसी ना ने अपने छात्र को पर दयालुता से देखा और जवाब दिया, "मूर्ख छात्र - वस्तुएं केवल एक गरीब व्यक्ति के बंद हैं।"

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

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

- एंटोन वैन Straaten

+1

क्या यह उद्धरण का मूल स्रोत है या इसका एक अन्य उद्धरण है? – AnthonyWJones

+0

लिंक किया गया संदेश इस विशेष कोन का मूल स्रोत है। यह बंद/वस्तु द्वंद्व पर एक चर्चा के जवाब में उभरा, ताकि धारणा इस विशेष कहानियों से अधिक समय तक हो। पूर्ण विवरण के लिए लिंक का पालन करें। – bendin

+0

'क्यूसी ना'/'एंटोन' क्या कॉलबैक है? मैंने चारों ओर देखा, उन शर्तों की खोज केवल कोन के संदर्भों को बदल देती है। –

3

क्लोजर सिंटैक्टिक चीनी से कहीं अधिक हैं हालांकि मुझे लगता है कि यह "वाक्य रचनात्मक चीनी" की परिभाषा पर कुछ हद तक निर्भर करता है।

मेरे लिए, जावा 1.5 प्रत्येक के लिए सिंटैक्टिक चीनी थी, लेकिन, उदाहरण के लिए, रूबी ब्लॉक उससे कहीं अधिक दूर जाते हैं। क्लोजर अमूर्तता का एक सुविधाजनक स्तर प्रदान करते हैं, जो इरादे की निहित घोषणा के लिए उपयोगी है - डीएसएल-आईएसएच सिंटैक्स की ओर एक बड़ा कदम।

4

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

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

+0

इससे भी बदतर, ऐसी भाषा में बंद होने से प्रदान की गई कार्यक्षमता को कार्यान्वित करना जो सीधे उनका समर्थन नहीं करता है, इसका उपयोग कहीं भी आपके इरादों को प्रभावी ढंग से खराब कर देगा। वे * चीनी हैं; लेकिन जब आप रॉक कैंडी बना रहे हैं तो आपको चीनी के महत्व को कम नहीं करना चाहिए ... – Shog9

+0

@ शोग 9: मैं पूरी तरह से आपकी पहली वाक्य से सहमत हूं। मुझे नहीं पता कि मैं दूसरे से सहमत हूं या नहीं, क्योंकि मुझे समझना मुश्किल लगता है। – AnthonyWJones

+3

क्षमा करें, मैं 300chars तक सीमित होने पर बहुत अधिक कटौती समाप्त करता हूं। रॉक कैंडी बस क्रिस्टलाइज्ड चीनी है; अगर आपको चीनी पसंद नहीं है, तो इसका कोई मतलब नहीं है। कई उच्च स्तरीय प्रोग्रामिंग संरचनाएं - बंद, वस्तुओं - बस अन्य प्रोग्रामर - चीनी के साथ संवाद करने के लिए उपकरण हैं। हम रॉक कैंडी लिखते हैं। – Shog9

3

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

+0

प्रतिनिधियों और सी # सी के lambdas इसे काफी अच्छी तरह से कवर नहीं करते हैं? – krosenvold

+0

प्रतिनिधि एक दिलचस्प विशेषता प्रतीत होता है। मैं सूची से सी # ड्रॉप। – Cheery

+0

@ चेरी: आप सूची से सी # क्यों छोड़ते हैं? – AnthonyWJones

2

बंद ओओ भाषाओं में वस्तुओं की तरह हैं। लेकिन कार्यात्मक भाषाओं में subtyping और विरासत की कमी है।

+1

आप उन सभी को जानते हैं, है ना? – Ingo