2008-10-27 9 views
32

मैंने वास्तविक के लिए कार्यात्मक प्रोग्रामिंग सीखने के लिए बग पकड़ा है। तो मेरी अगली स्वयं-अध्ययन परियोजना Structure and Interpretation of Computer Programs के माध्यम से काम करना है। दुर्भाग्य से, मैंने कभी भी लिस्पी नहीं सीखा है, क्योंकि मैं कॉलेज में सीएस प्रमुख नहीं था।एसआईसीपी के आत्म-अध्ययन के लिए आप किस भाषा का उपयोग करेंगे?

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

यदि आपको एसआईसीपी का आत्म-अध्ययन करना पड़ा, तो आप कौन सी भाषा चुनेंगे और क्यों? आदर्श रूप में, मैं एक ऐसी भाषा का उपयोग करना चाहता हूं जो JVM पर चल सके। मैं निश्चित रूप से ऐसी भाषा के साथ काम कर सकता हूं जहां आरईपीएल और एमएक्स के साथ काम करता है।

अतिरिक्त: क्या आप में से कोई भी योजना का उपयोग किए बिना एसआईसीपी पढ़ने की कोशिश कर रहा है? यदि हां, तो आपका अनुभव कैसा था?

उत्तर

40

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

3

पुस्तक में कोड योजना है इसलिए आपको इसे किसी भी तरह से पढ़ना होगा - आप इसे भी लिख सकते हैं। आप इसे भी पसंद कर सकते हैं!

22

DrScheme का उपयोग करें। जैसा कि अन्य ने कहा है, योजना एक साधारण भाषा है, और डॉ। श्शेम इसका उपयोग करने के लिए एक महान वातावरण है जिसमें बहुत से समर्थन और मध्यम-से-अच्छे दस्तावेज हैं।

+0

इसे कल रात डाउनलोड किया गया, और इसका यूआई उपयोग करने के लिए बहुत आसान लग रहा है। – Alan

+4

एलन, पीएलटीटी से उपलब्ध एसआईसीपी समर्थन का उपयोग करना न भूलें (उपयोगकर्ता ने पीएलटी योजना/डॉशेचेम के लिए योगदान दिया है)। http://planet.plt-scheme.org/package-source/neil/sicp.plt/1/13/planet-docs/sicp/index.html – soegaard

+3

डॉशेचेम अब ड्रैक्रेट http: // en के रूप में जाना जाता है। wikipedia.org/wiki/DrRacket –

2

मैंने वास्तविक के लिए कार्यात्मक प्रोग्रामिंग सीखने के लिए बग पकड़ा है।

मैं क्या सुना है से, SICP सिर्फ कार्यात्मक प्रोग्रामिंग की तुलना में बहुत के बारे में अधिक है।

0

लेकिन मेरी भाषा को फिर से शुरू करने में मदद करने वाली भाषा सीखना अभी भी एक लाभ है।

आप के रूप में वहाँ एक वहाँ बिलिंग काम की बहुत इसके लिए है, VB6 या कोबोल का उपयोग कर, तो कोशिश करनी चाहिए।

+0

हाँ कोबोल प्रोग्रामर की अभी भी आवश्यकता होगी, लेकिन ... यह कार्यात्मक प्रोग्रामिंग के बारे में एक प्रश्न है जो COBOL के बारे में नहीं है। – Alan

+1

@Alan: मुझे लगता है कि यह जवाब कटाक्ष के रूप में था :) – Ovid

2

चेतावनी: मैं पूरी किताब

के बाद से उदाहरण बंद होने और निरंतरता पर भरोसा करते हैं, तो आप बेहतर उन सुविधाओं के दोनों के साथ एक भाषा का प्रयोग द्वारा कार्य किया जाएगा नहीं पढ़ा है, अन्यथा आप उन्हें लागू करने की आवश्यकता होगी स्वयं।

उदाहरण के लिए, योजना में एक मेटासिर्क्यूलर मूल्यांकनकर्ता लिखना तथ्य यह है कि योजना बंद और निरंतरता प्रदान करती है।

+1

आईआईआरसी, निरंतरता वास्तव में पुस्तक में एक प्रमुख उपस्थिति नहीं बनाते हैं। –

1

मैं उन लोगों के बारे में सुनता हूं जिन्होंने आम लिस्प और क्लोजर का उपयोग किया है।

आपको जो भी भाषा आपको सबसे ज्यादा प्रेरित करती है, उसका उपयोग करना चाहिए, लेकिन एसआईसीपी के माध्यम से काम कर रहे 99% लोग योजना का उपयोग करने जा रहे हैं।

2

मैं lua इस्तेमाल किया जब मैं sicp

पर एक नज़र

बहुत अच्छी तरह से

+0

मैं भी ऐसा करने की कोशिश कर रहा हूं। मुझे पता है कि लुआ में पूर्ण निरंतरता और मैक्रो की कमी है। क्या वे गायब टुकड़े एसआईसीपी के लिए महत्वपूर्ण हैं (विशेष रूप से पिछले कई अध्यायों के लिए)? या क्या कोई अन्य गायब टुकड़ा है जिसके बारे में मुझे पता नहीं है? – Middleware

+0

नहीं, वास्तव में नहीं। कुछ चीजें जिन्हें आप थोड़ा अलग तरीके से संपर्क करना चाहते हैं क्योंकि वाक्यविन्यास अलग है, लेकिन समाधान अक्सर बहुत समान दिखते हैं। –

3

बाहर काम करता है पुस्तक आप योजना का उपयोग करना होगा से बाहर वास्तविक मूल्य प्राप्त करने के लिए किया था। योजना में से कौन सा कार्यान्वयन अपने वर्तमान वातावरण पर निर्भर करता है:

विंडोज - डॉ योजना (PLT योजना) - http://download.plt-scheme.org/ लिनक्स - यह एक दूरदराज के खाता है, तो - आप MZScheme (PLTScheme) (http://download.plt-scheme.org/) विचार कर सकते हैं अन्यथा आप करना चाहते हैं यदि यह लिनक्स का स्थानीय उदाहरण है तो डॉ योजना का उपयोग करें।

+0

मैं उस सूची में एमआईटी योजना भी जोड़ूंगा। वे एक अच्छा (अगर बड़ा) दुभाषिया प्रतीत होता है। (बोनस (अंक) (एमआईटी (पुस्तक) लिखा)) – new123456

3

मुझे लगता है कि क्लोजर फिट बैठता है जो आप पूरी तरह से करना चाहते हैं। यह योजना की तुलना में अधिक कार्यात्मक है क्योंकि डेटा संरचनाएं अपरिवर्तनीय हैं और यह बहुत उपयोगी हो सकती है क्योंकि यह जेवीएम पर चलती है। लेकिन, इस बात से अवगत रहें कि पुस्तक में कोड को समझने में सक्षम होने के लिए आप सीखने की योजना समाप्त कर देंगे।

4

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

+0

क्लोजर में पूंछ-कॉल अनुकूलन समस्या को हल करने के तरीके से पुन: स्थापित करें: http://clojure.org/special_forms#toc10 (और उन्हें सूर्य को लागू करने के लिए कहने के लिए जेवीएम, जहां वे होना चाहिए) – Pablo

2

योजना के अलावा कुछ भी उपयोग करें।

योजना के अलावा कुछ और उपयोग करते समय, आपको और सोचने के लिए प्रोत्साहित किया जाएगा, और उदाहरणों को फिर से टाइप करने के लिए प्रलोभन से बचें। यह एक अच्छी चीज है।

बेशक, यह लिस्प -1 भावना में पर्याप्त होना चाहिए, इसलिए क्लोजर और आर्क जाने के लिए अच्छे हैं।

+2

मैं असहमत हूं। शायद यह अन्य पाठ्यपुस्तकों के साथ सच हो सकता है, लेकिन मैंने व्यक्तिगत रूप से पहले एक उदाहरण की प्रतिलिपि बनाने के बजाय एसआईसीपी के अभ्यासों को और अधिक पाया है। –

+0

मैं किसी के साथ सहमत नहीं हूं। – Tim

+0

मुझे लगता है कि यह दोनों तरीकों से चलता है, स्रोत के करीब रहने के लिए योजना का उपयोग करने के बारे में कुछ कहना है, लेकिन कुछ अलग करने के लिए स्विच करना, लेकिन समानताएं (एक और लिस्प बोली) आपको विभिन्न तरीकों से समस्याओं पर विचार करती है। – Runevault

8

सीधा जवाब नहीं है लेकिन मुझे उम्मीद है कि यह जानकारी एसआईसीपी के माध्यम से काम करने वाले किसी भी व्यक्ति के लिए उपयोगी होगी। वीडियो यहाँ पर एक नजर है सुनिश्चित करें:

http://swiss.csail.mit.edu/classes/6.001/abelson-sussman-lectures/

एक घंटे प्रत्येक के 20 एपिसोड नहीं है। वे 1 9 86 में हेवलेट पैकार्ड कर्मचारियों के लिए एबेलसन और सुस्मान द्वारा प्रस्तुत किए गए थे। मैंने उन्हें अपने आईपॉड पर रखा और आने के दौरान उन्हें देखा। चित्त आकर्षण करनेवाला।

इसके अलावा, पुस्तक का पूरा पाठ के रूप में कोई है जो लोगों को काम देता है, मैं आपको बता देंगे कि एक फिर से शुरू पर योजना होने एक अच्छी बात है http://mitpress.mit.edu/sicp/

+0

"... हेवलेट पैकार्ड कर्मचारियों के लिए।" यह कक्षा में सभी पुराने लोगों को बताता है। – Bogatyr

4

पर ऑनलाइन उपलब्ध है। आपके रेज़्यूमे पर स्कीम, एसएमएल, ओकम्ल या हास्केल होने से पता चलता है कि आप एक बहुत अच्छी तरह से गोल प्रोग्रामर हैं, और काफी विचारक हैं।

उसने कहा, यदि आप कार्यात्मक प्रोग्रामिंग की कोशिश कर रहे हैं, तो इसके बजाय हास्केल क्यों नहीं? योजना multiparadigm है, यह ओओ, Funcitonal, स्ट्रीम आधारित, या सूर्य के नीचे कुछ भी हो सकता है। यह नई प्रोग्रामिंग शैलियों और प्रतिमानों को आजमाने के लिए बहुत ही बढ़िया बनाता है, लेकिन यदि आपका लक्ष्य सख्ती से कार्यात्मक है, तो यह एक समस्या हो सकती है। (आप गैर कार्यात्मक कोड लिखना समाप्त कर देंगे और इसे महसूस नहीं करेंगे।)

1

मैंने इस साल की शुरुआत में (अधिकांश) के माध्यम से काम किया, और सामान्य लिस्प का उपयोग किया, क्योंकि सिर्फ मेरे पास योजना उपलब्ध नहीं थी (पूछो मत)।

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

2

मैंने अपने आत्म-अध्ययन के लिए योजना का उपयोग किया है। एसआईसीपी से सीखने का सबसे अच्छा तरीका सभी अभ्यासों को पूरी तरह से करना है।

मैंने योजना के लिए Gnu guile का उपयोग किया है।

0

मुझे लगता है कि योजना प्राकृतिक विकल्प होगा

हालांकि (क्योंकि यह SICP के "मूल" भाषा है), के बाद से SICP की सही कीमत अवधारणाओं के बजाय विशेष भाषा के यांत्रिकी से आता है, मैं लगता है कि यह किसी भी लिस्प जैसी भाषा में प्रयास करने के लिए एक मूल्यवान सीखने का अभ्यास होगा। मैंने व्यक्तिगत रूप से क्लोजर में कुछ अभ्यासों की कोशिश की है और वे सभी बहुत अच्छी तरह से अनुवाद करते हैं।

रुचि रखने वालों के लिए Clojure translation of SICP बनाने के लिए एक चल रही प्रोजेक्ट है।

1

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

लर्निंग स्कीम वास्तव में सीधे आगे है (विशेष रूप से सीएल और क्लोजर दोनों की तुलना में) और, वास्तव में, प्रारंभिक पाठ्यक्रम के साथ-साथ पुस्तक, मान लीजिए कि छात्र इसे पहले से ही नहीं जानता है। सीएल और क्लोजर हाथ में काम के सापेक्ष काफी सामान लेते हैं।

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

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