2010-02-17 14 views
16

पृष्ठभूमि: 1 9वीं शताब्दी में जर्मन पुरातत्वविद् हेनरिक श्लीमैन निश्चित रूप से ट्रॉय शहर (होमर के इलियड के ट्रॉय के लिए एक वास्तविक पुरातात्विक स्थल) को खोजने और खोदने के लिए अपनी सफल खोज के लिए प्रसिद्ध थे।प्रोग्रामिंग भाषा सीखने की Schliemann की विधि

हालांकि, वह बस के रूप में एक astonishing learner of languages जा रहा है के लिए प्रसिद्ध है - दो साल के अंतरिक्ष के भीतर, वह खुद को धाराप्रवाह डच, अंग्रेजी, फ्रेंच, स्पेनिश, इतालवी और पुर्तगाली सिखाया, और बाद में दोनों सहित सात अधिक जानने के लिए पर चला गया, आधुनिक और प्राचीन यूनानी।

प्रसिद्ध तरीके से उपयोग किए जाने वाले तरीकों में से एक ज्ञात पाठ की तुलना में था, उदाहरण के लिए किसी भाषा में एक पुस्तक लेना एक धाराप्रवाह है, उस भाषा में एक पुस्तक का अच्छा अनुवाद लें जिसे आप सीखना चाहते हैं, और समानांतर में उन पर जाएं। (विभिन्न स्रोतों ने Schliemann द्वारा बाइबिल होने के लिए उपयोग की गई पुस्तक का हवाला दिया, या उपरोक्त लिंक के रूप में, एक उपन्यास)।

अब, वास्तविक प्रश्न के लिए।

क्या किसी ने नई प्रोग्रामिंग भाषा सीखने के लिए Schliemann की विधि के बराबर (या सुना) किया है? ईजी। संदर्भों और ट्यूटोरियल्स पर झुकाव के आधार पर, कार्यक्रमों का कुछ व्यापक सेट लें जो ज्ञात/समान एल्गोरिदम लागू करने वाली दोनों भाषाओं में उच्च गुणवत्ता वाले कोड के लिए जाना जाता है और उन्हें तुलना करके सीखते हैं?

मैं इस तरह के दृष्टिकोण, या प्रकाशित कुछ के संदर्भ, या कोडबेस के अस्तित्व को लागू करने के व्यक्तिगत अनुभवों के बारे में उत्सुक हूं जिसका उपयोग इस तरह के दृष्टिकोण के लिए किया जा सकता है?

मुझे विचार के बारे में क्या सोच रहा था Project Euler और सी ++, पर्ल और लिस्प में एसओ पर मैंने देखा कुछ कोड स्निपेट्स।

+4

... हैलो वर्ल्ड – crowne

+0

दिलचस्प सवाल ... मैं इस रणनीति को बहुत उपयोगी बना सकता हूं, प्रवाह की कुछ परिभाषा और प्रतिमानों का एक सेट (जैसे, शायद सभी प्रक्रियात्मक, ऑब्जेक्ट उन्मुख भाषाओं)। प्रोजेक्ट यूलर समाधान उत्कृष्ट स्रोत टेक्स्ट के लिए भी बनाएंगे! –

+0

@robert प्रोजेक्ट यूलर समाधान केवल पीई प्रकार की समस्याओं पर लागू होते हैं - वास्तविक दुनिया काफी अलग है। –

उत्तर

8

Rosetta Code उपयोगी हो सकता है। साइट को उद्धृत करने के लिए: -

रोजेटा कोड एक प्रोग्रामिंग क्रिस्टोमैथी साइट है। विचार यह है कि एक ही कार्य को यथासंभव विभिन्न भाषाओं में समाधान प्रस्तुत करना है, यह दिखाने के लिए कि भाषाएं समान और अलग कैसे हैं, और एक व्यक्ति को सीखने में किसी समस्या के आधार पर ग्राउंडिंग के साथ सहायता करने के लिए। Rosetta कोड में वर्तमान में 372 कार्य हैं, और 1 9 7 भाषाओं को कवर करते हैं, हालांकि हम हर भाषा में हर कार्य के समाधान नहीं करते हैं (और नहीं कर सकते)।

3

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

संपादित करें: सी ++ कोड में ठेठ जावा:

string * s = new string; 
बजाय सी ++ रास्ते से

:

string s; 
+0

नील - मैं अवधारणा से जानता हूं कि आप किस बारे में बात कर रहे हैं (पर्ल में लिखे गए सी ++ से बैठकर), लेकिन मुझे उत्सुकता होगी कि एक सामान्य "सी ++ में लिखा गया जावा" ऐसा लगता है कि आपके पास उदाहरण है – DVK

+0

जावा सी ++ में लिखा गया है - कैटमोदर http://catmother.sourceforge.net/ –

+0

अच्छा उदाहरण ... +1 – DVK

2

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

+0

यह सही है - लेकिन आप एक साधारण उदाहरण के लिए, एक लूप-वाई और एक फैक्टोरियल के पुनरावर्ती कार्यान्वयन के लिए देख सकते हैं, और उसके बाद एक नक्शा/पर्ल में इसके दृष्टिकोण को कम कर सकते हैं - जो आपको कारक के बारे में कुछ भी नहीं सिखाएगा लेकिन इसके बारे में लोड पर्ल में चीजें कैसे की जानी चाहिए (उदाहरण के लिए नक्शा/दृष्टिकोण कम करें) – DVK

+0

असल में, मैं थोड़ा वेब (0 महत्वपूर्ण रूप से) छोटे वेब सर्वर – DVK

+2

की तुलना में छोटे तत्वों की तुलना में सोच रहा था, जो Schliemann कर रहा था रिवर्स इंजीनियरिंग वाक्यविन्यास और व्याकरण था। एक नई प्रोग्रामिंग भाषा सीखते समय और अधिक महत्वपूर्ण बात यह है कि अधिक संग्रहित मुहावरे हैं। ताओ ते चिंग [http://en.wikipedia.org/wiki/Tao_Te_Ching] के चीनी और अंग्रेजी संस्करणों के दौरान चीनी कविता लिखने के तरीके सीखने की कल्पना कीजिए। यही कारण है कि कुल कोड के बड़े कॉर्पस की तुलना करना महत्वपूर्ण है। आप एक भाषा के व्यक्तित्व या स्वाद को तब तक नहीं पकड़ सकते जब तक कि आप पर्ल को छोड़कर कोड का एक बड़ा टुकड़ा न देख सकें, पर्ल चूसने के छोटे टुकड़े भी! :-) –

9

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

  • उदाहरण के लिए, विधि प्रेषण और विरासत स्वाभाविक रूप से नई चीजें हैं। तो शायद अगर आप सिमुला-67 जानते हैं तो आप जावा सीख सकते हैं, और शायद आप स्मॉलटाक या सी ++ सीखने के लिए भी फैल सकते हैं। लेकिन आप संभवतः टीसीएल या योजना या एमएल या डीजल नहीं सीख सकते हैं क्योंकि एकल विरासत और गतिशील प्रेषण सिर्फ वहां नहीं हैं।

  • इसी प्रकार, यदि आपने कभी सी या सी ++, या यहां तक ​​कि पास्कल/एडा/मॉडुला/क्लू भी देखा है, तो कुछ भी वास्तव में आपको प्रथम श्रेणी के कार्यों की शक्ति और अभिव्यक्ति के लिए तैयार नहीं कर सकता है।

  • एक और उदाहरण के रूप में, यदि आप एक भाषा (पर्ल) नियमित अभिव्यक्तियों के साथ स्ट्रिंग-प्रोसेसिंग समस्याओं के समाधान की तुलना कैसे कर सकते हैं, तो दूसरा (SNOBOL) पैटर्न मिलान कर रहा है, और एक तिहाई (आइकन) में स्ट्रिंग स्कैनिंग है? आपका गरीब सिर विस्फोट कर देगा!

यदि प्रश्न में भाषाएं बहुत समान हैं तो Schliemann की विधि का उपयोग हो सकता है। मान लें कि आप जावा जानते हैं और आप सी #, या इसके विपरीत सीखना चाहते हैं। या OCaml/F #/SML परिवार में भाषाओं के बीच बदलें। लेकिन ज्यादातर मामलों में मुझे संदेह है कि Schliemann की विधि आपको अच्छे से ज्यादा नुकसान पहुंचाएगी।

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