2010-12-14 10 views
10

मैं योजना द्वारा पूरी तरह से चिंतित हूं, और कुछ खिलौना प्रोग्रामिंग उदाहरणों के साथ शुरू किया है, और पॉल ग्राहम के On Lisp के माध्यम से पढ़ रहा हूं।ऑब्जेक्ट उन्मुख प्रोग्रामर के लिए योजना

एक चीज़ जो मैं नहीं ढूंढ पा रहा हूं वह एक पुस्तक या वेबसाइट है जो "ओओ लोगों" को योजना सिखाने के लिए बनाई गई है, यानी मेरे जैसे लोग जिन्होंने सी ++/जावा/पायथन में अपने कोडिंग का 99% किया है।

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

क्या आदर्श होगा एक किताब या वेबसाइट है कि एक Schemey तरह से दोनों एक OO भाषा में हल समस्याओं के मामले अध्ययन प्रदान करता है, और यह भी योजना में है। मुझे लगता है कि मैं वैज्ञानिक कंप्यूटिंग और/या कंप्यूटर ग्राफिक्स समस्याओं की सबसे अधिक सराहना करता हूं, लेकिन कुछ भी करेगा।

कोई भी शैक्षिक लीड की सराहना की जाएगी।

+3

मुझे नहीं लगता कि आपको ऐसी चीज मिल जाएगी। जब अधिकांश लोग एक नई भाषा सीखते हैं, तो वे इसे उस भाषा के परिप्रेक्ष्य से सीखने की कोशिश करते हैं, न कि किसी और के। इसके अलावा, ओओपी कार्यात्मक से कहीं अधिक जटिल है। चेक आउट * द लिटिल शेमर * या * एसआईसीपी * –

+2

मुझे संदेह है कि सीएलओएस पुरानी आदतों के लिए एक क्रैच के रूप में काम करेगा, मुझे लगता है कि यह ओ + शैली से सी ++/जावा/पायथन में बहुत अलग है, और बहुत ही रोचक है। मैं सभी विवरणों को समझ नहीं पा रहा हूं, लेकिन मैं पीटर सेबेल के _Practical Common Lisp_ की अनुशंसा करता हूं। यदि आप बिना किसी परेशानी के _On Lisp_ पढ़ रहे हैं, तो आपको [पीसीएल में सीएलओएस शुरू करने वाले अध्याय] में गोता लगाने में सक्षम होना चाहिए (http://gigamonkeys.com/book/object-reorientation-generic-functions.html)। इसके अलावा, मैं जावा और कॉमन लिस्प की तुलना में अपनी [Google टेक टॉक] (http://www.youtube.com/watch?v=VeAdryYZ7ak) की अनुशंसा करता हूं। – spacemanaki

+1

@ राफ आपको मेरी पोस्ट पढ़ने से मिलेगा कि सीखने की योजना अपने स्वयं के परिप्रेक्ष्य से, मेरे ओओ विचार पैटर्न को पोर्ट किए बिना, वही है जो मैं करने की कोशिश कर रहा हूं। मैं ओओ और योजना समाधान के उदाहरणों को एक ही समस्या के उदाहरणों को देखकर इस प्रक्रिया को बूटस्ट्रैप करने की उम्मीद कर रहा हूं, खासकर जब वे बहुत अलग दिखते हैं। – SuperElectric

उत्तर

11

मुझे शक है CLOS पुरानी आदतों के लिए एक बैसाखी के रूप में काम करेगा, मैं इसे सी ++/जावा/पायथन में OO शैली से बहुत अलग है, और बहुत ही दिलचस्प हो पाया। मुझे सभी विवरण समझ में नहीं आ रहा है, लेकिन मैं पीटर सेबेल के प्रैक्टिकल कॉमन लिस्प की सिफारिश करता हूं। यदि आप पर लिस्प पर बिना किसी परेशानी के पढ़ रहे हैं, तो आप पीसीएल में the chapters introducing CLOS में गोता लगाने में सक्षम होना चाहिए। इसके अलावा, मैं जावा और कॉमन लिस्प की तुलना में Google Tech Talk की अनुशंसा करता हूं।

क्लासिक पाठ Structure and Interpretation of Computer Programs बंद (का उपयोग कर मॉड्यूलर प्रणाली के निर्माण के 3 अध्याय में काफी कुछ उदाहरण शामिल किया गया और राज्य और अस्थिरता शुरू करने की समस्याओं को संबोधित:

यहाँ यह एक अधिक पूर्ण जवाब बनाने के लिए कुछ और सिफारिशों है)। अध्याय 2 में कुछ सामान्य और डेटा/प्रकार-निर्देशित प्रोग्रामिंग शामिल हैं जो CLOS के अध्ययन को प्रेरित करने के लिए सहायक हो सकती हैं। इस पुस्तक को वास्तव में कोई परिचय की आवश्यकता नहीं है, हालांकि यह एक बड़ा काम है, और मैं बस वसंत के बाद धीरे-धीरे इसे पढ़ रहा हूं। यदि आप योजना में रूचि रखते हैं तो अत्यधिक अनुशंसा की जाती है।

SICP एक महान पुस्तक है, यह अपने दोषों के बिना नहीं है: इन पर वास्तव में एक दिलचस्प नज़र निबंध "The Structure and Interpretation of the Computer Science Curriculum" जो SICP के कुछ ही आलोचना पर बताते है, और के लेखकों ने लिखा है कार्यक्रम (डिजाइन कैसे मैंने एचटीडीपी नहीं पढ़ा है लेकिन मैंने सुना है कि यह बहुत अच्छा है)। हालांकि यह निबंध आपको विशेष रूप से सिखाएगा जो आप खोज रहे हैं - कार्यात्मक और ओओ प्रोग्रामिंग की तुलना करना - यह वास्तव में वैसे भी दिलचस्प है। उनका ताजा स्नातक पाठ्यक्रम स्कीम (मुझे लगता है, पीएलटी/रैकेट) का उपयोग कर कार्यात्मक प्रोग्रामिंग के पहले सेमेस्टर परिचय के साथ शुरू होता है और उसके बाद सीओ ++ या जावा के साथ ओओ प्रोग्रामिंग के सेमेस्टर के बाद होता है ... कम से कम वह निबंध में वह पाठ्यक्रम है जिसका वर्णन वे निबंध में करते हैं।

पीटर Norvig से ये स्लाइड OO प्रोग्रामिंग में आम डिजाइन पैटर्न में से कुछ का पता और कारण है कि वे लापता या योजना और लिस्प की तरह गतिशील, कार्यात्मक भाषाओं में अनावश्यक कर रहे हैं दिखाने: http://norvig.com/design-patterns/

मैं सावधानी से द्वारा पुस्तक की सिफारिश लिटिल स्कीमर किताबों के समान लेखकों: ए लिटिल जावा, ए कुछ पैटर्न। मैं निश्चित रूप से यह नहीं कह सकता कि यह वास्तव में एक अच्छी किताब है या नहीं, यह अविश्वसनीय रूप से अजीब था और कुछ वास्तव में खराब टाइपसेटिंग फैसले हैं (इटालिक, सेरिफ़, चर-चौड़ाई, सुपरस्क्रिप्ट प्रोग्रामिंग पर एक पाठ में नहीं है) , लेकिन यह देखने के लिए दिलचस्प हो सकता है। आप शायद इसे सस्ता पा सकते हैं, वैसे भी। इस सिफारिश को गंभीरता से न लें। मुझे लगता है कि योजना ग्रंथों से चिपकना बेहतर होगा।

पेज। मुझे एक टिप्पणी से असहमत होना है कि यह बताते हुए कि कार्यात्मक प्रोग्रामिंग ओओ प्रोग्रामिंग में जटिल नहीं है, मुझे लगता है कि यह पूरी तरह से गलत है। इसकी सभी चौड़ाई में कार्यात्मक प्रोग्रामिंग वास्तव में दिमागी दबदबा है। जब आप मानचित्र/फ़िल्टर/कम करने और प्रथम श्रेणी के कार्यों से परे जाते हैं, और आलसी मूल्यांकन, साइड इफेक्ट्स और उत्परिवर्तन से बचने, और मजबूत, स्थैतिक-टाइप की गई भाषाओं जैसे कार्यात्मक क्षेत्र में अन्य चीजों पर नज़र डालें, यह बहुत दिलचस्प हो जाता है, और निश्चित रूप से पारंपरिक ओओ प्रोग्रामिंग के रूप में जटिल है। मैंने केवल सतह को ही खरोंच कर लिया है लेकिन नए विचारों का एक बड़ा सौदा खोजा है। प्रोग्रामिंग जटिल व्यवसाय है, चाहे ओओ या कार्यात्मक हो।

4

आपको बधाई हो, मेरे दोस्त! प्यार सीएस, प्यार कार्यात्मक प्रोग्रामिंग।

आप अजगर डेवलपर हैं, तो यह 3-4 दिन लगते हैं योजना में सोचने के लिए

यहाँ

सबसे अच्छा सरल ट्यूटोरियल मैंने कभी http://www.shido.info/lisp/idx_scm_e.html

मैं इस पाठ्यक्रम http://cs.gettysburg.edu/~tneller/cs341/scheme-intro/index.html मिल गया है और यह उपयोगी हो सकता है मिले हैं है आपके लिए

2

यदि आप योजना के साथ शुरू कर रहे हैं, तो How to Design Programs पर एक नज़र डालें। यह पुस्तक समस्या हल करने के लिए "स्केमी" दृष्टिकोण प्रस्तुत करती है। मुझे नहीं लगता कि ऐसी पुस्तक है जो ओओ और समान प्रोग्रामिंग समस्याओं के कार्यात्मक समाधान की तुलना करती है। लेकिन nice presentation है जो दिखाता है कि योजना जैसी गतिशील भाषाएं उन समस्याओं के लिए सरल समाधान प्रदान कर सकती हैं जो स्थिर रूप से टाइप की गई ओओपी भाषाओं में जटिल डिज़ाइन पैटर्न की मांग करती हैं।

3

एक शुरुआती संसाधन जो बहुत उपयोगी है और आकस्मिक पाठक की ओर बहुत अधिक तैयार है "The Adventures of a Pythonista in Schemeland" है। यह योजना के साथ पहले कदम उठाते हुए एक पायथन प्रोग्रामर के दृष्टिकोण से (स्पष्ट रूप से) लिखा गया है। इसके बारे में एक विशेष रूप से अच्छी बात यह है कि यह प्रत्येक योजना कार्यान्वयन के बीच वर्तमान कार्यान्वयन और संगतता समस्याओं, के एक सिंहावलोकन भी शामिल है जो, दुर्भाग्य से, जब तुम सिर्फ बाहर शुरू कर रहे हैं कुछ सिर दर्द हो सकता है।

के साथ संबंध है सिस्टम आपत्ति उठाने

, इन twodocuments (here से जुड़े) है कि मैं राज्य पर कब्जा करने में उनके उपयोग को समझने में उपयोगी पाया बंद का उपयोग कर बहुत ही सरल खिलौना कार्यान्वयन के लिए अच्छा उदाहरण दे।

+0

पायथनिस्टा लिंक बहुत अच्छा है, धन्यवाद! – SuperElectric

संबंधित मुद्दे